Randomisierte Algorithmen Algorithmik Kap. 6 - fbi.h

Werbung
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
1. Motivation
2. Laufzeit von Algorithmen
3. Paradigmen des Algorithmenentwurfs
4. Ausgewählte Datenstrukturen
5. Anwendungsgebiet: Algorithmische Geometrie
5.1 Motivation
5.2 Das Sweep-Line-Verfahren
5.3 Andere Ansätze
6. Randomisierte Algorithmen
6.1 Motivation / Einordnung
6.2 Skip-Listen
6.3 Weitere Beispiele
6.4 Ein randomisierter Primzahltest
16/1
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Fahrplan
•
•
•
ein einführendes Beispiel
Modellierung randomisierter Algorithmen
Typen von randomisierten Algorithmen
16/2
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Beispiel: ein randomisiertes Kommunikations-Protokoll
•
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
•
•
Ziel:
ein geeignetes Kommunikations-Protokoll
... es sollten möglichst wenige Bits übertragen werden
(/* Korrektheit der übertragenen Bits *) 16/3
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Randbedingungen
•
•
•
...
es handelt sich um eine relativ große Datenbank, bspw. eine
Gen-Datenbank
n bezeichnet die Größe der Datenbank der Datenbank in Bits
wenn einige Terabytes an Daten gespeichert werden, ist es
realistisch n gleich 1016 zu setzen
also x = x[1]x[2] ... x[n] und y = y[1]y[2] ... y[n] mit n = 1016,
wobei x und y den Datenbankinhalt von R1 und R2 bezeichnen
16/4
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Standardidee
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, wird
„gleich“ ausgegeben; sonst wird „ungleich“ ausgegeben
... es sind offenbar 1016 Bits zu übertragen
16/5
Hinweis: deterministisch geht das nicht besser !!!
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Randomisierte Variante
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
16/6
Hinweis: dec(x) = x[1]2n-1 + ...+ x[n]20, wobei n = 1016 gilt
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Eigenschaft 1: 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 ≤ n2 dieselbe
Wahrscheinlichkeit hat, ausgewählt zu werden ist */)
Schritt 2:
R1 sendet bin(p) und bin(h(x)) an R2
... es sind die Binärdarstellung zweier Zahlen ≤ n2 = 1032 zu übertragen
es sind ≤ 2⎡log(n2)⎤ Bits (/* ≤ 256 Bits */) zu übertragen !!!
Hinweis: 2⎡log(n2)⎤ = 4 ⎡log(n)⎤ = 4 ⎡log(1016)⎤ = 4*16 ⎡log(10)⎤ = 256
16/7
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Eigenschaft 2: 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 „ungleich“ ausgegeben
Æ korrekte Ausgabe
Fall 2: es wird „gleich“ ausgegeben
Æ möglicherweise inkorrekte Ausgabe (/* „Kollision“ */)
...
es interessiert, die Wahrscheinlichkeit dafür, daß im
Fall 2, fälschlicherweise „gleich“ ausgegeben wird 16/8
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Fehlerabschätzung für Fall 2
eine Kollision tritt auf, falls
•
x≠y
•
dec(x) mod p = dec(y) mod p, d.h. die Primzahl p teilt die
Zahl w = |dec(x) - dec(y)|
Fakt 1: es gibt n2 / ln(n2) viele Primzahlen ≤ n2 (/* falls n ≥ 9 */)
Fakt 2: die Zahl w hat höchstens n - 1 Primfaktoren
Fehlerwahrscheinlichkeit:
Anzahl der Primfaktoren von w
≤ ln(n2)/n ≤ 100/1016 = 1/1014
Anzahl der Primzahlen ≤ n2
16/9
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Verbesserung des randomisierten 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“
Fehlerwahrscheinlichkeit: ≤ (ln(n2)/n)k = (1/1014)k
Hinweis: für k = 10 ergibt sich eine Fehlerwahrscheinlichkeit ≤ 1/10140
Hinweis: offenbar ist 10*256 << 1016
16/10
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Zwischenfazit
•
•
•
um Effizienz zu gewinnen, verzichtet man auf die Korrektheit des
Protokolls
•
kennt jedoch die Wahrscheinlichkeit dafür, daß ein Fehler
gemacht wird
statt der richtigen Daten verwendet man sogenannte „Fingerprints“
um die Fehlerwahrscheinlichkeit zu verringern, wird das Protokoll
mehrfach, unabhängig voneinander wiederholt
16/11
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
randomisierte Algorithmen
•
•
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
•
Laufzeit (/* Länge der Berechnungen */)
•
Grad der Korrektheit (/* Zuverlässigkeit */)
16/12
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Generelle Anforderung
An randomisierte Algorithmen stellt man die Anforderung, daß sie
mit hoher Wahrscheinlichkeit auf jeder Eingabe korrekt und effizient
laufen, also daß sie in jeder Situation relativ zuverlässig sind.
...
das Verhalten eines randomisierte Algorithmus
stellt ein „einziges“ Zufallsexperiment dar
16/13
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Einfache Modellierung
es sei A der betrachtete Algorithmus und w die aktuelle Eingabe
•
A wählt zufällig eine der möglichen Berechnungen C1, ..., Cm
aus und verarbeitet die Eingabe w entsprechend
das Zufallsexperiment der Arbeit von A auf der Eingabe w kann als
Wahrscheinlichkeitsraum (SA,w,Wahr) modelliert werden, mit:
•
•
SA,w = { C1, ..., Cm }
Wahr ist Wahrscheinlichkeitsverteilung über SA,w
16/14
Hinweis: das kann man auch relativ einfach verallgemeinern
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Berechnungsbaum für A bei Eingabe w
...
C1
Cm
C2
... man kann sich A auch als Menge von deterministischen Algorithmen A1, ..., Am
vorstellen, wobei bei Eingabe von w zufällig ein Algorithmus Ai ausgewählt wird
16/15
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Zeitkomplexität von A auf w
es bezeichne Time(Ci) die Länge der Berechnung Ci
es sei Z: SA,w Æ N eine Zufallsvariable mit Z(Ci) = Time(Ci)
m
E-TimeA(w) = E[Z]
=
Σ
i=1
m
=
Σ
i=1
Wahr({Ci}) * Z(Ci)
Wahr({Ci}) * Time(Ci)
16/16
Hinweis: falls die Ci gleichwahrscheinlich sind, ist das genau das arithmetische Mittel
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Zeitkomplexität von A (/* allgemein */)
...
eine Funktion, die angibt, welche Laufzeit für alle Eingaben
einer bestimmten Länge im schlimmsten Fall zu erwarten ist
E-TimeA(n) = max { E-TimeA(w) | w hat die Länge n }
16/17
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Zuverlässigkeit von A auf w
es sei Q: SA,w Æ { 0, 1 } eine Zufallsvariable mit
Q(Ci) =
1, falls Ci das korrekte Resultat für w berechnet
0, sonst
m
ErfolgA(w)
= E[Q]
=
Σ
i=1
=
Σ
Wahr({Ci}) * Q(Ci)
Wahr({Ci})
Q(Ci) = 1
FehlerA(w) = 1 - ErfolgA(w) = Σ Wahr({Ci})
Q(Ci) = 0
16/18
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Zuverlässigkeit von A (/* allgemein */)
...
eine Funktion, die angibt, welche Fehlerwahrscheinlichkeit für
alle Eingaben einer bestimmten Länge im schlimmsten Fall zu
erwarten ist
FehlerA(n) = max { FehlerA(w) | w hat die Länge n }
16/19
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Beispiel: Randomisiertes Kommunikationsprotokoll
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 mit 1
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
16/20
Hinweis: dec(x) = x[1]2n-1 + ...+ x[n]20
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
es sei n die Länge der beiden Binärstrings x und y
•
SPro,(x,y) = { Cp | p ∈ Prim(n2) }
•
Wahr ist die Gleichverteilung auf SPro,(x,y), d.h.
Wahr({Cp}) = 1/|Prim(n2)| für alle Cp ∈ SPro,(x,y)
16/21
Hinweis:
Prim(n2)
bezeichnet die Menge aller Primzahlen
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
es sei n die Länge der beiden Binärstrings x und y
... die Kommunikationkomplexität ist immer gleich
E-TimePro(n)
= max { E-TimePro(w) | w hat die Länge n }
≤ 4 ⎡log(n)⎤
16/22
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
es sei n die Länge der beiden Binärstrings x und y, wobei x ≠ y gilt
es sei Q: SPro,(x,y) Æ { 0, 1 } eine Zufallsvariable mit
Q(Cp) =
...
1, falls p eine „gute“ Primzahl für die Eingabe (x,y) ist
0, falls p eine „schlechte“ Primzahl für die Eingabe (x,y) ist
es gibt immer nur höchstens n - 1 Primzahlen p ∈ Prim(p2), so
daß p eine „schlechte“ Primzahl für die Eingabe (x,y) ist,
d.h. obwohl x ≠ y ist, wird das Ergebnis „gleich“ ausgegeben
16/23
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
es sei n die Länge der beiden Binärstrings x und y, wobei x ≠ y gilt
ErfolgPro(w) = E[Q]
=
Σ
Wahr({Cp}) * Q(Cp)
p ∈ Prim(n2)
= 1/|Prim(n2)| * Σ Q(Cp)
p ∈ Prim(n2)
= 1/|Prim(n2)| * Σ Q(Cp)
p ist „gut“
≥ 1/|Prim(n2)| * (|Prim(n2)| - (n - 1) )
= 1 - (n -1 )/ |Prim(n2)|
FehlerPro(w) = 1 - ErfolgPro(w) ≤ (n-1) / |Prim(n2)|
16/24
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Typen von randomisierten Algorithmen
betrachten ausschließlich Algorithmen für Entscheidungsprobleme
•
ein Entscheidungsproblem Π ... ist eine allgemeine Ja/Nein-Frage mit
einer Reihe von unspezifizierten Parametern
•
eine Instanz eines Entscheidungsproblems Π ... entsteht,
indem die Parameter spezifiziert werden
Ein Algorithmus ist ein Lösungsalgorithmus für das Entscheidungsproblems Π, wenn er die zugehörige Ja/Nein-Frage stets korrekt
beantwortet.
16/25
Hinweis: das kann man auch relativ einfach verallgemeinern
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Typen von randomisierten Algorithmen
man unterscheidet prinzipiell zwei Typen
•
Las Vegas-Algorithmen (/* machen keine Fehler */)
•
Monte Carlo-Algorithmen (/* können Fehler machen */)
16/26
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Las Vegas-Algorithmen
•
mögliche Ausgaben des Algorithmus A bei Eingabe w
•
A(w) = „ja“ bzw. A(w) = „nein“
•
A(w) = „?“ (/* weiß nicht */)
•
Anforderungen
•
falls „ja“ bzw. „nein“ ausgegeben wird, so ist die Antwort
auf die zugehörige Ja/Nein-Frage korrekt
•
Wahr( A(w) ∈ { „ja“,“nein“ } ) ≥ ½
...
durch eine wiederholte Anwendung des Algorithmus kann, die
Wahrscheinlichkeit dafür, daß der Algorithmus das Ergebnis „?“
liefert, „beliebig“ klein gemacht werden
16/27
Algorithmik
Kap. 6: Randomisierte Algorithmen
Motivation / Einordnung
Monte Carlo-Algorithmen mit einseitigem Fehler
•
mögliche Ausgaben des Algorithmus A bei Eingabe w
•
A(w) = „ja“
•
A(w) = „nein“
•
Anforderungen
•
falls „nein“ ausgegeben wird, so ist die Antwort auf die
zugehörige Ja/Nein-Frage korrekt
•
Wahr( A(w) = „ja“ ) ≥ ½, falls die korrekte Antwort „ja“ ist
•
Wahr( A(w) = „nein“ ) = 1, falls die korrekte Antwort „nein“ ist
...
durch eine wiederholte Anwendung des Algorithmus kann, die
Wahrscheinlichkeit dafür, daß der Algorithmus fälschlicherweise
das Ergebnis „ja“ liefert, „beliebig“ klein gemacht werden
16/28
Herunterladen