Czy wykrywanie „podwójnie” postępów arytmetycznych 3SUM jest trudne?


20

Jest to inspirowane pytaniem podczas wywiadu .

tablicę liczb całkowitych i musimy ustalić, czy istnieją wyraźne i \ lt j \ ltk takie, żea1,,ani<j<k

  • akaj=ajai
  • kj=ji

tj. sekwencje {ai,aj,ak} i {i,j,k} są w postępie arytmetycznym.

Jest do tego łatwy algorytm O(n2) , ale znalezienie algorytmu subkwadratowego wydaje się nieuchwytne.

Czy to znany problem? Czy możemy udowodnić twardość 3SUM tego? (a może podać algorytm subkwadratowy?)

Jeśli chcesz, możesz założyć 0<a1<a2<...<an i że ar+1arK dla niektórych znanych stałych K>2 . (W problemie z wywiadem K=9 ).

Odpowiedzi:


12

To jest otwarty problem.

Być może można udowodnić pewną słabą formę twardości 3SUM, dostosowując wynik z dokumentu STOC 2010 Mihai Pătrașcu „ W kierunku dolnych granic wielomianu dla problemów dynamicznych ”. Po pierwsze, pozwól mi zdefiniować sekwencję ściśle powiązanych problemów. Dane wejściowe do każdego problemu stanowią posortowana tablica różnych liczb całkowitych.A[1..n]

  • 3SUMA: Czy istnieją odrębne wskaźniki takie, że ?i,j,kA[i]+A[j]=A[k]

  • Convolution3SUM: Czy istnieją wskaźniki takie, że ?i<jA[i]+A[j]=A[i+j]

  • Średnia: Czy istnieją odrębne wskaźniki takie, że ?i,j,kA[i]+A[j]=2A[k]

  • ConvolutionA Average: Czy istnieją wskaźniki takie, że ? (O to pytasz.)i<jA[i]+A[j]=2A[(i+j)/2]

W mojej pracy doktorskiej udowodniłem, że wszystkie cztery z tych problemów wymagają czasu w modelu obliczeń drzewa decyzyjnego, który dopuszcza tylko zapytania o postaci „Is dodatnia, ujemna lub zero? ”, gdzie są liczbami rzeczywistymi (które nie zależą od danych wejściowych). W szczególności dowolny algorytm 3SUM w tym modelu musi zadać pytanie „Czy większy, mniejszy lub równy ?” co najmniej razy. Ta dolna granica nie wyklucza algorytmów subkwadratowych w bardziej ogólnym modelu obliczeń - w rzeczywistości możliwe jest zmniejszenie niektórych czynników logarytmicznychΩ(n2)αA[i]+βA[j]+γA[k]+δα,β,γ,δA[i]+A[j]A[k]Ω(n2)w różnych całkowitych modelach pamięci RAM. Ale nikt nie wie, jaki rodzaj bardziej ogólnego modelu pomógłby bardziej.

Używając starannej redukcji haszowania, Pǎtrașcu udowodnił, że jeśli 3SUM wymaga oczekiwanego czasu dla dowolnej funkcji , to Convolution3SUM wymaga oczekiwany czas. Dlatego rozsądne jest stwierdzenie, że Convolution3SUM jest „słabo twardy 3SUM”. Na przykład, jeśli Convolution3SUM można rozwiązać w czasie , wówczas 3SUM można rozwiązać w czasie .Ω(n2/f(n))fΩ(n2/f2(nf(n)))O(n1.8)O(n1.9)

Nie oparłem się na szczegółach, ale założę się, że równoległy argument sugeruje, że jeśli Średnia wymaga oczekiwanego czasu, dla dowolnej funkcji , to ConvolutionAternal wymaga oczekiwany czas. Innymi słowy, ConvolutionAverage jest „słabo średnio-trudny”.Ω(n2/f(n))fΩ(n2/f2(nf(n)))

Niestety nie wiadomo, czy średnia jest (nawet słabo) 3SUM-trudna! Podejrzewam, że średnia jest faktycznie nie 3SUM twardy, choćby dlatego, że dolna granica dla przeciętnych jest znacznie trudniejsze do udowodnienia niż dolna granica dla 3SUM .Ω(n2)Ω(n2)


Również zapytać o szczególnym przypadku, w którym sąsiednie elementy tablicy różnią się o mniej niż niektóre stałe całkowita . Dla 3SUM i średniej wariant ten można rozwiązać w czasie przy użyciu szybkich transformacji Fouriera w następujący sposób. (Ta obserwacja wynika z Raimunda Seidla.) KO(nlogn)

Budowanie bitowy wektor , gdzie , wtedy i tylko wtedy, gdy liczba całkowita pojawia się w macierzy wejścia . Obliczania splotu z ze sobą w czas za pomocą FFT. Wynikowa tablica ma niezerową wartość w tej pozycji wtedy i tylko wtedy, gdy jakaś para elementów w sumie do . Możemy więc wyodrębnić posortowaną listę sum ze splotu w czasie . Stąd łatwo jest rozwiązać średnią lub 3 SUMY w czasie .B[0..Kn]B[i]=1A[1]+iABO(KnlogKn)=O(nlogn)jA2A[1]+jA[i]+A[j]O(n)O(n)

Ale nie znam podobnej sztuczki dla Convolution3SUM lub ConvolutionA Average!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.