96 Algorithmen und Datenstrukturen 4 Probabilistische Analyse und randomisierte Algorithmen Bei der Algorithmenanalyse ist es sehr hilfreich, Aspekte berücksichtigen zu können, die vom Zufall abhängen. Dies betrifft einerseits Zufälligkeit bei den Eingabedaten und andererseits Algorithmen, in welchen der Ablauf explizit vom Zufall gesteuert wird. Für diesen Abschnitt werden elementare Begriffe aus der Wahrscheinlichkeitslehre benötigt. Die wichtigsten sind im Anhang A zusammengestellt. 4 Probabilistische Analyse und randomisierte Algorithmen TU Bergakademie Freiberg, WS 2005/06 97 Algorithmen und Datenstrukturen 4.1 Das Einstellungsproblem • Sie benutzen eine Arbeitsvermittlung, um einen neuen Programmierer einzustellen. Diese schickt Ihnen jeden Tag einen Bewerber. • Unmittelbar nach jedem Bewerbungsgespräch müssen Sie entscheiden, ob Sie den Bewerber einstellen. • Pro Bewerbungsgespräch entstehen Ihnen Kosten KB . Pro Einstellung enstehen Ihnen Kosten KE > KB . • Ihre Strategie ist es, zu jeder Zeit den bisher besten Bewerber eingestellt zu haben. Wann immer also ein Bewerber besser als Ihr aktueller Programmierer ist, stellen Sie diesen ein und entlassen den alten. Da die Programmiererstelle ständig besetzt sein muß, stellen Sie stets den ersten Bewerber ein. Aufgabe: Ermitteln Sie die Gesamtkosten dieser Strategie. 4.1 Das Einstellungsproblem TU Bergakademie Freiberg, WS 2005/06 98 Algorithmen und Datenstrukturen Pseudocode: Die Kandidaten sind nummeriert von 1 bis n. Ein Pseudobewerber 0, der schlechter ist als alle anderen Bewerber, stellt sicher, dass der erste Bewerber stets eingestellt wird. H IRE -P ROGRAMMER(n) best ← 0 Kandidat 0 ist Pseudobewerber mit schlechtester Eignung for i ← 1 to n do Bewerbungsgespräch mit Bewerber i führen if Kandidat i besser als best then best ← i Kandidat i einstellen 4.1 Das Einstellungsproblem TU Bergakademie Freiberg, WS 2005/06 99 Algorithmen und Datenstrukturen Aufwand: Wenn wir von den n Bewerbern m einstellen beträgt der Aufwand O(nKB + mKE ). • Kosten für Bewerbungsgespräche nKB sind fest (unabhängig von Einstellungen). • Analysiere also Einstellungskosten mKE . • Diese variieren bei jedem Durchlauf in Abhängigkeit von der Reihenfolge der Bewerber. • Häufige Berechnungsmethode: Bestimmung des Minimums oder Maximums einer Folge durch sukzessive Prüfung jedes Folgengliedes, wobei der aktuelle Sieger“ festgehalten wird. Die Variable m gibt an, ” wie oft das Optimum aktualisiert wird. Worst-case: Bewerber erscheinen in aufsteigender Reihenfolge, Aufwand O(nKB + nKE ) = O(nKE ) (da KE > KB ). 4.1 Das Einstellungsproblem TU Bergakademie Freiberg, WS 2005/06 100 Algorithmen und Datenstrukturen Probabilistische Analyse: Reihenfolge der Bewerber nicht vorhersehbar; wir nehmen diese als zufällig an. • Ordne jedem Bewerber Rangordnung rank (i) ∈ {1, 2, . . . , n} zu. • Die geordnete Liste hrank (1), rank (2), . . . , rank (n)i ist eine Permutation der Bewerbernummern h1, 2, . . . , ni. • Unter allen möglichen Rangordnungslisten ist jede der n! Permutationen gleich wahrscheinlich, d.h. die Rangordnungen bilden eine gleichverteilte zufällige Permutation. Entscheidender Ansatz bei probabilistischer Analyse: Kenntnis/Annahmen über Verteilung der Eingaben; bezüglich dieser Verteilung werden Erwartungswerte (z.B. für Laufzeit) gebildet. 4.1 Das Einstellungsproblem TU Bergakademie Freiberg, WS 2005/06 101 Algorithmen und Datenstrukturen Randomisierte Algorithmen Inwieweit die Bewerber tatsächlich in zufälliger Reihenfolge erscheinen ist evtl. nicht nachprüfbar bzw. schwer zu simulieren. In diesem Fall legen wir mit Hilfe eines randomisierten Algorithmus die Verteilung der Eingaben fest. Änderung des Szenarios: • Die Arbeitsvermittlung schickt uns im Voraus eine Liste aller n Bewerber. • Wir bestimmen dann selbst eine zufällige Reihenfolge der Bewerber. 4.1 Das Einstellungsproblem TU Bergakademie Freiberg, WS 2005/06 102 Algorithmen und Datenstrukturen Ein Algorithmus heißt randomisiert, falls dessen Verhalten durch Größen bestimmt wird, die durch einen Zufallsgenerator erzeugt wurden. • R ANDOM(a, b) erzeugt eine ganze Zahl r mit a ≤ r ≤ b, wobei jede der möglichen b − a + 1 Werte mit gleicher Wahrscheinlichkeit auftreten. • Typischerweise wird R ANDOM durch einen Pseudo-Zufallszahlengenerator realisiert, d.h. die erzeugten Zahlenfolgen sind deterministisch (insbesondere reproduzierbar), genügen aber statistischen Tests hinsichtlich ihrer Verteilung. 4.1 Das Einstellungsproblem TU Bergakademie Freiberg, WS 2005/06 103 Algorithmen und Datenstrukturen 4.2 Indikator-Zufallsvariablen Indikator-Zufallsvariablen sind eine hilfreiche Technik zur Berechnung der Erwartungswerts einer Zufallsvariable, insbesondere dann, wenn Abhängigkeiten vorliegen. Ist A ein Ereignis über einem Grundraum Ω, so ist die Indikator-Zufallsvariable I definiert durch ( 1 falls A eintritt, I(A) := 0 falls A nicht eintritt. Lemma 4.1 Für ein Ereignis A sei XA := I(A). Dann gilt E[XA ] = Pr(A). Beweis: Bezeichnet A das Komplement von A, so gilt E[XA ] = E[I(A)] = 1 · Pr(A) + 0 · Pr(A) = Pr(A). 4.2 Indikator-Zufallsvariablen TU Bergakademie Freiberg, WS 2005/06 104 Algorithmen und Datenstrukturen Einfaches Besipiel: Erwartete Anzahl Köpfe beim einmaligen Wurf einer fairen Münze. • Grundraum ist Ω = {K, Z}. • Pr(K) = Pr(Z) = 21 . • Definiere Indikator-Zufallsvariable XK := I(K). Diese zählt die Anzahl Köpfe in einem Wurf. • Wegen Pr(K) = 4.2 Indikator-Zufallsvariablen 1 2 folgt aus Lemma 4.1 E[XK ] = 21 . TU Bergakademie Freiberg, WS 2005/06 105 Algorithmen und Datenstrukturen Interessanteres Beispiel: Erwartete Anzahl Köpfe bei n-maligem Wurf. • Die Zufallsvariable X sei die Anzahl Köpfe in n Würfen. Pn • Eine Lösung wäre E[X] = k=0 k · Pr(X = k) (siehe Anhang). • Alternative: definiere Indikator-Zufallsvariablen Xi := I({Kopf im i-ten Wurf}). • Dann ist X = Pn i=1 Xi . • Lemma 4.1: E[Xi ] = Pr(K) = 1 2 (i = 1, 2, . . . , n). Pn • Erwartete Anzahl Köpfe ist E[X] = E[ i=1 Xi ]. Linearität des Erwartungswertes ergibt n n n X X X 1 n = . E[X] = E[ Xi ] = E[Xi ] = 2 2 i=1 i=1 i=1 4.2 Indikator-Zufallsvariablen TU Bergakademie Freiberg, WS 2005/06 106 Algorithmen und Datenstrukturen Analyse des Einstellungsproblems Wir bestimmen die erwartete # (Anzahl) Einstellungen. Bewerberreihenfolge sei zufällig. Definiere Zufallsvariable X := #Einstellungen. Definiere Indikatorzufallsvariable Xi := I({Bewerber i wird eingestellt}) Wieder gilt X = Pn i=1 (i = 1, 2, . . . , n). Xi . Mit Lemma 4.1: E[Xi ] = Pr({Bewerber I wird eingestellt}). 4.2 Indikator-Zufallsvariablen TU Bergakademie Freiberg, WS 2005/06 107 Algorithmen und Datenstrukturen Berechnung von Pr({Bewerber i wird eingestellt}): • Einstellung von Bewerber i genau dann, wenn dieser besser qualifiziert als jeder der Bewerber 1, 2, . . . , i − 1 ist. • Nach Annahme erscheinen die Bewerber in zufälliger Reihenfolge, somit auch Bewerber 1, 2, . . . , i, folglich ist mit gleicher Wahrscheinlichkeit jeder dieser Bewerber der bisher Beste. • Damit: Pr(Bewerber i bisher der Beste) = 1/i, d.h. E[Xi ] = 1/i. • Insgesamt: n n n X X X 1 E[X] = E[ Xi ] = E[Xi ] = = log n + O(1). i i=1 i=1 i=1 Erwarteter Aufwand also O(KE log n), was deutlich niedriger ausfällt als der worst-case Aufwand von O(KE n). 4.2 Indikator-Zufallsvariablen TU Bergakademie Freiberg, WS 2005/06 108 Algorithmen und Datenstrukturen 4.3 Randomisierte Algorithmen Deterministischer Algorithmus: Analyse beruht auf Verteilung der Wahrscheinlichkeiten der Eingaben. Zufall liegt in den Eingaben. Randomisierter Algorithmus: Kosten abhängig von generierten Zufallszahlen, ein und dieselbe Eingabe kann zu unterschiedlichen Laufzeiten führen, es gibt daher keine Best-case- oder Worst-case-Eingabe. Zufall liegt im Algorithmus. 4.3 Randomisierte Algorithmen TU Bergakademie Freiberg, WS 2005/06 109 Algorithmen und Datenstrukturen Modifikation des Pseudocodes zur Randomisierung von H IRE -P ROGRAMMER: R ANDOMIZED -H IRE -P ROGRAMMER(n) Bestimme zufällige Umordnung der Bewerberliste H IRE -P ROGRAMMER(n) Lemma 4.2 Die Einstellungskosten des Algorithmus R ANDOMIZED -H IRE -P ROGRAMMER besitzen einen Erwartungswert von der Ordnung O(KE log n). Beweis: Nach der Umordnung liegt dieselbe Situation vor wie beim deterministischen Algorithmus mit unter Annahme gleichverteilter Eingaben. 4.3 Randomisierte Algorithmen TU Bergakademie Freiberg, WS 2005/06 110 Algorithmen und Datenstrukturen Zufällige Umordnung von Feldern Wie generiert man eine zufällige Umordnung ? Ziel: Erzeuge gleichverteilte zufällige Umordnung, d.h. jede der n! möglichen Permutationen soll mit gleicher Wahrscheinlichkeit generiert werden. R ANDOMIZE -I N -P LACE(A, n) for i ← 1 to n do vertausche A[i] ↔ A[R ANDOM(i, n)] Idee: Im i-ten Durchlauf, wähle A[i] zufällig unter A[i . . n]. Nach i-tem Durchlauf kann A[i] nicht mehr verändert werden. Laufzeit: Pro Durchlauf O(1), insgesamt also O(n). 4.3 Randomisierte Algorithmen TU Bergakademie Freiberg, WS 2005/06 111 Algorithmen und Datenstrukturen Korrektheit: Gegeben sei eine n-elementige Menge. Jedes k-Tupel aus Elementen dieser Menge (ohne Zurücklegen) bezeichnen wir als k-Permutation. Hiervon gibt es n!/(n − k)!. Lemma 4.3 R ANDOMIZE -I N -P LACE erzeugt gleichverteilte Permutationen. Beweis: verwende Schleifeninvariante SI: Unmittelbar vor dem i-ten Durchlauf der for-Schleife enthält das Teilfeld A[1 . . i − 1] jede mögliche (i − 1)-Permutation mit Wahrscheinlichkeit (n − i + 1)!/n!. 4.3 Randomisierte Algorithmen TU Bergakademie Freiberg, WS 2005/06