Verallgemeinertes 3SUM (k-SUM) Problem?


29

Das 3SUM- Problem versucht, 3 ganze Zahlen aus einer Menge der Größe zu identifizieren so dass .S n a + b + c = 0a,b,cSna+b+c=0

Es wird vermutet, dass es keine bessere Lösung als quadratisch gibt, dh . Oder anders ausgedrückt: .o ( n log ( n ) + n 2 )o(n2)o(nlog(n)+n2)

Ich habe mich also gefragt, ob dies auf das verallgemeinerte Problem zutrifft: Finde ganze Zahlen für in einer Menge der Größe so dass . i [ 1 .. k ] S n Σ i [ 1 .. k ] a i = 0aii[1..k]Sni[1..k]ai=0

Ich denke, Sie können dies in für tun (es ist trivial, den einfachen Algorithmus zu verallgemeinern ). Aber gibt es bessere Algorithmen für andere Werte von ?k 2 k = 3 ko(nlog(n)+nk1)k2k=3
k


Letzte Nachrichten / Artikel über 3SUM , in denen die Komplexität des Entscheidungsbaums in den
Hintergrund gerückt wird

Antworten:


27

k SUM kann wie folgt schneller gelöst werden.

  • Für gerade :k S k / 2 S x - x O ( n k / 2 log n ) Berechne eine sortierte Liste aller Summen von Eingabeelementen. Überprüfen Sie, ob sowohl eine Zahl als auch die Negation . Der Algorithmus läuft in der Zeit .Sk/2SxxO(nk/2logn)

  • Für ungerades :k S ( k - 1 ) / 2 a S x - a - x x O ( n 2 ) O ( n ( k + 1 ) / 2 ) Berechne die sortierte Liste aller Summen von Eingabeelementen. Überprüfen Sie für jedes Eingabeelement , ob sowohl als auch enthält, und für eine Zahl . (Der zweite Schritt ist im Wesentlichen der -Zeitalgorithmus für 3SUM.) Der Algorithmus wird in der Zeit ausgeführt.S(k1)/2aSxaxxO(n2)O(n(k+1)/2)

Beide Algorithmen sind für jede Konstante in einer bestimmten schwachen, aber natürlichen Einschränkung des linearen Entscheidungsbaummodells der Berechnung optimal (außer möglicherweise für den logarithmischen Faktor, wenn gerade und größer als ) . Weitere Einzelheiten finden Sie unter:k2k


stackoverflow.com/a/14737071/511736 schlagen einen O (n ^ 2) -Algorithmus vor, wenn k = 4
Kowser

1
Hashing ist Betrug. Der unter StackOverflow beschriebene Algorithmus wird für die Ganzzahleingabe nur in der Zeit 0 (n ^ 2) und nur mit hoher Wahrscheinlichkeit und nur dann ausgeführt, wenn Sie eine geeignete zufällige Hash-Funktion verwenden. Die Algorithmen in meiner Antwort funktionieren im realen RAM-Modell, sie sind vollständig deterministisch und die Zeitgrenzen sind im schlimmsten Fall. Sie können Log-Faktoren in der Integer-Einstellung auch mit "Bit-Tricks" abschneiden, aber das ist irgendwie langweilig.
JeffE

12

n Ω ( d )d SUM benötigt die Zeit sei denn, k-SAT kann in Zeit für eine Konstante k gelöst werden . Dies wurde in einem gezeigten Papier von Mihai Patrascu und Ryan Williams (1).nΩ(d)2o(n)

Mit anderen Worten, unter der Annahme der Exponentialzeithypothese ist Ihr Algorithmus bis zu einem konstanten Faktor im Exponenten (einem Polynomfaktor in ) optimal.n

(1) Mihai Patrascu und Ryan Williams. Zur Möglichkeit schnellerer SAT-Algorithmen. Proc. 21. ACM / SIAM-Symposium zu diskreten Algorithmen (SODA2010)


3

Hier sind einige einfache Beobachtungen.

Für können Sie dies in tun, indem Sie das Array nach einer Null durchsuchen. Für können Sie dies tun, ohne in der Zeit haschen. Sortieren Sie das Array und scannen Sie es dann. Für jedes Element tun , um eine binäre Suche nach . Dies führt zu einer Gesamtkomplexität von . Für den Fall können Sie dies in Zeit tun, indem Sie das Array akkumulieren und das Ergebnis überprüfen.Θ ( n ) , k = 2 Θ ( n log n ) i - i Θ ( n log n ) , k = n Θ ( n )k=1Θ(n)k=2Θ(nlogn)iiΘ(nlogn)k=nΘ(n)

Weitere Referenzen finden Sie auf der Seite Open Problems Project für 3SUM .


-1

Siehe http://arxiv.org/abs/1407.4640

Ein neuer Algorithmus zur Lösung des rSUM-Problems Valerii Sopin

Abstrakt:

Es wird ein bestimmter Algorithmus zur Lösung des rSUM-Problems für ein beliebiges natürliches r mit einer subquadratischen Bewertung der zeitlichen Komplexität in einigen Fällen vorgestellt. In Bezug auf die Menge des verwendeten Speichers weist der erhaltene Algorithmus auch eine subquadratische Ordnung auf. Die Idee des erhaltenen Algorithmus basiert nicht auf der Berücksichtigung von Ganzzahlen, sondern auf kN aufeinanderfolgenden Bits dieser Zahlen im Binärzahlensystem. Es wird gezeigt, dass, wenn eine Summe von ganzen Zahlen gleich Null ist, die Summe von Zahlen, die durch k aufeinanderfolgende Bits dieser Zahlen dargestellt werden, ausreichend "nahe" bei Null sein muss. Dadurch ist es möglich, die Zahlen zu verwerfen, die erst recht keine Lösung begründen.

Es ist etwas Neues in dieser Ausgabe.


1
Könnten Sie die für die Frage relevanten Ergebnisse aus dem Artikel explizit zitieren? (Das Einfügen des Abstracts kann in Ordnung sein, wenn der Artikel insgesamt relevant ist.) Beiträge auf SE sollen mehr als nur ein Link sein.
FrankW

1
So wie es ist, ist diese Antwort ein (möglicherweise nützlicher) Kommentar, keine Antwort. Als solches müsste es einige Originalinhalte enthalten, z. B. die Beschreibung des Algorithmus in eigenen Worten. Willst du das machen Ich kann Ihre Antwort in einen Kommentar umwandeln, wenn Sie dies nicht tun. (Mir ist bewusst, dass Sie aufgrund Ihres Vertreters keinen Kommentar abgeben konnten.)
Raphael

Das sieht nicht nach einem glaubwürdigen Papier aus. Die Behauptung "Zeitkomplexität in einigen Fällen subquadratisch" ist keine nützliche Aussage. Zeitkomplexität ist per Definition die Laufzeit im ungünstigsten Fall. Die Blasensortierung verläuft in einigen Fällen in linearer Zeit, ihre zeitliche Komplexität bleibt jedoch quadratisch.
DW
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.