6.3 Der Algorithmus von Goodrich, Sitchinava und Zhang
Zur Wiederholung: wir haben
Die naive Quicksort-Implementierung aus dem letzten Teilkapitel benötigt
Goodrich, Sitchinava und Zhang geben in ihrem Paper einen Sortieralgorithmus, der in
insgesamt
Übungsaufgabe 6.3.1
(Indexing).
Sei
- für jedes
genau einen Ausgabe-Item mit gibt; die Zahl heißt der Index von ; - jedes
einen anderen Index hat: wenn also und in der Ausgabemenge sind und , dann auch .
In anderen Worten: wir wollen eine injektive Funktion
Als Baustein für einen schnelleren Quicksort-Algorithmus entwerfen wir uns einen Algorithmus
Übungsaufgabe 6.3.2
(Alle Paare bilden). Eingabe sind zwei Mengen
Zeigen Sie, wie man das in
Tip: Stellen Sie sich eine
Übungsaufgabe 6.3.3
Zeigen Sie, wie man mit Hilfe der letzten Übung eine Menge
Gegeben seien zwei Mengen
Definition 6.3.1
(
- Der unterste Level, also die Blätter, besteht aus
Knoten. Wenn das -te Blatt ist, dann setzen wir . - Solange die oberste Ebene mehr als einen Knoten enthält:
- Fasse die Knoten der obersten Ebene in Blöcke von
Knoten zusammen. - Für so einen Block
erschaffen wir einen gemeinsamen Elternknoten eine Ebene höher. - Die Menge
besteht aus den Minima seiner Kinder, also
- Fasse die Knoten der obersten Ebene in Blöcke von
Sofern
Unser neues Quicksort wählt nun eine Menge
Wieviele Items können wir mit so einem Baum parallel verarbeiten? Sei
Literatur
- Michael T. Goodrich, Nodari Sitchinava, and Qin Zhang: Sorting, Searching, and Simulation in the MapReduce Framework. ISAAC 2011, pages 374-383.