Ist das Erkennen von "doppelt" arithmetischen Verläufen 3SUM-hard?

20

Dies wird durch eine Interviewfrage inspiriert .

Wir erhalten ein Array von ganzen Zahlen und müssen bestimmen, ob es verschiedene i < j < k gibt, so dassa1,,ani<j<k

  • akaj=ajai
  • kj=ji

dh die Folgen und { i , j , k } sind beide in arithmetischer Folge.{ai,aj,ak}{i,j,k}

Hierfür gibt es einen einfachen -Algorithmus, die Suche nach einem subquadratischen Algorithmus ist jedoch schwierig.O(n2)

Ist das ein bekanntes Problem? Können wir 3SUM-Härte davon nachweisen? (oder vielleicht einen subquadratischen Algorithmus bereitstellen?)

Wenn Sie möchten, können Sie annehmen . . . < A n und a r + 1 - a rK für einige bekannte Konstante K > 2 . (Im Interviewproblem ist K = 9 ).0<a1<a2<...<anar+1arKK>2K=9

Knoothe
quelle

Antworten:

12

Dies ist ein offenes Problem.

Möglicherweise konnte eine schwache Form der 3SUM-Härte nachgewiesen werden, indem ein Ergebnis aus Mihai Pătrașcus STOC 2010-Arbeit " Towards Polynomial Lower Bounds for Dynamic Problems " angepasst wurde . Lassen Sie mich zunächst eine Abfolge eng verwandter Probleme definieren. Die Eingabe für jedes Problem ist ein sortiertes Array unterschiedlicher Ganzzahlen.A[1..n]

  • 3SUM: Gibt es verschiedene Indizes so dass A [ i ] + A [ j ] = A [ k ] ?i,j,kA[i]+A[j]=A[k]

  • Convolution3SUM: Gibt es Indizes so dass A [ i ] +i<j ?A[i]+A[j]=A[i+j]

  • Mittelwert: Gibt es verschiedene Indizes so dass A [ i ] +i,j,k ?A[i]+A[j]=2A[k]

  • ConvolutionAverage: Gibt es Indizes , so dass A [ i ] + A [ j ] = 2 A [ ( i + j ) / 2 ] ? (Dies ist das Problem, nach dem Sie fragen.)i<jA[i]+A[j]=2A[(i+j)/2]

In meiner Doktorarbeit habe ich bewiesen, dass alle vier dieser Probleme -Zeit in einem Entscheidungsbaum-Berechnungsmodell erfordern , das nur Abfragen der Form "Ist α A [ i ] + β A [ j ] + γ " zulässt A [ k ] + δ positiv, negativ oder Null? ", Wobei α , β , γ , δ reelle Zahlen sind (die nicht von der Eingabe abhängen). Insbesondere muss jeder 3SUM-Algorithmus in diesem Modell die Frage "Ist A [ iΩ(n2)αA[i]+βA[j]+γA[k]+δα,β,γ,δ größer, kleiner oder gleich A [ k ] ? "Mindestens Ω ( n 2 ) mal. Diese Untergrenze schließt subquadratische Algorithmen in einem allgemeineren Rechenmodell nicht aus - tatsächlich ist es das auch möglicheinige LogFaktoren abrasierenin verschiedenen integerRAMModellen. Aber niemand weißwas für allgemeinere Modell deutlich mehr helfen würde.A[i]+A[j]A[k]Ω(n2)

Ω(n2/f(n))fΩ(n2/f2(nf(n))) expected time. Thus, it's reasonable to say that Convolution3SUM is "weakly 3SUM-hard". For example, if Convolution3SUM can be solved in O(n1.8) time, then 3SUM can be solved in O(n1.9)

Ich habe die Details nicht durchgearbeitet, aber ich wette, dass ein paralleles Argument impliziert, dass, wenn der Durchschnitt erfordertΩ(n2/f(n))fΩ(n2/f2(nf(n))) expected time. In other words, ConvolutionAverage is "weakly Average-hard".

Unfortunately, it is not known whether Average is (even weakly) 3SUM-hard! I suspect that Average is actually not 3SUM-hard, if only because the Ω(n2) lower bound for Average is considerably harder to prove than the Ω(n2) lower bound for 3SUM.


You also ask about the special case where adjacent array elements differ by less than some fixed integer K. For 3SUM and Average, this variant can be solved in O(nlogn) time using Fast Fourier transforms as follows. (This observation is due to Raimund Seidel.)

Build a bit vector B[0..Kn], where B[i]=1 if and only if the integer A[1]+i appears in the input array A. Compute the convolution of B with itself in O(KnlogKn)=O(nlogn) time using FFTs. The resulting array has a non-zero value in the jth position if and only if some pair of elements in A sum to 2A[1]+j. Thus, we can extract a sorted list of sums A[i]+A[j] from the convolution in O(n) time. From here, it's easy to solve Average or 3SUM in O(n) time.

But I don't know a similar trick for Convolution3SUM or ConvolutionAverage!

JeffE
quelle