6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind.

Ähnliche Dokumente
Algorithmen und Datenstrukturen Heapsort

Algorithmen und Datenstrukturen

Kapitel 6 Elementare Sortieralgorithmen

4 Probabilistische Analyse und randomisierte Algorithmen

Datenstrukturen & Algorithmen

Algorithmen und Datenstrukturen

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2

Rekursionsbäume Aufstellen eines Baumes dessen Knoten die Laufzeit auf jeder Rekursionsstufe darstellen und Aufsummieren

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G Studie zum Arbeitsverhalten von Studierenden unter Leitung

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Grundlagen: Algorithmen und Datenstrukturen

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Übersicht. Datenstrukturen und Algorithmen. Divide-and-Conquer. Übersicht. Vorlesung 9: Quicksort (K7)

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Übung Algorithmen und Datenstrukturen

Vorlesung Datenstrukturen

Kap. 3: Sortieren (3)

Abschnitt: Algorithmendesign und Laufzeitanalyse

Informatik II, SS 2018

Formaler. Gegeben: Elementfolge s = e 1,...,e n. s ist Permutation von s e 1 e n für eine lineare Ordnung ` '

Heapsort. Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen / 50

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

Technische Universität München

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.

Datenstrukturen & Algorithmen

3. Suchen. Das Suchproblem. Suche in Array. Lineare Suche. 1 n. i = n Gegeben Menge von Datensätzen.

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

2 Wachstumsverhalten von Funktionen

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1

Übung Algorithmen I

Asymptotische Laufzeitanalyse: Beispiel

1.3 Erinnerung: Mergesort

Kapitel 8 Fortgeschrittene Sortieralgorithmen

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web:

Algorithmen und Datenstrukturen 1. 1 Einleitung

Algorithmen und Datenstrukturen

Randomisierte Algorithmen 2. Erste Beispiele

Quicksort ist ein Divide-and-Conquer-Verfahren.

Datenstrukturen und Algorithmen Beispiellösung zu Heimübungsblatt 7. Abbildung 1: Das Array A als Baum (vgl. Foliensatz 16, Folie 3)

Wiederholung. Divide & Conquer Strategie

Informatik II, SS 2018

JAVA - Suchen - Sortieren

Informatik II, SS 2016

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

Übung Datenstrukturen. Sortieren

Interne Sortierverfahren

Sortieren & Co. KIT Institut für Theoretische Informatik

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.

Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Algorithmen und Datenstrukturen 1 VL Übungstest WS November 2008

Studentisches Skript

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Algorithmentheorie Randomisierung

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen

3.2. Divide-and-Conquer-Methoden

Algorithmentheorie Randomisierung. Robert Elsässer

Divide & Conquer. Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen

Übungen zu Algorithmentechnik WS 09/10

Suchen und Sortieren Sortieren. Mergesort

2. Effizienz von Algorithmen

Randomisierte Algorithmen am Beispiel Quicksort

7. Sortieren Lernziele. 7. Sortieren

5. Übungsblatt zu Algorithmen I im SoSe 2016

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen (für ET/IT)

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

Algorithmen und Datenstrukturen

Das Divide - and - Conquer Prinzip. Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide and Conquer - Closest-Pair - Segmentschnitt

Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen

Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Sortieren II / HeapSort Heaps

Sortieralgorithmen. Selection Sort

Übungsblatt 4. Aufgabe 1. IN8009 Algorithmen und Datenstrukturen Thomas Stibor

Lineare Kongruenzgeneratoren und Quicksort

Randomisierte Algorithmen

Informatik II, SS 2016

Komplexität von Algorithmen:

Übersicht. Einfache Verfahren MergeSort Untere Schranke QuickSort Selektieren Schnelleres Sortieren Externes Sortieren. 6 Sortieren.

Transkript:

Algorithmen und Datenstrukturen 132 6 Quicksort In diesem Abschnitt wird Quicksort, ein weiterer Sortieralgorithmus, vorgestellt. Trotz einer eher langsamen Worst-Case Laufzeit von Θ(n 2 ) ist Quicksort in der Praxis oft vorzuziehen, da die mittlere Laufzeit Θ(n log n) beträgt und die in der asymptotischen Notation verborgenen Konstanten sehr klein sind. Ferner sortiert Quicksort an Ort und Stelle. 6 Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 133 6.1 Beschreibung von Quicksort Es handelt sich wieder um ein divide-and-conquer Verfahren. Die Grundschritte zum Sortieren eines Teilfeldes A[p.. r] lauten Zerlegen: Das (evtl. umgeordnete) Feld A[p.. r] wird in zwei (möglicherweise leere) Teilfelder A[p.. q 1] und A[q + 1.. r] so zerlegt, dass { A[q] j = p,..., q 1, A[j] > A[q] j = q + 1,..., r. Die Trennschwelle q wird im Algorithmus bestimmt. Sortieren: Sortiere die Teilfelder A[p.. q 1] und A[q + 1,.. r] durch rekursive Anwendung von Quicksort. Zusammensetzen: Da die Teifelder an Ort und Stelle sortiert werden ist A[p.. r] nach dem Sortieren der Teilfelder vollständig sortiert. 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 134 Damit ergibt sich folgende Pseudocode-Darstellung von Quicksort: QUICKSORT(A, p, r) 1 if p < r 2 then q PARTITION(A, p, r) 3 QUICKSORT(A, p, q 1) 4 QUICKSORT(A, q + 1, r) Die Anwendung von QUICKSORT zum Sortieren des gesamten Eingabefeldes erfolgt durch den Aufruf QUICKSORT(A, 1, length[a]). 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 135 Die eigentliche Arbeit wird im Algorithmus PARTITION verrichtet, durch welchen ein Teilfeld A[p.. r] umgeordnet und partitioniert wird. PARTITION(A, p, r) 1 x A[r] 2 i p 1 3 for j p to r 1 4 do if A[j] x 5 then i i + 1 6 vertausche A[i] A[j] 7 vertausche A[i + 1] A[r] 8 return i + 1 Hier wird das letzte Feldelement A[r] als Pivotelement gewählt, um das herum das Feld partitioniert wird. 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 136 Beispiel für eine Ausführung von PARTITION: 2 8 7 1 3 5 6 4 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 136 Beispiel für eine Ausführung von PARTITION: p r 2 8 7 1 3 5 6 4 i = 0 j = 1 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 136 Beispiel für eine Ausführung von PARTITION: p r 2 8 7 1 3 5 6 4 i = 01 j = 12 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 136 Beispiel für eine Ausführung von PARTITION: p r 2 8 7 1 3 5 6 4 i = 01 j = 12 3 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 136 Beispiel für eine Ausführung von PARTITION: p r 2 8 7 1 3 5 6 4 i = 01 j = 12 34 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 136 Beispiel für eine Ausführung von PARTITION: p r 2 81 7 81 3 5 6 4 i = 01 2 j = 12 34 5 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 136 Beispiel für eine Ausführung von PARTITION: p r 2 81 73 81 73 5 6 4 i = 01 23 j = 12 34 56 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 136 Beispiel für eine Ausführung von PARTITION: p r 2 81 73 81 73 5 6 4 i = 01 23 j = 12 34 56 7 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 136 Beispiel für eine Ausführung von PARTITION: p r 2 81 73 81 73 5 6 4 i = 01 23 j = 12 34 56 78 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 136 Beispiel für eine Ausführung von PARTITION: p r 2 81 73 84 1 73 5 6 48 i = 01 23 j = 12 34 56 78 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 137 Bei der Ausführung des Algorithmus entstehen im Feld vier (möglicherweise leere) Teilbereiche. Drei davon besitzen Eigenschaften, die wir als Schleifeninvariante (SI) formulieren: SI: Zu Beginn der for -Schleife (Zeilen 3 6) gilt für jeden Feldindex k 1. Ist p k i, so gilt A[k] x. 2. Ist i + 1 k j 1, so gilt A[k] > x. 3. Ist k = r, so gilt A[k] = x. p i j r } {{ } x } {{ } >x } {{ } keine Einschränkung x 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 138 Nachweis der SI-Eigenschaften: Initialisierung: Vor dem ersten Schleifendurchlauf gelten i = p 1 und j = p. Damit liegen sowohl zwischen p und i als auch zwischen i + 1 und j 1 keine Indizes, sodass die ersten beiden Aussagen der SI trivialerweise erfüllt sind. Die dritte Aussage ist infolge der Zuweisung in Zeile 1 erfüllt. Erhaltung: 2 Fälle in Zeile 4: a) A[j] > x: nur j wird erhöht. Danach gilt wieder 2., alle anderen Einträge/Indizes unverändert. b) A[j] x: i wird erhöht, A[i] mit A[j] vertauscht, und j erhöht. Infolge des Vertauschens gilt 1. auch für den neuen Wert von i. Ebenso gilt nun A[j 1] > x, da dies für den dorthin getauschten Wert aufgrund der SI gilt. Terminierung: Beim Schleifenende gilt j = r, damit decken die drei Indexbereiche aus 1., 2., und 3. das gesamte Feld ab. 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 139 p i j r a) x p i j r x p i j r b) x p i j r x 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 140 Damit leistet der Algorithmus PARTITION das im Zerlegeschritt geforderte. Laufzeit von PARTITION angewandt auf A[p.. r] Θ(n), n = r p + 1. 6.1 Beschreibung von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 141 6.2 Laufzeit von Quicksort Hängt davon ab, wie ausgeglichen die Zerlegungen sind. Bei ausgeglichenen Zerlegungen läuft Quicksort asymptotisch so schnell wie Merge-Sort. Sind die Zerlegungen extrem unausgeglichen, so kann Quicksort asymptotisch so langsam werden wie Insertion-Sort. Wir betrachten zum besseren Verständnis zunächst einige Spezialfälle. 6.2 Laufzeit von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 142 Ungünstigster Fall Tritt auf, wenn Ergebnis von PARTITION ein Teilfeld der Länge n 1 und ein leeres Teilfeld. Annahme: dies trete bei jedem rekursiven Aufruf auf. Da die Partitionierung Θ(n) erfordert und da T (0) = Θ(1), erhalten wir T (n) = T (n 1) + T (0) + Θ(n) = T (n 1) + Θ(n). Lösung (z.b. Substitutionsmethode): T (n) = Θ(n 2 ). Beachte: ungünstigster Fall tritt auf bei bereits sortiertem Eingabefeld. In diesem Fall beträgt aber die Laufzeit von Insertion-Sort sogar nur O(n). 6.2 Laufzeit von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 143 Günstigster Fall Tritt auf, wenn PARTITION stets zwei gleich große Teilfelder liefert, d.h. jedes Teilfeld n/2 Elemente besitzt. Ist dies bei jedem rekursiven Aufruf der Fall, so ergibt sich (z.b.) nach dem Master-Theorem. T (n) = 2T (n/2) + Θ(n) = Θ(n log n) 6.2 Laufzeit von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 144 Beschränktes Verhältnis Die typische Laufzeit von Quicksort liegt dem günstigsten Fall näher als dem ungünstigsten. Annahme: nach jeder Zerlegung haben die Teilfelder das Längenverhältnis 9 : 1. Dies führt auf die Rekursion T (n) T (9n/10) + T (n/10) + cn, was zunächst recht unausgeglichen erscheint. Aber: Lösung ist T (n) = O(n log n). (Rekursionsbaum!) Dasselbe gilt auch für ein Verhältnis von 99 : 1, oder jedes beschränkte Längenverhältnis. 6.2 Laufzeit von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 145 Abwechselnd günstige und ungünstige Zerlegung Da konstante Längenverhältnisse beim Zerlegen nicht zu erwarten sind, betrachten wir der Einsicht halber den Fall, dass abwechselnd günstigste und ungünstigste Zerlegungen auftreten. a) n b) Θ(n) n Θ(n) n 1 0 (n 1)/2 (n 1)/2 (n 1)/2 1 (n 1)/2 6.2 Laufzeit von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 146 Fall a) produziert Felder der Längen 0, (n 1)/2 1 und (n 1)/2 mit Aufwand Θ(n) + Θ(n 1) = Θ(n). Fall b) produziert 2 Felder der Länge (n 1)/2 mit Aufwand Θ(n). Es verbleibt die gleiche Anzahl zu sortierender Teilfelder, im Fall a) waren hierzu lediglich zwei Rekursionen notwendig. In beiden Fällen erhalten wir asymptotischen Aufwand von O(n log n), im ersten Fall ist die Konstante jedoch größer. 6.2 Laufzeit von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 147 6.3 Eine randomisierte Variante von Quicksort bisherige Annahme: im Eingabefeld sind alle Permutationen gleich wahrscheinlich, dies ist nicht immer realistisch. Um dies auszugleichen nehmen wir eine Randomisierung a im Quicksort-Algorithmus vor. (Dies ist allgemein eine Technik, um bessere mittlere Laufzeiten zu erzielen) Eine Möglichkeit: Eingabefeld vor dem Sortieren zufällig permutieren. Hier: wir wählen anstelle von A[r] ein zufälliges Element von A als Trennschwelle. Dies soll im Mittel zu ausgeglichenen Zerlegungen führen. a Wir nennen einen Algorithmus randomisiert, falls dessen Verhalten neben den Eingabedaten auch von Zufallszahlen bestimmt wird. 6.3 Eine randomisierte Variante von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 148 Einzige Änderung: vertausche vor jedem Zerlegen A[r] mit einem zufällig gewählten Feldelement: RANDOMIZED-PARTITION(A, p, r) 1 i RANDOM(p, r) 2 vertausche A[i] A[r] 3 return PARTITION(A, p, r) Hierbei liefere die Funktion RANDOM(a, b) gleichverteilte ganze Zufallszahlen im Intervall [a, b]. RANDOMIZED-QUICKSORT(A, p, r) 1 if p < r 2 then q RANDOMIZED-PARTITION(A, p, r) 3 RANDOMIZED-QUICKSORT(A, p, q 1) 4 RANDOMIZED-QUICKSORT(A, q + 1, r) 6.3 Eine randomisierte Variante von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 149 6.4 Analyse von Quicksort Nach den vorangehenden informellen Überlegungen, die eine intuitive Vorstellung vermittelten, warum Quicksort ein effizienter Sortieralgorithmus zu sein verspricht, soll im Folgenden eine exakte Analyse durchgeführt werden. 6.4.1 Worst-case Analyse Wir raten O(n 2 ) aufgrund vorangehender Überlegungen und wenden die Substitutionsmethode an. Rekursion für die Worst-case Laufzeit: ( ) T (n) = T (q) + T (n q 1) + Θ(n) max 0 q n 1 (maximale Laufzeit über alle Aufteilungen in Teilprobleme der Gesamtgröße n 1) 6.4 Analyse von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 150 Ziel: zeige T (n) cn 2 für geeignete Konstante c. Einsetzen dieser Induktionsannahme liefert ( T (n) max cq 2 + c(n q 1) 2) + Θ(n) 0 q n 1 ( = c max q 2 + (n q 1) 2) + Θ(n). 0 q n 1 Die Funktion f(q) = q 2 + (n q 1) 2 nimmt ihr Maximum auf [0, n 1] am Rand an, d.h. f(q) f(0) = f(n 1) = (n 1) 2 = n 2 2n + 1. Somit ist T (n) cn 2 c(2n 1) + Θ(n) cn 2, sofern c hinreichend groß, dass c(2n 1) den Θ(n)-Term überwiegt. Damit ist T (n) = O(n 2 ) und, da wir bereits wissen, dass für sortierte Eingaben diese Laufzeit erreicht wird, somit auch T (n) = Θ(n 2 ). 6.4 Analyse von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 151 6.4.2 Mittlere Laufzeit Der überwiegende Anteil des Aufwandes entseht durch das Zerlegen. Bei jedem Aufruf von PARTITION wird das Element, das als Trennschwelle dient, von zukünftigen Aufrufen von PARTITION ausgeschlossen. Insbesondere wird PARTITION daher höchstens n man ausgeführt. Bezeichne mit X die Gesamtanzahl Vergleiche in allen Ausführungen von PARTITION im Zusammenhang mit dem Sortieren eines n-elementigen Eingabefeldes. 6.4 Analyse von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 152 Lemma 6.1 Mit dieser Bezeichnung ist die Laufzeit von QUICKSORT O(n + X). Beweis: Neben einer konstanten Anzahl Operationen führt jeder der maximal n Aufrufe von PARTITION einige Male die for -Schleife aus. Bei jedem Durchlauf wird ein Vergleich durchgeführt. Ziel nun: obere Schranke für mittleren Wert von X. Hierzu bezeichnen wir die aufsteigend sortierten Elemente des Ausgangsfeldes A mit z 1, z 2,..., z n und mit Z ij := {z i, z i+1,..., z j } die Menge der Elemente zwischen z i und z j. In welchen Fällen vergleicht QUICKSORT zwei Elemente z i und z j? Beachte: Je zwei Elemente werden höchstens einmal verglichen, denn Vergleiche finden nur mit dem Trennschwellenelement statt, dieses wird aber von weiteren Aufrufen ausgeschlossen. 6.4 Analyse von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 153 Sei X i,j die Indikatorvariable des Ereignisses z i wird mit z j verglichen, d.h. { 1 falls zi mit z j verglichen wird, X i,j = 0 sonst. Da zwei Elemente höchstens einmal verglichen werden, folgt X = n 1 i=1 n j=i+1 X i,j. 6.4 Analyse von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 154 Bezeichnen E[X] den Erwartungswert von X und Pr{A} die Wahrscheinlichkeit eines Ereignisses A, so folgt n 1 E[X] = E n = = n 1 i=1 n 1 i=1 i=1 n j=i+1 n j=i+1 j=i+1 X i,j E[X i,j ] Pr{z i wird mit z j verglichen} Es verbleibt also die Bestimmung von Pr{z i wird mit z j verglichen}. 6.4 Analyse von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 155 Hilfsüberlegung: wann werden zwei Elemente nicht verglichen?// Beispiel: Eingabefeld A = 1, 2,..., 10, sei 7 das erste Trennschwellenelement. Nach erster Ausführung von PARTITION Zerlegung in 1, 2, 3, 4, 5, 6 und 8, 9, 10. Dabei wird 7 mit allen Elementen verglichen, aber kein Element der ersten Menge wird bei diesem und allen späteren Ausführungen von PARTITION mit einem Element der zweiten Menge verglichen. 6.4 Analyse von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 156 Allgemein: sobald ein Element x mit z i < x < z j als Trennschwelle gewählt wird, steht fest, das im weiteren Verlauf z i und z j nicht verglichen werden. Umgekehrt: wird z i von allen Elementen aus Z ij zuerst als Trennschwelle gewählt, so wird z i mit allen Elementen aus Z i,j (außer z i selbst) verglichen, und analog für z j. Im obigen Beispiel werden 7 und 9 verglichen, da 7 als erstes Element in Z 7,9 als Trennschwelle gewählt wird. Dagegen werden 2 und 9 nie verglichen, da aus Z 2,9 das Element 7 als zuerst als Trennschwelle gewählt wurde. Fazit: Genau dann kommt es zu einem Vergleich zwischen z i und z j, wenn das erste Element aus Z i,j, das als Trennschwelle gewählt wird, entweder z i oder z j ist. 6.4 Analyse von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 157 Vor der Wahl einer Trennschwelle aus Z i,j liegen alle Elemente dieser Menge im selben Teilfeld. Daher ist die Wahrscheinlichkeit, als Trennschwelle ausgewählt zu werden, für alle Elemente gleich. Da Z i,j genau j i + 1 Elemente enthält, folgt Pr{z i wird mit z j verglichen} = Pr{z i oder z j zuerst als Trennschwelle aus Z i,j gewählt} = Pr{z i aus Z i,j zuerst gewählt} + Pr{z j aus Z i,j zuerst gewählt} = = 1 j i + 1 + 1 j i + 1 2 j i + 1. 6.4 Analyse von Quicksort TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 158 Insgesamt also E[X] = < n 1 i=1 n 1 i=1 n j=i+1 n k=1 n 1 2 j i + 1 = n 1 2 k = i=1 i=1 n i k=1 2 k + 1 O(log n) = O(n log n). (Hierbei benutzt: n k=1 1 k = log n + O(1).) Damit ist gezeigt: die mittlere Laufzeit von Quicksort unter Verwendung von RANDOMIZED-PARTITION beträgt O(n log n). 6.4 Analyse von Quicksort TU Bergakademie Freiberg, WS 2005/06