Kapitel 6: Randomisierte Algorithmen Gliederung 1. 2. 3. 4. 5. 6. 6/1, Folie 1 Laufzeit von Algorithmen Sortier- und Selektionsverfahren Paradigmen des Algorithmenentwurfs Ausgewählte Datenstrukturen Algorithmische Geometrie Randomisierte Algorithmen © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Gliederung Fahrplan • • • • • • 6/1, Folie 2 Einführendes Beispiel Modellierung randomisierter Algorithmen Typen von randomisierten Algorithmen Eine randomisierte Datenstruktur: Skip-Listen Beispiele für randomisierte Algorithmen Ein randomisierter Primzahltest © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Einführendes Beispiel Problembeschreibung • • • es gibt zwei Rechner R1 und R2 mit Datenbanken, welche anfangs einen identischen Inhalt haben der Inhalt der Datenbanken ändert sich dynamisch, wobei angestrebt wird, daß beide Datenbanken identisch bleiben von Zeit zu Zeit soll überprüft werden, ob das wirklich so ist Zielstellung • • 6/1, Folie 3 gesucht ist ein Kommunikationsprotokoll, daß eine Antwort auf die Frage erlaubt, ob der Inhalt der Datenbanken identisch ist der Kommunikationsaufwand (/* gemessen in der Anzahl der zu übertragenden Bits */) soll möglichst gering sein © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Einführendes Beispiel Randbedingungen • es handelt sich um eine relativ große Datenbank (/* z.B. eine GenDatenbank */) • x = x[1]x[2] ... x[n] und y = y[1]y[2] ... y[n] seien Binärstrings, die dem Datenbankinhalt der Datenbank auf Rechner R1 bzw. R2 repräsentieren wenn einige Terra-Bytes an Daten gespeichert werden, so ist es realistisch, n gleich 1016 zu setzen • ... das gesuchte Kommunikationsprotokoll soll es erlauben, die Frage zu beantworten, ob die beiden Binärstrings x und y gleich sind 6/1, Folie 4 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Einführendes Beispiel Ein deterministisches Protokoll Schritt 1: R1 sendet den kompletten Inhalt x seiner Datenbank an R2 Schritt 2: R2 vergleicht den Inhalt y seiner Datenbank mit x; falls x = y gilt, so wird „gleich“ ausgegeben; andernfalls wird „ungleich“ ausgegeben ... es sind offenbar |x| = n Bits zu übertragen (/* also 1016 Bits, falls n = 1016 ist */) 6/1, Folie 5 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Einführendes Beispiel Ein randomisiertes Protokoll Schritt 1: R1 wählt zufällig eine Primzahl p mit p ≤ n2 und berechnet h(x) = dec(x) mod p (/* wobei jede Primzahl p ≤ n2 dieselbe Wahrscheinlichkeit hat, ausgewählt zu werden ist */) Schritt 2: R1 sendet bin(p) und bin(h(x)) an R2 Schritt 3: R2 berechnet h(y) = dec(y) mod p; falls h(x) = h(y) gilt, so wird „gleich“ ausgegeben; sonst wird „ungleich“ ausgegeben ... dec(x) = x[1]2n-1 + ...+ x[n]20 für x =x[1]...x[n] 6/1, Folie 6 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Einführendes Beispiel Kommunikationsaufwand Schritt 1: R1 wählt zufällig eine Primzahl p mit p ≤ n2 und berechnet h(x) = dec(x) mod p (/* wobei jede Primzahl p ≤ n2 dieselbe Wahrscheinlichkeit hat, ausgewählt zu werden ist */) Schritt 2: R1 sendet bin(p) und bin(h(x)) an R2 ... es ist die Binärdarstellung zweier Zahlen ≤ n2 zu übertragen ... es sind ≤ 2log(n2) = 4 log(n) Bits zu übertragen (/* also ≤ 256 Bits, falls n = 1016 6/1, Folie 7 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Einführendes Beispiel Qualität des Protokolls Schritt 3: R2 berechnet h(y) = dec(y) mod p; falls h(x) = h(y), wird „gleich“ ausgegeben; sonst wird „ungleich“ ausgegeben Fall 1: es wird „gleich“ ausgegeben möglicherweise falsch Fall 2: es wird „ungleich“ ausgegeben immer richtig ... die Wahrscheinlichkeit dafür, daß „gleich“ ausgegeben wird, obwohl x ≠ y gilt, ist ≤ ln(n2)/n (/* ≤ 100/1016 = 10-14, falls n = 1016 */) 6/1, Folie 8 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Einführendes Beispiel Qualität des Protokolls • wähle unabhängig k zufällige Primzahlen ≤ n2 • mache k Läufe des Protokolls „gleich“ wird ausgegeben, falls jeder Lauf „gleich“ liefert ansonsten wird „ungleich ausgegeben“ ... die Wahrscheinlichkeit dafür, daß „gleich“ ausgegeben wird, obwohl x ≠ y gilt, ist ≤ (ln(n2)/n)k (/* ≤ 10-140, falls n = 1016 und k = 10 */) 6/1, Folie 9 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Einführendes Beispiel Zwischenfazit • • • • 6/1, Folie 10 um Effizienz zu gewinnen, verzichtet man auf „Korrektheit“ die Wahrscheinlichkeit dafür, daß ein Fehler gemacht wird, ist bekannt (/* und „gering“ */) anstatt die richtigen Daten zu übertragen, verwendet man sogenannte „Fingerprints“ um die Wahrscheinlichkeit dafür, daß ein Fehler gemacht wird, zu verringern, werden mehrfach, unabhängig voneinander „Fingerprints“ berechnet und übertragen © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Modellierung randomisierter Algorithmen randomisierte Algorithmen (/* Begriffsbildung */) 6/1, Folie 11 • ein durch zufällige Entscheidungen gesteuerter Algorithmus • man erlaubt dem Algorithmus von Zeit zu Zeit eine Münze zu werfen und abhängig vom Ergebnis zu entscheiden, wie weiter gearbeitet wird • Qualitätskriterien • Rechenzeit • Grad der Korrektheit (/* Zuverlässigkeit */) © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Modellierung randomisierter Algorithmen randomisierte Algorithmen (/* Anforderungen */) ... randomisierte Algorithmen sollen mit großer Wahrscheinlichkeit auf jeder Eingabe korrekt und effizient laufen, also in jeder Situation relativ schnell und zuverlässig sein ... die Arbeitsweise eines randomisierten Algorithmus kann als Zufallsexperiment verstanden werden 6/1, Folie 12 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Modellierung randomisierter Algorithmen randomisierte Algorithmen (/* einfache Modellierung */) • es seien A der betrachtete randomisierte Algorithmus und x die Eingabe • das Zufallsexperiment, daß die Arbeit von A auf der Eingabe x beschreibt, kann als Wahrscheinlichkeitsraum (SA,x,Wahr) modelliert werden, wobei gilt • • 6/1, Folie 13 A wählt zufällig eine von endlich vielen möglichen Berechnungen C1,...,Cm aus und verarbeitet die Eingabe x entsprechend SA,x = { C1,...,Cm } Wahr: SA,x → [0,1] ist eine Wahrscheinlichkeitsverteilung über SA,x © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Modellierung randomisierter Algorithmen Berechnungsbaum für einen randomisierten Algorithmus A bei Eingabe x ... Cm C2 C1 ... man kann sich A − bei Eingabe von x − auch als Menge deterministischer Algorithmen A1,...,Am vorstellen, von denen zufällig ein Algorithmus Ai ausgewählt wird 6/1, Folie 14 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Modellierung randomisierter Algorithmen (erwartete) Rechenzeit des Algorithmus A bei Eingabe x • es bezeichne Time(Ci) die Rechenzeit der Berechnung Ci • es sei Z: SA,x N eine Zufallsvariable mit Z(Ci) = Time(Ci) m E-TimeA(x) = E[Z] = Σ Wahr({Ci}) * Z(Ci) i=1 m = 6/1, Folie 15 © 2009 Prof. Steffen Lange - HDa/FbI Σ Wahr({Ci}) * Time(Ci) i=1 - Algorithmik Kapitel 6: Randomisierte Algorithmen Modellierung randomisierter Algorithmen (erwartete) Rechenzeit des randomisierten Algorithmus A ... eine Funktion, die angibt, welche Rechenzeit im worst case zu erwarten ist E-TimeA(n) = max { E-TimeA(x) | x hat die Länge n } 6/1, Folie 16 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Modellierung randomisierter Algorithmen (erwartete) Zuverlässigkeit des randomisierten Algorithmus A bei Eingabe x • es sei Q: SA,x { 0, 1 } eine Zufallsvariable mit Q(Ci) = 1, falls Ci das korrekte Resultat für x berechnet 0, sonst m E-ErfolgA(x) = E[x] = = Σ Wahr({Ci}) * Q(Ci) i=1 Σ Wahr({Ci}) Ci mit Q(Ci) = 1 E-FehlerA(x) = 1 - E-ErfolgA(x) = Σ Wahr({Ci}) Ci mit Q(Ci) = 0 6/1, Folie 17 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Modellierung randomisierter Algorithmen (erwartete) Zuverlässigkeit des randomisierten Algorithmus A ... eine Funktion, die angibt, welche Fehlerwahrscheinlichkeit im worst case zu erwarten ist E-FehlerA(n) = max { E-FehlerA(x) | x hat die Länge n } 6/1, Folie 18 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Modellierung randomisierter Algorithmen Zurück zum einführenden Beispiel Schritt 1: R1 wählt zufällig eine Primzahl p mit p ≤ n2 und berechnet h(x) = dec(x) mod p (/* wobei jede Primzahl ≤ n2 dieselbe Wahrscheinlichkeit hat, ausgewählt zu werden ist */) Schritt 2: R1 sendet bin(p) und bin(h(x)) an R2 Schritt 3: R2 berechnet h(y) = dec(y) mod p; falls h(x) = h(y), wird „gleich“ ausgegeben; sonst wird „ungleich“ ausgegeben ... dec(x) = x[1]2n-1 + ...+ x[n]20 für x =x[1]...x[n] 6/1, Folie 19 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Modellierung randomisierter Algorithmen Zurück zum einführenden Beispiel (/* Bezeichnungen ... */) • • es sei n die Länge der beiden Binärstrings x und y es sei P(n2) = { p | 2 ≤ p ≤ n2 und p ist Primzahl } • zugrunde liegender Wahrscheinlichkeitsraum (SA,(x,y),Wahr) mit • SA,(x,y) = { Cp | p ∈ P(n2) } • Wahr ist die Gleichverteilung auf SA,(x,y), d.h. Wahr({Cp}) = 1/|P(n2)| für alle Cp ∈ SA,(x,y) Fakten Es gibt höchstens n2/ln(n2) viele Primzahlen in der Menge P(n2). 6/1, Folie 20 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Modellierung randomisierter Algorithmen Zurück zum einführenden Beispiel (/* Rechenzeit */) • • es sei n die Länge der beiden Binärstrings x und y wir gehen davon aus, daß die Rechenzeit linear von der Anzahl der übertragenden Bits abhängt ... da die Anzahl der übertragenden Bits immer gleich ist, gilt E-TimeA(n) ≈ max { E-TimeA((x,y)) | x hat die Länge n } ≤ 4 log(n) 6/1, Folie 21 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Modellierung randomisierter Algorithmen Zurück zum einführenden Beispiel (/* Zuverlässigkeit */) • • • es sei n die Länge der beiden Binärstrings x und y (/* es sei x ≠ y */) es sei p eine Primzahl aus P(n2) es sei z = |dec(x) - dec(y)| • es sei Q: SA,(x,y) { 0, 1 } eine Zufallsvariable mit Q(Cp) = 1, falls h(x) ≠ h(y) 0, falls h(x) = h(y) Fakten Q(Cp) = 0 gdw. p teilt z. Die Primfaktorenzerlegung von z enthält höchstens n-1 Faktoren. 6/1, Folie 22 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Modellierung randomisierter Algorithmen Zurück zum einführenden Beispiel (/* Zuverlässigkeit */) E-ErfolgA((x,y)) = E[Q] = Σ Wahr({Cp}) * Q(Cp) p ∈ P(n2) = 1/|P(n2)| * Σ Q(Cp) p ∈ P(n2) ≥ 1/|P(n2)| * (|P(n2)| - (n - 1)) E-FehlerA((x,y)) = 1 - E-ErfolgA((x,y)) ≤ (n - 1) / |P(n2)| = ((n - 1) * ln(n2)) / n2 ≈ ln(n2) / n E-FehlerA(n) = max { E-FehlerA((x,y)) | |x| = |y| = n } ≈ ln(n2) / n 6/1, Folie 23 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Typen von randomisierten Algorithmen Vorüberlegungen / Einschränkungen ... wir betrachten ausschließlich randomisierte Algorithmen für sogenannte Entscheidungsprobleme Entscheidungsprobleme • • • Beschreibung einer Menge X zulässiger Eingaben Beschreibung einer Menge Y zulässiger Ausgaben Beschreibung einer Funktion, die jeder zulässigen Eingabe die Menge der korrekten Ausgaben zuordnet (/* definiert eine Relation R ⊆ X × Y */) Ein Algorithmus A löst das zu R gehörende Entscheidungsproblem, falls A für jedes x ∈ { 0,1 }* folgendes leistet: • • 6/1, Folie 24 falls { y | (x,y) ∈ R } ≠ ∅, gibt A die Zahl 1 aus und stoppt falls { y | (x,y) ∈ R } = ∅, gibt A die Zahl 0 aus und stoppt © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Typen von randomisierten Algorithmen Einteilung randomisierter Algorithmen ... man unterscheidet randomisierte Algorithmen in Bezug auf ihre Zuverlässigkeit 6/1, Folie 25 • Las-Vegas-Algorithmen (/* dürfen keine Fehler */) • Monte-Carlo-Algorithmen (/* können Fehler machen */) © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Typen von randomisierten Algorithmen Las-Vegas-Algorithmen • mögliche Ausgaben des Algorithmus A bei Eingabe x • • • • A(x) = 1 (/* falls { y | (x,y) ∈ R } ≠ ∅ */) A(x) = 0 (/* falls { y | (x,y) ∈ R } = ∅*/) A(x) = ? (/* keine Antwort auf die Frage, ob { y | (x,y) ∈ R } ≠ ∅ */) Anforderungen • • falls 1 bzw. 0 ausgegeben wird, so ist die Antwort korrekt Wahr( „A(x) ∈ { 1,0 }“ ) ≥ ½ ... durch eine wiederholte Anwendung des Algorithmus kann, die Wahrscheinlichkeit dafür, daß der Algorithmus das Ergebnis A(x) = ? liefert, „beliebig“ klein gemacht werden 6/1, Folie 26 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Kapitel 6: Randomisierte Algorithmen Typen von randomisierten Algorithmen Monte-Carlo-Algorithmen • mögliche Ausgaben des Algorithmus A bei Eingabe x • • • A(x) = 1 (/* falls { y | (x,y) ∈ R } ≠ ∅ */) A(x) = 0 (/* falls { y | (x,y) ∈ R } = ∅*/) Anforderungen • • falls A(x) = 0 ausgegeben wird, so ist die Antwort korrekt Wahr( „A(x) = 1 und { y | (x,y) ∈ R } ≠ ∅“ ) ≥ ½ ... durch eine wiederholte Anwendung des Algorithmus kann, die Wahrscheinlichkeit dafür, daß der Algorithmus fälschlicherweise das Ergebnis A(x) = 1 liefert, „beliebig“ klein gemacht werden 6/1, Folie 27 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik