Esta resposta fornece um algoritmo determinístico .O(n polylogn)
Parece que o algoritmo de Sariel e David pode ser des randomizado através de uma abordagem semelhante a este artigo . [2] Durante o processo, descobri que há um problema mais geral que implica esse resultado.
O problema da reconstrução k
Não estão escondidos conjuntos , temos dois oráculos S i z e e S u m que tomar um conjunto de consulta Q .S1,…,Sn⊂{1,…,m}SizeSumQ
- retorna ( | S 1 ∩ Q | , | S 2 ∩ Q | , … , | S n ∩ Q | ) , o tamanho de cada interseção.Size(Q)(|S1∩Q|,|S2∩Q|,…,|Sn∩Q|)
- retorna ( ∑ s ∈ S 1 ∩ Q s , ∑ s ∈ S 2 ∩ Q s , … , ∑ s ∈ S n ∩ Q s ) , a soma dos elementos em cada interseção.Sum(Q)(∑s∈S1∩Qs,∑s∈S2∩Qs,…,∑s∈Sn∩Qs)
knS′1,…,S′nS′i⊂Sii|S′i|=min(k,|Si|)i
Seja o tempo de execução dos oráculos e assuma , então é possível encontrar os conjuntos no tempo determinístico . [1]f = Ω ( m + n ) O ( f k log n p o l y L o g ( m ) )ff=Ω(m+n)O(fklogn polylog(m))
Agora podemos reduzir o problema da testemunha de localização para o problema de reconstrução. Aqui que .S 1 , … , S 2 n ⊂ { 1 , … , 2 n } S i = { a | a + b = i , a ∈ A , b ∈ B }1S1,…,S2n⊂{1,…,2n}Si={a|a+b=i,a∈A,b∈B}
Defina os polinômios ,χQ(x)=∑i∈QxiIQ(x)=∑i∈Qixi
O coeficiente para em ée em é . Portanto, os oráculos levam tempo por chamada.xiχQχB(x)|Si∩Q|IQχB(x)∑s∈Si∩QsO(nlogn)
Isso nos fornece um algoritmo determinístico de tempo .O(n polylog(n))
[1] Yonatan Aumann, Moshe Lewenstein, Noa Lewenstein, Dekel Tsur:
Encontrando testemunhas descascando . Transações ACM nos algoritmos 7 (2): 24 (2011)
[2] Noga Alon, Moni Naor: Derandomization, testemunha da multiplicação da matriz booleana e construção de funções perfeitas de hash . Algoritmica 16 (4-5) (1996)