Randomisierte Algorithmen am Beispiel Quicksort Mathias Katzer Universität 28. Juli 2003 Mathias Katzer 0
Überblick Motivation: Begriff Randomisierung Quicksort Stochastik-Ausflug Effizienzanalyse Allgemeineres Zusammenfassung Mathias Katzer ¼ ½ > ¹ 1
Motivation Vergleiche worst case vs. average case: Worst case tritt oft bei unzufälliger Eingabe auf Effizienz im ungünstigsten Fall ist oft sehr pessimistisch Mathias Katzer < ¼ ½ > ¹ 2
Motivation Vergleiche worst case vs. average case: Worst case tritt oft bei unzufälliger Eingabe auf Effizienz im ungünstigsten Fall ist oft sehr pessimistisch Zufallssteuerung der Verarbeitungsreihenfolge: Randomisierung Definition: Randomisierter Algorithmus Any algorithm that makes some random (or pseudorandom) choices. Mathias Katzer < ¼ ½ > ¹ 2
Motivation Vergleiche worst case vs. average case: Worst case tritt oft bei unzufälliger Eingabe auf Effizienz im ungünstigsten Fall ist oft sehr pessimistisch Zufallssteuerung der Verarbeitungsreihenfolge: Randomisierung Definition: Randomisierter Algorithmus Any algorithm that makes some random (or pseudorandom) choices. Betrachte stochastische Effizienzeigenschaften Beispiel für s Prinzip: Quicksort Mathias Katzer < ¼ ½ > ¹ 2
Quicksort-Algorithmus quicksort(array a, integer anfang, integer ende) { integer pivot; if( ende > anfang ) { pivot = partitioniere(a, anfang, ende); quicksort(a, anfang, pivot-1); quicksort(a, pivot, ende); } } a[i] <= a[pivot] a[i] >= a[pivot] i <= pivot i >= pivot Mathias Katzer < ¼ ½ > ¹ 3
Effizienz Bester Fall: Pivot ist Median (pivot = n/2 oder pivot = n/2 ) Führt auf O(nlogn) Ungünstigster Fall: Pivot ist kleinstes oder größtes Element (Sortierte Eingabe) Führt auf O(n 2 ) Abhilfen: Median von drei Elementen als Pivot nehmen Zufälliges Element als Pivot nehmen Mathias Katzer < ¼ ½ > ¹ 4
Stochastik-Ausflug Diskrete Zufallsvariable X: Ereignismenge S Wahrscheinlichkeitswerte R Mathias Katzer < ¼ ½ > ¹ 5
Stochastik-Ausflug Diskrete Zufallsvariable X: Ereignismenge S Wahrscheinlichkeitswerte R Bsp: Augenzahl beim (fairen) Würfelwurf S = {1,2,3,4,5,6}, p = 1/6 Mathias Katzer < ¼ ½ > ¹ 5
Stochastik-Ausflug Diskrete Zufallsvariable X: Ereignismenge S Wahrscheinlichkeitswerte R Bsp: Augenzahl beim (fairen) Würfelwurf S = {1,2,3,4,5,6}, p = 1/6 Erwartungswert E einer ZV: Mittel über sehr viele Ereignisse E(X) = p(x = s)s s S Mathias Katzer < ¼ ½ > ¹ 5
Stochastik-Ausflug Diskrete Zufallsvariable X: Ereignismenge S Wahrscheinlichkeitswerte R Bsp: Augenzahl beim (fairen) Würfelwurf S = {1,2,3,4,5,6}, p = 1/6 Erwartungswert E einer ZV: Mittel über sehr viele Ereignisse E(X) = p(x = s)s s S Würfel: E(X) = 1 6 1 + 1 6 2 + 1 6 3 + 1 6 4 + 1 6 5 + 1 6 6 = 3,5 Mathias Katzer < ¼ ½ > ¹ 5
Stochastik-Ausflug Diskrete Zufallsvariable X: Ereignismenge S Wahrscheinlichkeitswerte R Bsp: Augenzahl beim (fairen) Würfelwurf S = {1,2,3,4,5,6}, p = 1/6 Erwartungswert E einer ZV: Mittel über sehr viele Ereignisse E(X) = p(x = s)s s S Würfel: E(X) = 1 6 1 + 1 6 2 + 1 6 3 + 1 6 4 + 1 6 5 + 1 6 6 = 3,5 E ist linear: E(X + ay ) = E(X) + ae(y ) Mathias Katzer < ¼ ½ > ¹ 5
Analyse Eingabe sei Permutation von z 1 z 2... z n Mathias Katzer < ¼ ½ > ¹ 6
Analyse Eingabe sei Permutation von z 1 z 2... z n Sei Z i j = z i,...,z j sortierte Teilliste Mathias Katzer < ¼ ½ > ¹ 6
Analyse Eingabe sei Permutation von z 1 z 2... z n Sei Z i j = z i,...,z j sortierte Teilliste Zufallsvariable X i j = { 1 wenn zi mit z j verglichen wird 0 sonst Mathias Katzer < ¼ ½ > ¹ 6
Analyse Eingabe sei Permutation von z 1 z 2... z n Sei Z i j = z i,...,z j sortierte Teilliste Zufallsvariable X i j = { 1 wenn zi mit z j verglichen wird 0 sonst Es wird immer nur gegen die Pivots verglichen Jedes Element kann nur einmal Pivot sein Mathias Katzer < ¼ ½ > ¹ 6
Analyse Eingabe sei Permutation von z 1 z 2... z n Sei Z i j = z i,...,z j sortierte Teilliste Zufallsvariable X i j = { 1 wenn zi mit z j verglichen wird 0 sonst Es wird immer nur gegen die Pivots verglichen Jedes Element kann nur einmal Pivot sein Anzahl aller Vergleiche X ist Summe aller X i j : X = n 1 i=1 n X i j j=i+1 Mathias Katzer < ¼ ½ > ¹ 6
Analyse Erwartungswert der Anzahl von Vergleichen E(X) = E ( n 1 i=1 ) n X i j = j=i+1 n 1 i=1 n E(X i j ) j=i+1 Mathias Katzer < ¼ ½ > ¹ 7
Analyse Erwartungswert der Anzahl von Vergleichen E(X) = E ( n 1 i=1 ) n X i j = j=i+1 n 1 i=1 n E(X i j ) j=i+1 E(X i j ) = 1 P(z i,z j werden verglichen) + 0 P(z i,z j werden nicht verglichen) = P(z i,z j werden verglichen) Mathias Katzer < ¼ ½ > ¹ 7
Beobachtungen Wenn x mit z i < x < z j Pivot ist, können z i und z j nicht mehr vergl. werden Mathias Katzer < ¼ ½ > ¹ 8
Beobachtungen Wenn x mit z i < x < z j Pivot ist, können z i und z j nicht mehr vergl. werden Wenn z i oder z j als erstes Element aus Z i j Pivot werden, werden sie mit allen Elementen aus Z i j verglichen (worst case) Mathias Katzer < ¼ ½ > ¹ 8
Beobachtungen Wenn x mit z i < x < z j Pivot ist, können z i und z j nicht mehr vergl. werden Wenn z i oder z j als erstes Element aus Z i j Pivot werden, werden sie mit allen Elementen aus Z i j verglichen (worst case) Daher: P(z i,z j werden verglichen) = P(z i wird erstes Pivotelement aus Z i j oder z j wird erstes Pivotelement aus Z i j ) Mathias Katzer < ¼ ½ > ¹ 8
Beobachtungen Wenn x mit z i < x < z j Pivot ist, können z i und z j nicht mehr vergl. werden Wenn z i oder z j als erstes Element aus Z i j Pivot werden, werden sie mit allen Elementen aus Z i j verglichen (worst case) Daher: P(z i,z j werden verglichen) = P(z i wird erstes Pivotelement aus Z i j oder z j wird erstes Pivotelement aus Z i j ) = P(z i wird erstes Pivotelement aus Z i j ) +P(z j wird erstes Pivotelement aus Z i j ) Mathias Katzer < ¼ ½ > ¹ 8
Beobachtungen Wenn x mit z i < x < z j Pivot ist, können z i und z j nicht mehr vergl. werden Wenn z i oder z j als erstes Element aus Z i j Pivot werden, werden sie mit allen Elementen aus Z i j verglichen (worst case) Daher: P(z i,z j werden verglichen) = P(z i wird erstes Pivotelement aus Z i j oder z j wird erstes Pivotelement aus Z i j ) = P(z i wird erstes Pivotelement aus Z i j ) = 2 +P(z j wird erstes Pivotelement aus Z i j ) 1 j i + 1 Mathias Katzer < ¼ ½ > ¹ 8
Ergebnis n 1 E(X) 2 i=1 Obere Schranke für zu erwartende Laufzeit (lnn + 1) = Θ(nlogn) Mathias Katzer < ¼ ½ > ¹ 9
Ergebnis n 1 E(X) 2 i=1 Obere Schranke für zu erwartende Laufzeit (lnn + 1) = Θ(nlogn) Worst-Case-Effizienz ist immer noch O(n 2 )! Mathias Katzer < ¼ ½ > ¹ 9
Ergebnis n 1 E(X) 2 i=1 Obere Schranke für zu erwartende Laufzeit (lnn + 1) = Θ(nlogn) Worst-Case-Effizienz ist immer noch O(n 2 )! Wie wahrscheinlich tritt der ungünstigste Fall ein? Mathias Katzer < ¼ ½ > ¹ 9
Worst Case Pivot ist immer erstes oder letztes Element: P = 2 N 2 N 1... 2 2 = 2(N 1) (N 1)! Mathias Katzer < ¼ ½ > ¹ 10
Worst Case Pivot ist immer erstes oder letztes Element: P = 2 N 2 N 1... 2 2 = 2(N 1) (N 1)! P 1 0.01 (2**(int(x 1))/(int(x))!) 0.0001 1e 06 1e 08 1e 10 1e 12 1e 14 2 4 6 8 10 12 14 16 18 20 Eingabelänge Mathias Katzer < ¼ ½ > ¹ 10
(Noch) Mehr Zufall Randomisiertes Quicksort berechnet immer genau eine Lösung Verarbeitungsreihenfolge ist nicht deterministisch Andere stochastische Algorithmen können prinzipiell verschiedene Ergebnisse errechnen (z. B. Simulated Annealing, Monte-Carlo-Verfahren, genetische Algorithmen) Mathias Katzer < ¼ ½ > ¹ 11
Zusammenfassung: Randomisierte Algorithmen treffen Zufallsentscheidungen Ziel beim Bsp. Quicksort: Vermeidung des systematischen worst case Stochastische Effizienzeigenschaften Einfachste Art von Randomisierung Mathias Katzer < ¼ ½ 12