Zusammenführen von Listen fragiler Objekte


19

Hintergrund: Chao Xu hat vor einiger Zeit die folgende Frage gestellt: " Gibt es bekannte Vergleichs-Sortieralgorithmen, die sich nicht auf das Sortieren von Netzwerken reduzieren lassen, sodass jedes Element -mal verglichen wird ?O(logn) ". Es scheint, dass wir ein bisschen mit dem Problem stecken; Ich habe das gleiche Problem mit Valentin Polishchuk im Jahr 2009 besprochen, und wir kamen nicht weiter.

Um ein paar neue Ideen zu bekommen, habe ich versucht, die einfachste Frage zu finden, die einen ähnlichen Geschmack hat und nicht ganz unbedeutend ist. Daher die folgende Frage.


Frage: Sie erhalten zwei sortierte Listen mit jeweils Elementen. Können Sie verschmelzen die Listen , so dass jedes Element nur verglichen O ( 1 ) mal?nO(1)

Die Ausgabe sollte natürlich eine sortierte Liste sein, die alle Elemente enthält.2n

[Dies stellte sich als trivial heraus, die Antwort lautet "nein".]


Frage 2: Sie erhalten zwei sortierte Listen mit jeweils Elementen. Sie können fusionieren die Listen so daß jedes Element nur verglichen O ( 1 ) mal, wenn Sie erlaubt einen kleinen Bruchteil der Elemente zu verwerfen ?nO(1)

Genauer gesagt sollte die Ausgabe eine sortierte Liste mit Elementen und ein "Papierkorb" mit T ( n ) Elementen sein. Wie klein können Sie den Wert T ( n ) machen ? Erst T ( n ) = n ist trivial. So etwas wie T ( n ) = n / 100 sollte auf einfache Weise machbar sein. Aber können Sie T ( n ) = o ( n2nT(n)T(n)T(n)T(n)=nT(n)=n/100 ?T(n)=o(n)


Anmerkungen:

  • Wir verwenden hier das Vergleichsmodell. Nur deterministische Algorithmen, wir sind an den Worst-Case-Garantien interessiert.

  • Beachten Sie, dass beide Listen genau Elemente enthalten. Wenn wir eine Liste mit n Elementen und eine andere mit 1 Element hätten, wäre die Antwort eindeutig "nein". Wenn beide Listen lang sind, scheint es jedoch möglich zu sein, einen Lastausgleich durchzuführen.nn1

  • Diesmal ist jeder Algorithmus gültig. Wenn Ihr Algorithmus Sortiernetzwerke als Baustein verwendet, ist dies vollkommen in Ordnung.

  • T(n)=n/100


8
Sie sagten: "Wenn wir eine Liste mit n Elementen und eine andere mit 1 Element hätten, wäre die Antwort eindeutig nein." Ist der Fall mit n Elementen in jeder Liste nicht ein allgemeineres Problem? Wenn uns beispielsweise versprochen wird, dass alle Elemente in der zweiten Liste mit Ausnahme des ersten Elements viel größer sind als alle Elemente in der ersten Liste, reduziert sich dies dann nicht auf das erste Problem?
Robin Kothari

Ω(logn)

T(n)

Antworten:


5

Nein, ein solcher Algorithmus kann nicht existieren.

t

2t2t+1t+1

nn/2tn/2t

to(n)

Nebenbei bemerkt scheint es möglich zu sein, diese Grenze durch einen Algorithmus zuzuordnen, bei dem jedes Element mit einem ungefähren Protokoll der Größe des umgebenden Teils der anderen Liste verglichen wird. Wenn dies von Interesse ist, werde ich versuchen, die Details herauszufinden.

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.