Betrachten Sie die folgenden zwei Algorithmen für die Suche in einem sortierten Array von Elementen:
A) parallel simulierte Interpolationssuche und binäre Suche und
B) Durchsuchen abwechselnder Interpolationsschritte und binärer Schritte.
Beide Algorithmen haben eine Worst-Case-Komplexität von (und eine durchschnittliche Komplexität von für eine vernünftige Verteilung). Gibt es ein Komplexitätsmodell, das es erlaubt, diese beiden Algorithmen zu trennen (auszudrücken, wann einer besser ist als der andere)? Gibt es insbesondere ein Beispiel, bei dem die parallele Simulation den gemischten Suchalgorithmus übertrifft?
--- Einige grundlegende Hintergründe ---
1) Die Interpolation für das Element in einem sortierten Array zwischen Position und führt einen Vergleich an Position und reduziert das Suchintervall auf oder entsprechend dem Ergebnis (im Gegensatz zur binären Suche, bei der mit dem Element an Position verglichen wird .)
auch, weil das Suchintervall alle zwei Vergleiche um mindestens zwei reduziert wird.
quelle
Antworten:
In Willards Suche nach nicht indizierten und ungleichmäßig generierten Dateien in TimeloglogN verweist er auf eine vorläufige Version (des verlinkten Dokuments) mit dem Titel "Überraschend effiziente Suchalgorithmen für ungleichmäßig generierte Dateien", die auf der 21. Allerton-Konferenz für Kommunikationssteuerung und Datenverarbeitung in 1983, S. 656-662. Ich kann dieses Papier nicht im Web finden, aber in der späteren (verknüpften) Version oben sagt er, dass das ältere Papier zeigt, dass die Synergie zwischen Binär- und Interpolationssuche die Suchzeit für bestimmte Nicht- auf reduzieren kann -gleichmäßige Verteilung der Aufnahmetasten.o(logn)
Rufen Sie insbesondere ein PDF regulär auf, wenn es so dass für oder und und für . Für Daten, die mit regulären PDF-Dateien erstellt wurden, benötigt die Interpolationssuche die erwartete Zeit , während die binäre Suche die erwartete Zeit . Das Verschachteln dauert jedoch erwartete Zeit.μ b1,b2,b3,b4 μ(x)=0 x<b1 x>b2 μ(x)≥b3>0 |μ′(x)|<b4 b1≤x≤b2 Ω(logn) Θ(logn) O(logn−−−−√)
Sie könnten auch an Willard und Reifs "Parallelverarbeitung kann schädlich sein: Das ungewöhnliche Verhalten der Interpolationssuche" interessiert sein , das zeigt, dass "Parallelverarbeitung vor der buchstäblich letzten Iteration bei der Suche nach einer nicht indizierten geordneten Datei fast keinen Nutzen hat".
quelle