Bu açık bir sorundur.
Mihai Pătrașcu'nun STOC 2010 " Dinamik Sorunlar için Polinom Alt Sınırlarına Doğru " makalesinin bir sonucunun uyarlanmasıyla muhtemelen 3SUM sertliğinin zayıf bir şekli kanıtlanabilir . İlk olarak, yakından ilişkili problemlerin bir dizisini tanımlayayım. Her problemin girdisi , farklı tamsayılardan oluşan sıralı bir dizisidir .A[1..n]
3sum: orada farklı bir indeksi olan , öyle ki bir [ ı ] + Bir [ j ] = A [ k ] ?i,j,kA[i]+A[j]=A[k]
Convolution3SUM: orada bir indeksi olan böyle bir [ ı ] + Bir [ j ] = A [ i + j ] ?i<jA[i]+A[j]=A[i+j]
Ortalama: orada farklı bir indeksi olan bu tür bir [ ı ] + Bir [ j ] = 2 bir [ k ] ?i,j,kA[i]+A[j]=2A[k]
ConvolutionAverage: orada bir indeksi olan bu şekilde bir [ ı ] + Bir [ J ] = 2 bir [ ( i + j ) / 2 ] ? (Sorduğunuz sorun bu.)i<jA[i]+A[j]=2A[(i+j)/2]
Doktora tezimde, bu sorunların dördünün de , yalnızca "Is α A [ i ] + β A [ j ] + γ şeklinde sorgulara izin veren bir karar ağacı hesaplama modelinde zaman gerektirdiğini kanıtladım. bir [ k ] + δ pozitif, negatif veya sıfır?", burada α , β , γ , δ (giriş bağımlı olmayan) reel sayılardır. Özellikle, bu modeldeki herhangi bir 3SUM algoritması " A [ iΩ(n2)αA[i]+βA[j]+γA[k]+δα,β,γ,δ daha büyük, daha küçük ya da ona eşit , A [ k ] ", en az? Q ( n 2 ) katı Bu düşük hesaplama daha genel bir modelde subquadratic algoritmaları dışlamaz bağlanmış -. Gerçekten de, bununçeşitli tamsayı RAM modellerindebazı log faktörlerini tıraşetmek mümkündür,ancak kimse ne tür daha genel bir modelin daha önemli bir şekilde yardımcı olacağını bilmez.A[i]+A[j]A[k]Ω(n2)
Dikkatli bir karma azalma kullanarak, Pǎtraşcu 3sum gerektiriyorsa kanıtladı beklenen zaman, her işlev için f , daha sonra Convolution3SUM gerektirir Q'dan ( n 2 / f 2 ( n ⋅ f ( n ) ) ) beklenen saati. Bu nedenle, Convolution3SUM'un "zayıf 3SUM-sert" olduğunu söylemek mantıklıdır. Örneğin, Convolution3SUM O ( n 1.8 ) zamanda çözülebilirse, 3SUM O (Ω(n2/f(n))fΩ(n2/f2(n⋅f(n)))O(n1.8) zaman.O(n1.9)
Ayrıntıları temel almadım, ancak paralel bir argümanın Ortalama beklenen süre gerektiriyorsa, herhangi bir f fonksiyonu için , o zaman ConvolutionAverage Ω ( n 2 / f gerektirdiğini ima ettiğini iddia ediyorum. 2 ( n ⋅ f ( n ) ) ) beklenen süre. Başka bir deyişle, ConvolutionAverage "zayıf Ortalama-zor".Ω(n2/f(n))fΩ(n2/f2(n⋅f(n)))
Ne yazık ki, Ortalama (zayıf) 3SUM-sert olup olmadığı bilinmemektedir! Ben Ortalama aslında olduğundan şüpheleniyorsanız değil sadece çünkü eğer, 3sum sert Ortalama gitmekte düşük değerlerΩ(n2) olduğu ölçüde daha kanıtlamak için zor 3sum gitmekte düşük değerlerΩ(n2) .
Ayrıca, bitişik dizi öğelerinin bazı sabit tamsayı daha az farklı olduğu özel durumu da sorarsınız . 3SUM ve Ortalama için bu varyant, Fast Fourier dönüşümleri kullanılarak O ( n log n ) zamanında aşağıdaki gibi çözülebilir . (Bu gözlem Raimund Seidel'e bağlıdır.) KO(nlogn)
Bir bit vektör inşa , burada B : [ i ] = 1 ise ve tamsayı, yalnızca bir [ 1 ] + i , giriş dizi görünür A . Hesaplamak kıvrım arasında B kendisi ile O ( K n log K , n ) = O ( n log n ) FFTs kullanarak zamanı. Elde edilen dizi içinde sıfır olmayan bir değeri vardır jB[0..Kn]B[i]=1A[1]+iABO(KnlogKn)=O(nlogn)jinci pozisyon, ancak ve ancak, eğer eleman bir çift üzere toplam 2 A [ 1 ] + j . Böylece, A [ i ] + A [ j ] toplamlarının sıralanmış bir listesini O ( n ) zamanındaki evrişimden çıkarabiliriz . Buradan, Ortalama veya 3SUM değerini O ( n ) zamanda çözmek kolaydır .A2A[1]+jA[i]+A[j]O(n)O(n)
Ama Convolution3SUM veya ConvolutionAverage için benzer bir numara bilmiyorum!