6.3 Der Algorithmus von Goodrich, Sitchinava und Zhang

Zur Wiederholung: wir haben P Maschinen, jede mit einem Speicherplatz O(S), und N Items. Es gilt PScN. Die Items liegen beliebig über die Maschinen verteilt, aber so, dass sie in den Speicher der jeweiligen Maschine passen. Es gelte S=Nϵ für ein 0<ϵ<1. Der Wert von ϵ is konstant, hängt also nicht von N ab. Wir wollen die Eingabemenge X aus N Items sortieren: am Ende der Berechnung soll für jedes xX ein Item (x,i) erzeugt worden sein, mit i:=rank(x,X), und auf einer beliebigen Maschine liegen.

Die naive Quicksort-Implementierung aus dem letzten Teilkapitel benötigt O(1/ϵ2) Runden, was quadratisch mehr ist als unser "Goldstandard" O(1/ϵ). Dies erinnert uns an die Situation auf der CREW PRAM: naives Mergesort benötigt O(logn2) Zeit, und es bedurfte eines doch recht komplizierten Algorithmus (Cole's parallel mergesort), um eine Laufzeit von O(logn) zu erreichen.

Goodrich, Sitchinava und Zhang geben in ihrem Paper einen Sortieralgorithmus, der in insgesamt O(1/ϵ) Runden läuft.

Übungsaufgabe 6.3.1 (Indexing). Sei X die Menge der N Eingabe-Items. Ziel ist es, eine Ausgabemenge von Items zu berechnen, so dass es

  1. für jedes xX genau einen Ausgabe-Item (x,i) mit 1iN gibt; die Zahl i heißt der Index von x;
  2. jedes xX einen anderen Index hat: wenn also (x,i) und (x,i) in der Ausgabemenge sind und xx, dann auch ii.

In anderen Worten: wir wollen eine injektive Funktion X[N] berechnen. Hierbei ist muss die Ausgabemenge nicht sortiert sein: der Index i von (x,i) muss eindeutig sein, kann aber ansonsten beliebig in [N] sein. Zeigen Sie, wie man das in O(1/ϵ) Schritten implementieren kann.

Als Baustein für einen schnelleren Quicksort-Algorithmus entwerfen wir uns einen Algorithmus

Übungsaufgabe 6.3.2 (Alle Paare bilden). Eingabe sind zwei Mengen X und Y mit |X|,|Y|N. Ziel ist es, als Ausgabemenge das cartesische Produkt X×Y zu berechnen: jedes Item (x,y)X×Y soll genau auf einer Maschine liegen.

Zeigen Sie, wie man das in O(1/ϵ) implementieren kann.

Tip: Stellen Sie sich eine (N×N)-Matrix vor, bei der die i-te Zeile für xi und die j-te Spalte für yj "zuständig" ist. Bauen Sie Bäume, um xi von links ausgehend zu jeder Zelle in Zeile i zu schicken.

Übungsaufgabe 6.3.3 Zeigen Sie, wie man mit Hilfe der letzten Übung eine Menge X von N Elementen in O(1/ϵ) Runden sortieren kann.

Gegeben seien zwei Mengen X und Y, beide mit |X|,|Y|N. Beschreiben Sie, wie man in O(1/ϵ) Runden für jedes xX den Rang rank(x,Y) berechnen kann. Am Ende der Berechnung soll also für jedes xX ein Item (x,rank(x,Y)) erzeugt worden sein.

Ab jetzt persönliche Notizen. Noch unausgereift!

Definition 6.3.1 (k-verzweigter Suchbaum für Z). Wir konstruieren einen Baum von unten (Blätter) nach oben (Wurzel), in der jeder Knoten v eine Menge ZvZ der Größe k enthält.

  • Der unterste Level, also die Blätter, besteht aus |X|/k Knoten. Wenn l das i-te Blatt ist, dann setzen wir Zl:={zik,zik+1,,zik+k1}.
  • Solange die oberste Ebene mehr als einen Knoten enthält:
    • Fasse die Knoten der obersten Ebene in Blöcke von k Knoten zusammen.
    • Für so einen Block v1,,vk erschaffen wir einen gemeinsamen Elternknoten u eine Ebene höher.
    • Die Menge Zu besteht aus den k Minima seiner Kinder, also Zu:={max(Zv) | v ein Kind von u} .

Sofern kS ist, können wir jedem Knoten in dem Baum eine Maschine zuordnen. Wenn X sortiert ist, können wir den Baum effizient in O(h) Runden bauen; h=logk|Z| ist die Höhe des Baumes.

Unser neues Quicksort wählt nun eine Menge Z von (circa) N Pivots und sortiert diese so wie in Übungsaufgabe 6.3.3. Sei nun T so ein k-ärer Suchbaum für die Menge Z der Pivots, und sei h seine Höhe. Für ein Eingabeitem xX können wir mit Hilfe von T den Rang rank(x,Z) in O(h) Runden bestimmen. Das geht, sofern kS ist, weil ja jeder Knoten k Elemente speichern muss.

Wieviele Items können wir mit so einem Baum parallel verarbeiten? Sei QX eine Menge von Items. Wenn |Q|S ist, können wir Q der Wurzel-Maschine schicken; diese ist damit nicht überlastet. Sie bestimmt dann lokal für jedes qQ, in welchem der k Unterbäume weitergesucht werden muss.

Literatur