Randomisierte und Approximative Algorithmen

Werbung
Skript zur Vorlesung
Randomisierte und
Approximative Algorithmen
Prof. Dr. Heiko Röglin
Institut für Informatik I
Wintersemester 2011/12
19. Januar 2012
Vorwort
Das vorliegende Skript ist als Begleitmaterial für die Vorlesung „Randomisierte und Approximative Algorithmen“ im Wintersemester 2011/12 an der Universität Bonn konzipiert. Es
wird während des Semesters kontinuierlich erweitert.
Das Skript wird den Vorlesungsinhalt abdecken, aber dennoch empfehle ich den Teilnehmern
der Vorlesung, sich auch die Bücher von Rajeev Motwani und Prabhakar Raghavan [6] und
Michael Mitzenmacher und Eli Upfal [5] anzuschauen. Beide Bücher sind sehr gute Einführungen in das Thema der randomisierten Algorithmen und wurden für den Lesesaal der
Fachschaft beschafft. Wer an einer guten und ausführlichen Einführung in Wahrscheinlichkeitsrechnung interessiert ist, findet diese z. B. in dem Buch von Ulrich Krengel [2].
Ich danke Tobias Brunsch und Michael Etscheid für das Korrekturlesen des Skriptes. Für
Hinweise auf Fehler im Skript und Verbesserungsvorschläge bin ich stets dankbar. Bitte
senden Sie diese an die E-Mail-Adresse [email protected] oder sprechen Sie mich in
der Vorlesung an.
Heiko Röglin
2
Inhaltsverzeichnis
1 Grundlagen der Wahrscheinlichkeitstheorie
5
1.1
Diskrete Wahrscheinlichkeitsräume . . . . . . . . . . . . . . . . . . . . . . . .
5
1.2
Unabhängigkeit und bedingte Wahrscheinlichkeit . . . . . . . . . . . . . . . .
8
1.3
Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
1.3.1
Verifikation von Matrixprodukten . . . . . . . . . . . . . . . . . . . .
11
1.3.2
Berechnung eines minimalen Schnittes . . . . . . . . . . . . . . . . . .
13
Zufallsvariablen und Erwartungswerte . . . . . . . . . . . . . . . . . . . . . .
21
1.4.1
Anwendung: Analyse von Quicksort . . . . . . . . . . . . . . . . . . .
24
1.4.2
Anwendung: Hashing . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
1.4.3
Binomialverteilung und geometrische Verteilung
. . . . . . . . . . . .
29
1.4.4
Anwendung: Coupon Collector’s Problem . . . . . . . . . . . . . . . .
32
Konzentration von Verteilungen . . . . . . . . . . . . . . . . . . . . . . . . . .
33
1.5.1
Markow- und Tschebyschew-Ungleichung
. . . . . . . . . . . . . . . .
33
1.5.2
Anwendung: Bestimmung des Medians . . . . . . . . . . . . . . . . . .
36
1.4
1.5
2 Komplexitätstheorie für randomisierte Algorithmen
2.1
2.2
42
Rechnermodelle und Komplexitätsklassen . . . . . . . . . . . . . . . . . . . .
42
2.1.1
Probabilistische Rechnermodelle . . . . . . . . . . . . . . . . . . . . .
42
2.1.2
Monte-Carlo- und Las-Vegas-Algorithmen . . . . . . . . . . . . . . . .
44
2.1.3
Komplexitätsklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
Untere Schranken für randomisierte Algorithmen . . . . . . . . . . . . . . . .
48
2.2.1
Spielbaumauswertung . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
2.2.2
Das Min-Max-Prinzip . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
2.2.3
Eine untere Schranke für Spielbaumauswertung . . . . . . . . . . . . .
54
3
4
3 Chernoff-Schranken und randomisierte Lastverteilung
3.1
3.2
Chernoff-Schranken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
3.1.1
Momenterzeugende Funktionen . . . . . . . . . . . . . . . . . . . . . .
56
3.1.2
Chernoff-Schranken für die Summe von Bernoulli-Zufallsvariablen . . .
57
3.1.3
Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
Randomisierte Lastverteilung . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
3.2.1
Anwendung: Bucketsort . . . . . . . . . . . . . . . . . . . . . . . . . .
64
3.2.2
Auslastung der vollsten Kiste . . . . . . . . . . . . . . . . . . . . . . .
65
3.2.3
Anwendung: Verwaltung einer Menge . . . . . . . . . . . . . . . . . .
66
3.2.4
Bloom-Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
3.2.5
The Power of Two Choices
69
. . . . . . . . . . . . . . . . . . . . . . . .
4 Markow-Ketten und Random Walks
4.1
4.2
4.3
56
71
Markow-Ketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
4.1.1
Anwendung: Randomisierter Algorithmus für 2-SAT . . . . . . . . . .
73
4.1.2
Anwendung: Randomisierter Algorithmus für 3-SAT . . . . . . . . . .
77
Eigenschaften von Markow-Ketten . . . . . . . . . . . . . . . . . . . . . . . .
81
4.2.1
Klassifikation von Zuständen . . . . . . . . . . . . . . . . . . . . . . .
81
4.2.2
Anwendung: Gambler’s Ruin Problem . . . . . . . . . . . . . . . . . .
83
4.2.3
Stationäre Verteilung
. . . . . . . . . . . . . . . . . . . . . . . . . . .
85
Random Walks auf Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
4.3.1
Anwendung: Zusammenhangstest . . . . . . . . . . . . . . . . . . . . .
89
4.3.2
Elektrische Schaltungen . . . . . . . . . . . . . . . . . . . . . . . . . .
90
Kapitel 1
Grundlagen der
Wahrscheinlichkeitstheorie
Wir werden uns in dieser Vorlesung mit der Frage beschäftigen, wie wir Zufall beim Entwurf
und der Analyse von Algorithmen einsetzen und ausnutzen können. Dabei werden wir zwei
große Themenkomplexe behandeln. Zunächst werden wir uns mit randomisierten Algorithmen beschäftigen, also Algorithmen, die zufällige Entscheidungen treffen. Auf den ersten
Blick mag es komisch erscheinen, Algorithmen zufällig handeln zu lassen, aber wir werden
sehen, dass randomisierte Algorithmen für viele Probleme effizienter und einfacher sind als
die besten bekannten deterministischen Algorithmen. Das zweite Thema, mit dem wir uns
beschäftigen werden, ist probabilistische Analyse. Dabei geht es darum, das Verhalten von
deterministischen oder randomisierten Algorithmen auf zufälligen Eingaben zu analysieren.
Dies ist sinnvoll, da die klassische Worst-Case-Analyse, bei der man Algorithmen nur basierend auf ihrem schlimmsten Verhalten beurteilt, oft zu pessimistische Ergebnisse liefert.
In diesem Kapitel werden wir die notwendigen Grundlagen der Wahrscheinlichkeitsrechnung
wiederholen und mit Beispielen illustrieren. Die Inhalte sind stark an die ersten Kapitel
von [5] angelehnt.
1.1
Diskrete Wahrscheinlichkeitsräume
Als erstes müssen wir klären, was genau wir unter Zufall verstehen. Dazu geben wir zunächst
eine formale Definition, bevor wir uns über die Interpretation Gedanken machen.
Definition 1.1. Sei Ω eine endliche oder abzählbare Menge, die wir im Folgenden die Ergebnismenge nennen werden. Die Elemente von Ω bezeichnen wir als Elementarereignisse
und jede Teilmenge A ⊆ Ω bezeichnen wir als Ereignis. Für ein Ereignis A bezeichnen wir
mit A = Ω \ A sein Gegenereignis.
Eine Wahrscheinlichkeit (oder Wahrscheinlichkeitsmaß) auf Ω ist eine Funktion Pr : 2Ω →
[0, 1], die jedem Ereignis einen Wert aus dem Intervall [0, 1] zuweist. Es muss dabei Pr(Ω) =
1 gelten und P muss σ-additiv sein, d. h. für jede abzählbare Folge A1 , A2 , . . . von paarweise
disjunkten Ereignissen muss
!
Pr
∞
[
Ai
=
i=1
∞
X
Pr(Ai )
i=1
gelten. Das Paar (Ω, Pr) nennen wir einen diskreten Wahrscheinlichkeitsraum.
5
6
1. Grundlagen der Wahrscheinlichkeitstheorie
Eine direkte Konsequenz aus dieser Definition ist, dass Pr(∅) = 0 gelten muss. Es ist äquivalent zu Definition 1.1, wenn wir die Wahrscheinlichkeit Pr : Ω → [0, 1] zunächst nur auf
P
den Elementarereignissen definieren und durch Pr(A) = a∈A Pr(a) auf beliebige Ereignisse A ⊆ Ω erweitern. Wir müssen dann lediglich Pr(Ω) = 1 fordern, um einen diskreten
Wahrscheinlichkeitsraum im Sinne der obigen Definition zu erhalten.
Bevor wir Beispiele für Wahrscheinlichkeitsräume kennenlernen, überlegen wir uns kurz, wie
Wahrscheinlichkeiten zu interpretieren sind. Tatsächlich gibt es verschiedene Möglichkeiten,
wir wollen hier aber nur kurz den frequentistischen Wahrscheinlichkeitsbegriff ansprechen.
Bei diesem interpretiert man die Wahrscheinlichkeit für ein Ereignis einfach als die relative
Häufigkeit, mit der es bei einer großen Anzahl unabhängig wiederholter Zufallsexperimente
auftritt. Möchten wir also beispielsweise den Wurf eines fairen Würfels modellieren, so setzen wir Ω = {1, 2, 3, 4, 5, 6} als die Ergebnismenge und Pr(i) = 1/6 für jedes i ∈ Ω. Die
Wahrscheinlichkeit Pr(1) = 1/6 ist dann so zu interpretieren, dass bei einer großen Anzahl
unabhängiger Würfe des Würfels in einem Sechstel der Fälle die Zahl 1 geworfen wird.
Kommen wir nun zu weiteren Beispielen für diskrete Wahrscheinlichkeitsräume.
• Bei dem obigen Beispiel eines Würfelwurfes entspricht das Ereignis, eine gerade Zahl
zu würfeln, der Menge A = {2, 4, 6}. Die Wahrscheinlichkeit dafür ergibt sich mittels
Additivität zu Pr(A) = Pr(2) + Pr(4) + Pr(6) = 1/2, was unserer Intuition entspricht, dass bei einer großen Anzahl an Würfen in der Hälfte der Fälle eine gerade
Zahl herauskommt.
• Werfen wir zwei faire Münzen nacheinander, so wählen wir als Ergebnismenge Ω =
{(K, K), (K, Z), (Z, K), (Z, Z)}, wobei (Z, K) zum Beispiel dafür steht, dass die erste
Münze „Zahl“ und die zweite „Kopf“ ergibt. Intuitiv ist klar, dass bei fairen Münzen alle Elementarereignisse die gleiche Wahrscheinlichkeit haben. Deshalb setzen wir
Pr((K, K)) = Pr((K, Z)) = Pr((Z, K)) = Pr((Z, Z)) = 1/4. Das Ereignis, dass die
erste Münze „Kopf“ ergibt, entspricht dann der Menge A = {(K, K), (K, Z)}. Gemäß
der Additivität ergibt sich Pr(A) = Pr((K, K)) + Pr((K, Z)) = 1/2, was unserer Intuition entspricht, dass die erste Münze bei einer großen Anzahl Wiederholungen in
der Hälfte der Fälle „Kopf“ ergibt.
• Wir werfen zwei faire Münzen; diesmal aber nicht nacheinander, sondern gleichzeitig.
Gehen wir davon aus, dass wir die Münzen nicht unterscheiden können, dann enthält
die Ergebnismenge nur noch drei Elementarereignisse: Ω = {{K, K}, {Z, Z}, {K, Z}}.
Entweder beide Münzen zeigen „Kopf“, beide Münzen zeigen „Zahl“ oder eine Münze
zeigt „Kopf“ und die andere „Zahl“. Diese drei Elementarereignisse sind aber nicht mehr
gleichwahrscheinlich. Man überlegt sich leicht, dass Pr({K, K}) = Pr({Z, Z}) = 1/4
und Pr({K, Z}) = 1/2 gelten.
Als nächstes Beispiel betrachten wir den ersten randomisierten Algorithmus, den wir in
dieser Vorlesung kennenlernen werden. Wir gehen davon aus, dass wir testen möchten, ob
zwei univariate Polynome über den reellen Zahlen gleich sind. Wir können aber auf die
Polynome nicht direkt zugreifen und die Koeffizienten auslesen, sondern die Polynome sind
lediglich als Black Box gegeben. Wir können einer Black Box, die ein Polynom p beschreibt,
einen Wert x ∈ N übergeben und erhalten als Ergebnis den Wert p(x) zurück. Wie testen
wir nun, ob zwei Polynome p und q, die jeweils durch eine Black Box beschrieben werden
und von denen wir nur wissen, dass ihr Grad maximal d ∈ N ist, gleich sind? Dazu halten
wir zunächst fest, dass auch die Differenz p − q ein Polynom mit Grad höchstens d ist, das
wir mit Hilfe der Black Boxes auswerten können. Diese Polynom ist genau dann gleich dem
1.1. Diskrete Wahrscheinlichkeitsräume
7
Nullpolynom, wenn p und q gleich sind. Ansonsten besitzt das Polynom p − q gemäß dem
Fundamentalsatz der Algebra höchstens d viele reelle Nullstellen.
Wir schlagen den folgenden einfachen randomisierten Algorithmus vor: Wähle uniform zufällig einen Wert x ∈ {1, . . . , 100d} und werte p(x) − q(x) aus. Falls p(x) − q(x) 6= 0 gilt,
so gib aus, dass die Polynome p und q nicht übereinstimmen. Ansonsten gib aus, dass die
Polynome p und q übereinstimmen. Formal ist die Ergebnismenge Ω = {1, . . . , 100d} und
uniform zufällig bedeutet, dass jedes Elementarereignis die gleiche Wahrscheinlichkeit hat,
also Pr(1) = . . . = Pr(100d) = 1/(100d).
Sind die Polynome p und q identisch, so wird p(x)−q(x) für jedes x ∈ Ω den Wert 0 annehmen.
In diesem Falle gibt der Algorithmus also mit Wahrscheinlichkeit Pr(Ω) = 1 aus, dass die
Polynome übereinstimmen und liefert somit stets das richtige Ergebnis. Sind die Polynome p
und q nicht identisch, so liefert der Algorithmus nur dann eine falsche Antwort zurück, wenn
das zufällig gewählte x eine Nullstelle von p − q ist. Seien y1 , . . . , yk die Nullstellen von p − q,
die in der Menge {1, . . . , 100d} liegen. Wir wissen, dass k ≤ d gilt, und somit beträgt die
Fehlerwahrscheinlichkeit Pr({y1 , . . . , yk }) = Pr(y1 ) + . . . + Pr(yk ) = k/(100d) ≤ 1/100.
Wir haben einen Algorithmus mit einseitigem Fehler entworfen: Sind p und q identisch, so
gibt der Algorithmus stets das richtige Ergebnis aus. Sind p und q nicht identisch, so liefert
der Algorithmus mit mindestens 99-prozentiger Wahrscheinlichkeit das richtige Ergebnis.
Ein deterministischer Algorithmus hätte p − q an d + 1 vielen Stellen auswerten müssen,
um das korrekte Ergebnis zu liefern. Wir haben also die Laufzeit um den Faktor d + 1 auf
Kosten einer kleinen Fehlerwahrscheinlichkeit reduziert. Wir werden später sehen, wie wir
die Fehlerwahrscheinlichkeit noch weiter reduzieren können.
Oft sind wir bei der Analyse von randomisierten Algorithmen in der Situation, dass wir mehrere Ereignisse definiert haben und die Wahrscheinlichkeit, dass mindestens eins von diesen
eintritt, oder die Wahrscheinlichkeit, dass alle eintreten, bestimmen möchten. Sind A ⊆ Ω
und B ⊆ Ω zwei Ereignisse, so entspricht A ∪ B dem Ereignis, dass A oder B eintritt,
und A ∩ B entspricht dem Ereignis, dass A und B gemeinsam eintreten.
Lemma 1.2. Sei (Ω, Pr) ein diskreter Wahrscheinlichkeitsraum und seien A ⊆ Ω und B ⊆ Ω
Ereignisse. Dann gilt
Pr(A ∪ B) = Pr(A) + Pr(B) − Pr(A ∩ B).
Beweis. Für disjunkte Ereignisse A und B folgt das Lemma direkt aus der σ-Additivität
der Wahrscheinlichkeit Pr und Pr(∅) = 0. Für nicht disjunkte Ereignisse folgt es durch
zweimalige Anwendung der σ-Additivität:
Pr(A ∪ B) = Pr(A) + Pr(B \ A) = Pr(A) + Pr(B) − Pr(A ∩ B).
Eine sehr einfache, aber extrem wichtige Konsequenz des vorangegangenen Lemmas ist, dass
für eine endliche oder abzählbare Folge A1 , A2 , . . . von Ereignissen stets
Pr
∞
[
i=1
!
Ai
≤
∞
X
Pr(Ai )
i=1
gilt. Diese Formel bezeichnen wir auch als Union Bound.
Wir betrachten als Beispiel noch einmal den Test, ob zwei Polynome identisch sind, und
fügen als zusätzliche Schwierigkeit hinzu, dass die Black Boxes nicht fehlerfrei arbeiten.
8
1. Grundlagen der Wahrscheinlichkeitstheorie
Konkret nehmen wir an, dass unabhängig von dem ausgewählten x ∈ N die Black Boxes mit Wahrscheinlichkeit 0,9 das korrekte Ergebnis p(x) − q(x) zurückliefern und mit
Wahrscheinlichkeit 0,1 ein falsches Ergebnis. Wir analysieren in diesem Szenario denselben Algorithmus wie oben. Dazu sei (Ω1 , Pr1 ) der oben definierte Wahrscheinlichkeitsraum
mit Ω1 = {1, . . . , 100d} und Pr1 (x) = 1/(100d) für x ∈ Ω1 , der die uniform zufällige Wahl
der Stelle x beschreibt. Ferner sei (Ω2 , Pr2 ) ein Wahrscheinlichkeitsraum mit Ω2 = {R, F },
Pr2 (R) = 0,9 und Pr2 (F ) = 0,1, der beschreibt, ob die Black Boxes das Polynom p − q
richtig oder falsch auswerten.
Um zu modellieren, dass beide Zufallsexperimente (die Wahl von x und das Funktionieren
der Black Boxes) unabhängig voneinander sind, betrachten wir das Produkt der Wahrscheinlichkeitsräume (Ω, Pr) mit Ω = Ω1 × Ω2 und Pr(x, y) = Pr1 (x) · Pr2 (y) für (x, y) ∈ Ω, wobei
wir zur Vereinfachung hier und im Folgenden Pr(x, y) statt Pr((x, y)) schreiben. Man kann
leicht nachrechnen, dass (Ω, Pr) ein diskreter Wahrscheinlichkeitsraum ist, wenn (Ω1 , Pr1 )
und (Ω1 , Pr2 ) es sind. Intuitiv kann man sich leicht davon überzeugen, dass (Ω, Pr) wirklich
die unabhängige Hintereinanderausführung der beiden Zufallsexperimente modelliert. Eine
weitere wichtige Eigenschaft von Produkträumen, die man leicht nachrechnet, ist, dass für
jedes x ∈ Ω1 und jedes y ∈ Ω2
Pr1 (x) = Pr({x} × Ω2 )
und
Pr2 (y) = Pr(Ω1 × {y})
gelten.
Es handelt sich nun um einen Algorithmus mit beidseitigem Fehler. Sind die Polynome p
und q gleich, so ist die Wahl von x unerheblich, da stets p(x) − q(x) = 0 gilt. Der Algorithmus liefert aber ein falsches Ergebnis zurück, wenn die Black Boxes das Polynom p − q
nicht korrekt auswerten, was mit Wahrscheinlichkeit Pr2 (F ) = 0,1 passiert. Sind hingegen p
und q unterschiedlich, so gibt es zwei Fehlerquellen: die zufällig gewählte Stelle x kann eine
Nullstelle des Polynoms p − q sein oder die Stelle x ist keine Nullstelle, aber die Black Boxes
werten das Polynom p−q falsch aus. Seien y1 , . . . , yk wie oben die Nullstellen von p−q in der
Menge {1, . . . , 100d} und sei A = {y1 , . . . , yk } × Ω2 das Ereignis, dass der Algorithmus eine
solche Nullstelle auswählt. Außerdem sei B = Ω1 × {F } das Ereignis, dass die Black Boxes
ein falsches Ergebnis liefern. Tritt weder A noch B ein, so wissen wir, dass der Algorithmus
korrekt ausgibt, dass die Polynome ungleich sind. Wir können die Fehlerwahrscheinlichkeit
mit Hilfe der Union Bound wie folgt abschätzen:
k
+ 0,1 ≤ 0,11.
100d
Abstrakt gesehen, haben wir zwei Fehlerereignisse identifiziert und gezeigt, dass der Algorithmus korrekt arbeitet, wenn keins dieser Ereignisse eintritt. Dann haben wir die Wahrscheinlichkeit jedes einzelnen Ereignisses nach oben abgeschätzt und die so erhaltenen Fehlerwahrscheinlichkeiten aufsummiert. Dies ist eine allgemeine Technik, die wir bei der Analyse
komplizierterer Algorithmen noch oft in dieser Vorlesung sehen werden. In diesem einfachen
Beispiel hätten wir die Fehlerwahrscheinlichkeit natürlich auch genau ausrechnen können,
aber oft sind die Analysen so kompliziert, dass eine genaue Rechnung nicht möglich ist.
Pr(A ∪ B) ≤ Pr(A) + Pr(B) = Pr1 ({y1 , . . . , yk }) + Pr2 ({F }) =
1.2
Unabhängigkeit und bedingte Wahrscheinlichkeit
Wir haben angenommen, dass die Black Boxes unabhängig von der Wahl von x das richtige Ergebnis mit Wahrscheinlichkeit 0,9 zurückliefern. Wir definieren nun allgemein, was es
bedeutet, dass zwei Ereignisse in einem Wahrscheinlichkeitsraum unabhängig sind.
1.2. Unabhängigkeit und bedingte Wahrscheinlichkeit
9
Definition 1.3. Sei (Ω, Pr) ein diskreter Wahrscheinlichkeitsraum. Wir nennen zwei Ereignisse A ⊆ Ω und B ⊆ Ω unabhängig, wenn Pr(A ∩ B) = Pr(A) · Pr(B) gilt. Wir nennen
eine Folge A1 , . . . , Ak von Ereignissen unabhängig, wenn für jede Teilmenge I ⊆ {1, . . . , k}
!
Pr
\
i∈I
Ai
=
Y
Pr(Ai )
i∈I
gilt. Die Folge A1 , . . . , Ak heißt paarweise unabhängig, wenn für alle i 6= j die Ereignisse Ai
und Aj unabhängig sind.
Intuitiv bedeutet die Unabhängigkeit zweier Ereignisse A und B, dass Informationen über
das Eintreten oder Nichteintreten von A keinerlei Konsequenzen für B haben. Zum besseren
Verständnis geben wir einige Beispiele an.
• Sei Ω = {(i, j) | i, j ∈ {1, . . . , 6}} und Pr(i, j) = 1/36 für alle (i, j) ∈ Ω die Modellierung zweier unabhängiger Würfe eines Würfels. Intuitiv hat das Ergebnis des
ersten Wurfes keinerlei Konsequenzen für das Ergebnis des zweiten Wurfes. Bezeichne A beispielsweise das Ereignis, dass der erste Wurf ein gerades Ergebnis zurückliefert, und bezeichne B das Ereignis, dass der zweite Wurf mindestens den Wert drei
zurückliefert. Dann rechnet man leicht nach, dass Pr(A) = 1/2, Pr(B) = 2/3 und
Pr(A ∩ B) = 1/3 = Pr(A) · Pr(B) gelten.
• Seien Ω und Pr wie in obigem Beispiel gewählt. Sei A das Ereignis, dass die Summe
der gewürfelten Zahlen gleich 6 ist, und sei B das Ereignis, dass der erste Würfel die
Zahl 3 zeigt. Intuitiv sind diese Ereignisse nicht unabhängig (als Summe kann nur 6
herauskommen, wenn im ersten Wurf nicht bereits eine 6 geworfen wurde). Tatsächlich
5
gelten Pr(A) = 36
, Pr(B) = 16 und
Pr(A ∩ B) =
5
1
> Pr(A) · Pr(B) =
,
36
216
was auch formal die Abhängigkeit der Ereignisse zeigt. Als Übung sollte der Leser sich
überlegen, wie sich die o. g. Wahrscheinlichkeiten ergeben.
• Für eine endliche Folge von Wahrscheinlichkeitsräumen (Ω1 , Pr1 ), . . . , (Ωn , Prn ) können wir durch Ω = Ω1 × . . . × Ωn und Pr(x1 , . . . , xn ) = Pr1 (x1 ) · . . . · Prn (xn ) wie
oben den Produktraum definieren. Ereignisse, die sich auf unterschiedliche Komponenten des Produktraumes beziehen, sind stets unabhängig. Sei beispielsweise n = 2 und
seien A ⊆ Ω1 und B ⊆ Ω2 beliebig, dann sind die Ereignisse A × Ω2 und Ω1 × B
unabhängig.
Durch unabhängige Wiederholungen kann man oft die Erfolgswahrscheinlichkeit von randomisierten Algorithmen erhöhen. Dazu betrachten wir noch einmal in dem einfachen Modell
mit fehlerfrei arbeitenden Black Boxes den Algorithmus zum Testen, ob zwei Polynome gleich
sind. Wir konzentrieren uns direkt auf den interessanten Fall, dass die Polynome p und q
nicht identisch sind. Anstatt den Algorithmus nur einmal auszuführen, führen wir ihn nun
n-mal unabhängig hintereinander aus. Das bedeutet, wir wählen unabhängig voneinander n
Stellen x1 , . . . , xn (diese sind nicht notwendigerweise verschieden und können auch zufällig
übereinstimmen), an denen wir das Polynom p − q auswerten. Ist mindestens eine von diesen
Stellen keine Nullstelle, so geben wir aus, dass die Polynome nicht gleich sind. Nur wenn
all diese Stellen Nullstellen sind, geben wir aus, dass die Polynome gleich sind. Sei Ai das
10
1. Grundlagen der Wahrscheinlichkeitstheorie
Ereignis, dass die Stelle xi eine Nullstelle von p − q ist. Aufgrund der Unabhängigkeit der
Ereignisse gilt
Pr(Algorithmus gibt fälschlicherweise aus, dass p und q übereinstimmen)
= Pr(A1 ∩ . . . ∩ An ) = Pr(A1 ) · . . . · Pr(An ) =
1
100
n
.
Die Fehlerwahrscheinlichkeit sinkt also exponentiell mit der Anzahl der unabhängigen Versuche. Um die unabhängige Wiederholung des Algorithmus formal zu modellieren, kann man
den Wahrscheinlichkeitsraum (Ω, Pr) nehmen, der die einmalige Ausführung des Algorithmus beschreibt, und den Produktraum mit Ergebnismenge Ω0 = Ω × . . . × Ω bilden. Wir
werden in Zukunft aber nicht mehr jeden Wahrscheinlichkeitsraum, den wir zur Analyse eines Algorithmus benötigen, formal beschreiben, da sich die Wahrscheinlichkeitsräume in der
Regel implizit aus der Beschreibung der Algorithmen ergeben.
Für die Unabhängigkeit war es wichtig, dass mehrere Wiederholungen des Algorithmus auch
die gleichen Stellen xi und xj wählen können. Wenn wir in der zweiten Ausführung des
Algorithmus nur noch aus denjenigen Stellen uniform zufällig eine wählen, die nicht im ersten
Schritt gewählt wurden, dann erzeugen wir Abhängigkeiten zwischen den Wiederholungen
und obige Analyse ist nicht mehr korrekt. Wir lernen nun mit bedingten Wahrscheinlichkeiten
ein Hilfsmittel kennen, mit dem wir auch dieses Szenario analysieren können.
Definition 1.4. Sei (Ω, Pr) ein diskreter Wahrscheinlichkeitsraum. Ferner seien A ⊆ Ω
und B ⊆ Ω zwei Ereignisse mit Pr(B) > 0. Wir bezeichnen mit
Pr(A | B) =
Pr(A ∩ B)
Pr(B)
die bedingte Wahrscheinlichkeit von A gegeben B.
Auch dieses Konzept illustrieren wir zunächst an einigen Beispielen.
• Wir betrachten zwei unabhängige Würfe eines Würfels. Sei A das Ereignis, dass der
erste Wurf 6 ergibt, und sei B das Ereignis, dass die Summe der gewürfelten Zahlen
genau 10 ist. Es gilt Pr(A) = 1/6 und intuitiv sollte Ereignis A wahrscheinlicher
werden, wenn wir schon wissen, dass B eintritt. Da das Eintreten von B ausschließt,
dass der erste Wurf eine Zahl kleiner oder gleich 3 liefert, sind nur noch die Zahlen 4, 5
und 6 übrig. Somit sollte intuitiv die Wahrscheinlichkeit von A ein Drittel sein, wenn
wir schon wissen, dass B eintritt. Tatsächlich gilt
Pr(A | B) =
Pr(A ∩ B)
1/36
1
=
= .
Pr(B)
3/36
3
• Seien A und B zwei unabhängige Ereignisse mit Pr(B) > 0. Dann gilt
Pr(A | B) =
Pr(A ∩ B)
Pr(A) · Pr(B)
=
= Pr(A).
Pr(B)
Pr(B)
Dies entspricht unserer Intuition, dass bei zwei unabhängigen Ereignissen das Eintreten
des einen Ereignis keine Konsequenzen für das Eintreten des anderen besitzt.
Wir analysieren nun wieder obigen Algorithmus, der das Polynom p−q an n Stellen x1 , . . . , xn
auswertet. Der einzige Unterschied ist, dass wir diesmal davon ausgehen, dass alle Stellen
1.3. Anwendungen
11
verschieden sind. Dies wird erreicht, indem der Algorithmus die Stelle x1 uniform zufällig aus
der Menge {1, . . . , 100d} wählt, die Stelle x2 uniform zufällig aus der Menge {1, . . . , 100d} \
{x1 } und so weiter. Wir gehen davon aus, dass n ≤ 100d gilt. Sei nun wieder Ai das Ereignis,
dass es sich bei xi um eine Nullstelle von p − q handelt. Nach wie vor möchten wir die
Fehlerwahrscheinlichkeit Pr(A1 ∩ . . . ∩ An ) abschätzen. Mit Hilfe von Definition 1.4 können
wir diese wie folgt schreiben:
Pr(A1 ∩ . . . ∩ An ) = Pr(An | A1 ∩ . . . ∩ An−1 ) · Pr(A1 ∩ . . . ∩ An−1 ).
Mehrmalige Anwendung der Definition liefert
Pr(A1 ∩ . . . ∩ An ) = Pr(A1 ) · Pr(A2 | A1 ) · Pr(A3 | A1 ∩ A2 ) · . . . · Pr(An | A1 ∩ . . . ∩ An−1 ).
Betrachten wir einen beliebigen Faktor Pr(Ai | A1 ∩ . . . ∩ Ai−1 ) in dieser Formel. Wenn
wir bereits wissen, dass die Ereignisse A1 , . . . , Ai−1 eingetreten sind, so wissen wir, dass
x1 , . . . , xi−1 Nullstellen von p − q sind. Die Stelle xi wird uniform zufällig aus {1, . . . , 100d} \
{x1 , . . . , xi−1 } gewählt. Diese Menge enthält genau 100d − (i − 1) Elemente, von denen
höchstens d − (i − 1) Nullstellen sind. Also können wir die Wahrscheinlichkeit von Ai gegeben
d−(i−1)
A1 ∩ . . . ∩ Ai−1 durch 100d−(i−1)
abschätzen. Insgesamt ergibt sich somit
Pr(A1 ∩ . . . ∩ An ) ≤
n
Y
d − (i − 1)
≤
100d
− (i − 1)
i=1
1
100
n
.
Die Fehlerwahrscheinlichkeit ist also höchstens so groß wie bei unabhängiger Wiederholung.
Für n ≥ 2 ist sie sogar echt kleiner, was der Leser sich auch intuitiv klar machen sollte.
1.3
1.3.1
Anwendungen
Verifikation von Matrixprodukten
Wir stellen nun einen randomisierten Algorithmus vor, der testet, ob AB = C für drei gegebene n × n-Matrizen A, B und C gilt. Der Einfachheit halber gehen wir davon aus, dass
wir mit ganzen Zahlen modulo 2 rechnen. Natürlich könnte man das Matrixprodukt AB
ausrechnen und mit C vergleichen, was aber selbst mit dem besten bekannten Algorithmus
zum Multiplizieren zweier Matrizen eine Laufzeit von Θ(n2.376 ) benötigen würde. Wir wollen
Randomisierung nutzen, um den Test effizienter durchführen zu können, und schlagen folgenden einfachen Algorithmus vor: Wähle r = (r1 , . . . , rn ) ∈ {0, 1}n uniform zufällig und teste,
ob ABr und Cr übereinstimmen. Wenn nein, gib AB 6= C aus; wenn ja, gib AB = C aus.
Erfolgt die Berechnung von ABr = A(Br) durch zwei Matrix-Vektor-Produkte, so beträgt
die Gesamtlaufzeit des Algorithmus Θ(n2 ), wobei wir annehmen, dass ein uniform zufälliger
Vektor r in Zeit O(n) erzeugt werden kann.
Genau wie beim ersten Test, ob zwei Polynome gleich sind, handelt es sich auch hier um
einen Algorithmus mit einseitigem Fehler. Ist AB = C, so wird der Algorithmus das stets
korrekt ausgeben. Seine Ausgabe ist nur fehlerhaft, falls AB 6= C, aber ABr = Cr für den
zufällig gewählten Vektor r gilt. Die Wahrscheinlichkeit hierfür können wir mit dem folgenden
Theorem abschätzen.
Theorem 1.5. Seien A, B, C ∈ {0, 1}n×n beliebige Matrizen mit AB 6= C und sei r ∈ {0, 1}n
uniform zufällig gewählt. Dann gilt
1
Pr(ABr = Cr) ≤ ,
2
12
1. Grundlagen der Wahrscheinlichkeitstheorie
wenn wir im Körper F2 (also modulo 2) rechnen.
Beweis. Einen Vektor r = (r1 , . . . , rn ) uniform zufällig aus der Menge {0, 1}n zu wählen, ist
äquivalent dazu, die Komponenten r1 , . . . , rn unabhängig voneinander und jeweils uniform
zufällig aus der Menge {0, 1} zu wählen, da in beiden Fällen jeder Vektor r ∈ {0, 1}n eine
Wahrscheinlichkeit von 2−n hat, gewählt zu werden.
Für die Matrix D = AB − C 6= 0 gilt Dr = 0n genau dann, wenn ABr = Cr gilt. Da D 6= 0
gilt, muss es mindestens einen Eintrag ungleich 0 geben. Da wir in dem Körper F2 rechnen,
ist dieser Eintrag gleich 1. Zunächst permutieren wir die Zeilen und Spalten so, dass dieser
Eintrag ohne Beschränkung der Allgemeinheit der Eintrag d11 ist. Ist der Vektor r so gewählt,
dass Dr = 0n gilt, so gilt insbesondere
n
X
d1i ri = 0
i=1
und somit
r1 = −
n
X
d1i ri .
i=2
Wir können somit die Wahrscheinlichkeit, die uns interessiert, wie folgt abschätzen:
Pr(ABr = Cr) ≤ Pr r1 = −
n
X
d1i ri .
(1.1)
i=2
Die Koeffizienten d12 , . . . , d1n ∈ {0, 1} sind durch die Wahl von A, B und C bestimmt.
Jeder der Werte r1 , . . . , rn wird unabhängig und uniform zufällig aus {0, 1} gewählt. Um die
Wahrscheinlichkeit in (1.1) abzuschätzen, wenden wir eine Technik an, die in vielen Analysen
hilfreich ist. Wir reduzieren den Zufall in dem Vektor r, indem wir davon ausgehen, dass
P
die Werte r2 , . . . , rn bereits gewählt wurden. Dann steht die Summe − ni=2 d1i ri fest und
nimmt entweder den Wert 0 oder den Wert 1 an. Aufgrund der Unabhängigkeit der ri hat die
Wahl der r2 , . . . , rn keinerlei Auswirkungen auf r1 . Die Wahrscheinlichkeit, dass r1 gerade
den festen Wert der Summe annimmt, ist somit genau 1/2.
Um diese Argumentation zu formalisieren, benötigen wir die folgende Formel der totalen
Wahrscheinlichkeit.
Theorem 1.6. Sei (Ω, Pr) ein diskreter Wahrscheinlichkeitsraum und sei B1 , . . . , Bn eine
Partition von Ω in paarweise disjunkte Ereignisse, d. h. B1 ∪ . . . ∪ Bn = Ω und Bi ∩ Bj = ∅
für i 6= j. Sei ferner A ⊆ Ω ein beliebiges Ereignis. Dann gilt
Pr(A) =
n
X
i=1
Pr(A ∩ Bi ) =
n
X
Pr(A | Bi ) · Pr(Bi ).
i=1
Ist Pr(Bi ) = 0 für ein i, so ist die bedingte Wahrscheinlichkeit Pr(A | Bi ) nicht definiert.
Wir setzen dann das Produkt Pr(A | Bi ) · Pr(Bi ) gleich Null.
Beweis. Die erste Gleichheit im Theorem folgt direkt aus der σ-Additivität der Wahrscheinlichkeit und der Tatsache, dass die Ereignisse A ∩ Bi paarweise disjunkt sind und ihre
Vereinigung A ergibt. Die zweite Gleichheit folgt direkt aus der Definition der bedingten
Wahrscheinlichkeit.
1.3. Anwendungen
13
In der Anwendung der Formel der totalen Wahrscheinlichkeit auf die Analyse des AlgorithP
mus entspricht A dem Ereignis, dass r1 = − ni=2 d1i ri gilt, und wir definieren für jede
mögliche Realisierung x = (x2 , . . . , xn ) ∈ {0, 1}n−1 des Vektors (r2 , . . . , rn ) ein Ereignis Bx .
Damit ergibt sich
Pr r1 = −
n
X
d1i ri
i=2
X
=
Pr
r1 = −
(x2 ,...,xn )∈{0,1}n−1
X
=
=
(x2 ,...,xn )∈{0,1}n−1
d1i xi ∩ (r2 , . . . , rn ) = (x2 , . . . , xn )
i=2
Pr r1 = −
(x2 ,...,xn )∈{0,1}n−1
X
n
X
n
X
d1i xi · Pr (r2 , . . . , rn ) = (x2 , . . . , xn )
i=2
1
· Pr (r2 , . . . , rn ) = (x2 , . . . , xn )
2
1
= .
2
Für die zweite Gleichheit haben wir die Unabhängigkeit der Komponenten ausgenutzt.
Der Algorithmus, den wir entworfen haben, liefert für AB = C stets das korrekte Ergebnis.
Für AB 6= C liefert er mit Wahrscheinlichkeit höchstens 1/2 das falsche Ergebnis. Genau
wie bei dem Test, ob zwei Polynome gleich sind, können wir auch hier die Fehlerwahrscheinlichkeit wieder dadurch verkleinern, dass wir den Test mehrfach unabhängig wiederholen.
Analog erreichen wir durch eine k-fache Wiederholung eine exponentiell kleine Fehlerwahrscheinlichkeit von 1/2k .
1.3.2
Berechnung eines minimalen Schnittes
In diesem Abschnitt betrachten wir das Problem, einen minimalen Schnitt eines Graphen
zu berechnen. Sei dazu ein ungerichteter und ungewichteter Graph G = (V, E) gegeben
und seien n = |V | ≥ 2 und m = |E|. Wir gehen davon aus, dass G zusammenhängend
ist. Ein Schnitt dieses Graphen ist eine Teilmenge E 0 ⊆ E der Kanten, nach deren Entfernung der Graph G in mindestens zwei Zusammenhangskomponenten zerfällt. Ein minimaler
Schnitt ist ein Schnitt mit kleinstmöglicher Kardinalität. Wir haben das Problem, einen minimalen Schnitt eines Graphen zu berechnen, bereits im Grundstudium im Zusammenhang
mit Flussproblemen kennengelernt. Tatsächlich kann man mit Hilfe von Algorithmen für
Flussprobleme auch minimale Schnitte bestimmen. Der beste bekannte deterministische Algorithmus zur Bestimmung minimaler Schnitte besitzt eine Laufzeit von O(nm log(n2 /m)).
Wir lernen nun zwei randomisierte Algorithmen kennen, die einfacher als der beste deterministische Algorithmus sind. Der zweite dieser Algorithmen ist zudem deutlich effizienter und
erreicht eine Laufzeit von O(n2 (log n)O(1) ), wobei der genaue Exponent des Logarithmus von
der gewünschten Fehlerwahrscheinlichkeit abhängt.
Beide randomisierten Algorithmen beruhen auf Kontraktionen von Kanten. Eine solche Kontraktion ist eine Operation, die einen ungerichteten Multigraphen in einen anderen ungerichteten Multigraphen überführt, wobei ein Multigraph ein Graph ist, bei dem zwischen
demselben Paar von Knoten mehrere Kanten verlaufen dürfen. Ist G = (V, E) ein Multigraph und ist e = {u, v} ∈ E, so ergibt die Kontraktion Contract(G, e) den Multigraphen G0 = (V 0 , E 0 ) mit der Knotenmenge V 0 = V \ {u, v} ∪ {w}, wobei w ein neuer Knoten
14
1. Grundlagen der Wahrscheinlichkeitstheorie
ist, der die beiden Knoten u und v ersetzt. Die Kantenmenge E 0 enthält alle Kanten von E,
die weder zu u noch zu v inzident sind. Alle Kanten, die in E zwischen u und v verlaufen, sind
in E 0 nicht mehr enthalten. Jede Kante {u, x} ∈ E oder {v, x} ∈ E mit x 6= u und x 6= v wird
in E 0 durch die Kante {w, x} ersetzt. Wir können uns das so vorstellen, dass die Kontraktion
bewirkt, dass die Knoten u und v zu einem gemeinsamen Knoten w verschmelzen. Kanten
zwischen u und v fallen hierdurch weg und alle Kanten, die vorher inzident zu u oder v
waren, sind nun stattdessen zu w inzident. In der folgenden Grafik ist links ein Beispiel für
einen Multigraphen G. Durch Kontraktion der Kante zwischen den Knoten 2 und 4 erhält
man den rechten Multigraphen mit neuem Knoten 2, 4.
1
2
1
2, 4
3
4
3
Der Contract-Algorithmus
Der erste randomisierte Algorithmus zur Berechnung eines minimalen Schnittes, welchen
wir Contract-Algorithmus nennen werden, startet mit dem Graphen G0 = G = (V, E) und
erzeugt daraus eine Folge G1 , . . . , Gn−2 von Multigraphen. Dabei wird jeder Multigraph Gi+1
aus Gi erzeugt, indem eine uniform zufällige Kante von Gi ausgewählt und kontrahiert wird.
Dabei speichert der Algorithmus für jeden Knoten, aus welchen Knoten des ursprünglichen
Graphen er entstanden ist. Wir gehen davon aus, dass V = {1, . . . , n} gilt und weisen in dem
Graphen G0 jedem Knoten k die Menge {k} als Label zu. Wird nun in einem Schritt eine
Kante des Graphen Gi kontrahiert, deren Endpunkte die Label A und B haben, so erhält
der neue Knoten des Graphen Gi+1 das Label A ∪ B.
Mit jeder Kontraktion reduziert sich die Anzahl an Knoten um eins. Das bedeutet, dass
der Graph Gn−2 , den der Algorithmus erzeugt, genau zwei Knoten enthält. Sind A und B
die Label der beiden übriggebliebenen Knoten, so stellt die Konstruktion sicher, dass A
und B eine disjunkte Partition der Menge {1, . . . , n} aller Knoten sind. Die Ausgabe des
Algorithmus besteht nun aus der Menge der Kanten, die in G zwischen A und B verlaufen:
{{u, v} ∈ E | u ∈ A und v ∈ B}.
Die folgende Grafik zeigt eine beispielhafte Ausführung des Algorithmus, wobei in jedem
Schritt die zu kontrahierende Kante gestrichelt gezeichnet ist.
G0
G1
G2
G3
1
1
1
1
2
3
2
3
2
4
5
6
4, 6
5
1, 2
2
3, 4, 6
3, 4, 5, 6
5
G4
3, 4, 5, 6
1.3. Anwendungen
15
Die Ausgabe besteht aus genau den Kanten, die in G zwischen den Knotenmengen {1, 2}
und {3, 4, 5, 6} verlaufen. Man überprüft in diesem Beispiel leicht, dass nach dem Entfernen
dieser Kanten der Graph in zwei Zusammenhangskomponenten zerfällt. Bei diesem Beispiel
zeigt sich, dass die uniform zufällige Auswahl einer Kante des Multigraphen nicht gleichbedeutend damit ist, in jedem Schritt ein zufälliges Knotenpaar, zwischen dem eine Kante
verläuft, zu verschmelzen. Betrachten wir den Übergang von G3 zu G4 , so sehen wir zum Beispiel, dass es zwei parallele Kanten zwischen den Knoten 2 und 3, 4, 5, 6 gibt, jedoch nur eine
Kante zwischen den Knoten 1 und 2. Also ist die Verschmelzung der Knoten 2 und 3, 4, 5, 6
doppelt so wahrscheinlich wie die Verschmelzung der Knoten 1 und 2. Wir beweisen nun
allgemein, dass der Contract-Algorithmus stets einen Schnitt des Graphen ausgibt und dass
dies mit einer gewissen Wahrscheinlichkeit sogar ein minimaler Schnitt ist.
Theorem 1.7. Die Ausgabe des Contract-Algorithmus ist immer ein Schnitt des Graphen G
2
und mit Wahrscheinlichkeit mindestens n(n−1)
ist es ein minimaler Schnitt.
Beweis. Der Beweis, dass der Algorithmus stets einen Schnitt ausgibt, ist einfach. Mittels
einer Invariante zeigt man, dass in jedem Multigraphen Gi , den der Algorithmus erzeugt, die
Label der Knoten eine disjunkte Partition der Knotenmenge des ursprünglichen Graphen
bilden und niemals ein Label der leeren Menge entspricht. Insbesondere gilt dies für den
letzten Graphen Gn−2 mit zwei Knoten. Seien A und B die Label dieser Knoten, dann
gilt A ∪ B = V und A ∩ B = ∅. Nach der Entfernung aller Kanten, die zwischen den
Mengen A und B verlaufen, kann es in G zwischen keinem Paar von Knoten u ∈ A und v ∈ B
einen Weg geben. Damit ist gezeigt, dass die Entfernung dieser Kanten den Graphen in
mindestens zwei Zusammenhangskomponenten zerlegt. Auf analoge Art und Weise kann man
sogar nachweisen, dass jeder Schnitt eines Graphen Gi einem Schnitt gleicher Kardinalität des
Ursprungsgraphen entspricht. Insbesondere enthält keiner der Graphen Gi einen kleineren
Schnitt als G.
Um die Wahrscheinlichkeit zu analysieren, dass die Ausgabe des Algorithmus ein minimaler
Schnitt ist, fixieren wir einen beliebigen minimalen Schnitt C ⊆ E und rechnen die Wahrscheinlichkeit aus, dass der Algorithmus genau diesen Schnitt C ausgibt. Bezeichne k die
Größe des minimalen Schnittes, also die Anzahl der Kanten in C. Da G zusammenhängend
ist, gilt k ≥ 1. Die erste wichtige Erkenntnis ist, dass der Graph G mindestens nk/2 Kanten
enthalten muss. Wäre dies nicht so, so gäbe es einen Knoten mit einem Grad echt kleiner
als k. Dann würden aber alle zu diesem Knoten inzidenten Kanten zusammen einen Schnitt
des Graphen bilden, der im Widerspruch zur Wahl von C weniger als k Kanten enthält.
Sei die Knotenmenge S ⊆ V mit S 6= ∅ so gewählt, dass in dem Graphen (V, E \ C) keine
Kanten zwischen den Knotenmengen S und V \ S verlaufen. Da C ein Schnitt des Graphen
ist, muss es eine solche Menge S geben. Wir können sogar davon ausgehen, dass C aus genau
den Kanten von E besteht, die zwischen den Mengen S und V \ S verlaufen. Würde C noch
Kanten enthalten, die innerhalb von S oder innerhalb von V \ S verlaufen, so wäre es kein
minimaler Schnitt. Diese Notationen sind in der folgenden Abbildung illustriert.
S
∈C
∈C
V \S
16
1. Grundlagen der Wahrscheinlichkeitstheorie
Solange der Algorithmus zur Kontraktion nur Kanten auswählt, die entweder innerhalb von
der Menge S verlaufen oder die innerhalb von der Menge V \ S verlaufen, bleiben die Kanten
aus dem Schnitt C im Graphen enthalten. Sobald jedoch eine Kante aus dem Schnitt C
kontrahiert wird, kann der Algorithmus am Ende nicht mehr C ausgeben. Der ContractAlgorithmus gibt also genau dann am Ende die Menge C aus, wenn er bei den n − 2 Kontraktionen niemals eine Kante aus C auswählt. Für i ∈ {1, . . . , n − 2} bezeichne Ai das
Ereignis, dass beim Übergang von Gi−1 zu Gi eine Kante kontrahiert wird, die nicht zu der
Menge C gehört. Uns interessiert die Wahrscheinlichkeit, dass alle Ai eintreten. Diese können
wir mit Hilfe von bedingten Wahrscheinlichkeiten wie folgt ausdrücken:
Pr(A1 ∩ . . . ∩ An−2 ) = Pr(A1 ) · Pr(A2 | A1 ) · . . . · Pr(An−2 | A1 ∩ . . . ∩ An−3 ).
Die Wahrscheinlichkeit von A1 können wir mit dem oben Gesagten leicht abschätzen. Da es k
Kanten in C und mindestens nk/2 in E gibt, ist die Wahrscheinlichkeit, dass im ersten Schritt
eine Kante aus C kontrahiert wird, höchstens |C|/|E| ≤ 2/n. Demnach ist Pr(A1 ) ≥ 1−2/n.
Um die bedingte Wahrscheinlichkeit von Ai gegeben A1 ∩. . .∩Ai−1 abzuschätzen, betrachten
wir die Situation nach den ersten i − 1 Schritten unter der Bedingung, dass in keinem von
diesen eine Kante aus C entfernt wurde. Wenn wir ausnutzen, dass es in dem Graphen Gi−1
keinen Schnitt mit weniger als k Kanten geben kann, dann können wir die Wahrscheinlichkeit
wieder analog abschätzen. Der Graph Gi−1 = (Vi−1 , Ei−1 ) enthält genau n − i + 1 Knoten,
die jeweils mindestens Grad k haben. Somit gibt es insgesamt mindestens (n − i + 1)k/2
Kanten in Gi−1 und davon sind unter der Bedingung A1 ∩ . . . ∩ Ai−1 immer noch k viele
in C. Somit gilt
Pr(Ai | A1 ∩ . . . ∩ Ai−1 ) = 1 −
n−i−1
|C|
2
≥1−
=
.
|Ei−1 |
n−i+1
n−i+1
Insgesamt ergibt sich nun wie gewünscht
Pr(Contract-Algorithmus berechnet minimalen Schnitt)
≥ Pr(Contract-Algorithmus gibt C aus)
= Pr(A1 ) · Pr(A2 | A1 ) · . . . · Pr(An−2 | A1 ∩ . . . ∩ An−3 )
n−3
n−2
≥
n
n−1
2
=
.
n(n − 1)
n−4
3
...
n−2
5
2
4
1
3
Einen Algorithmus mit einer Erfolgswahrscheinlichkeit von Θ(1/n2 ) würden wir natürlich in
der Praxis nicht verwenden. Deshalb nutzen wir auch hier wieder die Methode der unabhängigen Wiederholungen, um die Erfolgswahrscheinlichkeit zu erhöhen. Wir führen deshalb
den Contract-Algorithmus (cn2 /2)-mal unabhängig voneinander aus und geben zum Schluss
einen kleinsten Schnitt zurück, den wir in einer dieser Ausführungen erhalten haben. Dabei ist c > 0 eine Konstante, die wir beliebig wählen können. Die Wahrscheinlichkeit, dass
2
eine einzelne Ausführung keinen minimalen Schnitt zurückliefert, ist höchstens 1 − n(n−1)
.
Dementsprechend ist die Wahrscheinlichkeit, dass keine der Ausführungen einen minimalen
Schnitt zurückliefert, höchstens
2
1−
n(n − 1)
cn2 /2
2
1− 2
n
≤
n2 /2 !c
<
1
,
ec
1.3. Anwendungen
17
wobei wir ausgenutzt haben, dass (1−1/`)` < 1/e für alle ` > 1 gilt. Eine einzelne Ausführung
des Contract-Algorithmus benötigt bei geschickter Implementierung eine Laufzeit von Θ(n2 ).
Wiederholen wir den Algorithmus Θ(n2 ) oft, um auf eine konstante Fehlerwahrscheinlichkeit
zu kommen, so ergibt sich eine Gesamtlaufzeit von Θ(n4 ).
Der FastCut-Algorithmus
Wir werden den Contract-Algorithmus nun so modifizieren, dass er auf Kosten einer etwas
höheren Laufzeit eine deutlich höhere Erfolgswahrscheinlichkeit erzielt. Der in diesem Abschnitt vorgestellte Algorithmus ist auch in Kapitel 10.2 von [6] zu finden. Schaut man sich
die Abschätzung der Erfolgswahrscheinlichkeit des Contract-Algorithmus an, so stellt man
fest, dass es am Anfang noch relativ wahrscheinlich ist, keine Kante von C zu kontrahieren,
wohingegen es im letzten Schritt sogar mit Wahrscheinlichkeit 2/3 passieren kann, dass eine
Kante von C kontrahiert wird. Anstatt nun den Algorithmus einfach mehrfach komplett zu
wiederholen, so wie wir es oben getan haben, erscheint es sinnvoll, die Kontraktionen gegen Ende des Algorithmus häufiger zu wiederholen als die Kontraktionen am Anfang. Auf
diese Weise kann dem Fallen der Erfolgswahrscheinlichkeit Pr(Ai ) für steigendes i entgegen
gewirkt werden.
Diese Idee formalisieren wir in dem folgenden rekursiven Algorithmus, der den Graphen G
zunächst zweimal unabhängig voneinander
√ solange kontrahiert, bis die Knotenanzahl um
einen konstanten Faktor auf ungefähr n/ 2 geschrumpft ist. Für die beiden Multigraphen,
die man so erhält, wird dann rekursiv der gleiche Algorithmus noch einmal aufgerufen und
dann das bessere Ergebnis der beiden rekursiven Aufrufe zurückgeliefert, wobei die beiden rekursiven Aufrufe unabhängig sind. In dem folgenden Pseudocode wird die Funktion
Contract(G, t) benutzt. Dabei ist G stets ein Multigraph und t ist eine Zahl. Diese Funktion
erzeugt einen neuen Multigraphen, indem sie solange eine uniform zufällige Kante auswählt
und kontrahiert, bis die Knotenanzahl genau t ist. Der im letzten Abschnitt betrachtete
Contract-Algorithmus entspricht also dem Aufruf Contract(G, 2). Wir gehen davon aus, dass
unterschiedliche Ausführungen von Contract(G, t) unabhängig voneinander erfolgen.
FastCut(G = (V, E))
1. if n := |V | ≤ 6
2.
Berechne einen minimalen Schnitt C von G mittels Brute Force.
3.
return C;
4. else
5.
√
t := d1 + n/ 2e;
6.
H1 = Contract(G, t); H2 = Contract(G, t);
7.
C1 = FastCut(H1 ); C2 = FastCut(H2 );
8.
return C1 falls |C1 | ≤ |C2 | und C2 sonst;
Der Grund für das Abbrechen der Rekursion bei n ≤ 6 ist, dass in diesem Fall t nicht mehr
kleiner als n ist. Bei einem Graphen mit höchstens 6 Knoten können wir aber in konstanter
Zeit alle möglichen Schnitte generieren und so in konstanter Zeit einen minimalen Schnitt
finden. Interessanter ist es, die Rekursion an sich zu analysieren. Dazu überlegen wir uns
zunächst intuitiv einige Eigenschaften des Rekursionsbaumes, bevor wir sie formal nachweisen. Alle Aufrufe, die sich auf derselben Ebene des Rekursionsbaumes befinden, erhalten als
18
1. Grundlagen der Wahrscheinlichkeitstheorie
Eingabe Multigraphen mit
Knotenanzahl. Diese Anzahl sinkt exponentiell mit der
√ derselben
i
Tiefe und ist in etwa n/( 2) für alle Teilprobleme mit Tiefe i im Rekursionsbaum. Da die
Blätter des Rekursionsbaumes Teilprobleme mit 6 oder weniger Knoten darstellen, beträgt
die Tiefe des Rekursionsbaumes insgesamt in etwa
log√2
n
6
=
log2 (n)
√ − log√2 (6) = 2 log2 (n) − Θ(1).
log2 ( 2)
Damit ergibt sich die Anzahl an Blättern zu Θ(n2 ). Das bedeutet, dass der Algorithmus
FastCut insgesamt Θ(n2 ) verschiedene Schnitte erzeugt und den besten davon zurückgibt.
Das ist sehr ähnlich zu den Θ(n2 ) unabhängigen Wiederholungen des Contract-Algorithmus,
die wir im vorangegangenen Abschnitt vorgeschlagen haben. Im Unterschied zum ContractAlgorithmus sind die Kontraktionssequenzen bei FastCut jedoch nicht unabhängig. Schnitte,
die in zwei Blättern der Rekursion erzeugt werden, teilen sich alle Kontraktionen, die in
gemeinsamen Vorfahren im Rekursionsbaum durchgeführt wurden. Wie gewünscht werden
somit die anfänglichen Kontraktionen weniger oft wiederholt als die späteren. Die Konsequenz ist, dass der Algorithmus schneller ist als die Θ(n2 )-fache Wiederholung des ContractAlgorithmus, da Zwischenergebnisse wiederverwendet werden. Auf der anderen Seite sinkt
durch die Abhängigkeiten aber auch die Erfolgswahrscheinlichkeit, dass unter den Θ(n2 ) betrachteten Schnitten ein minimaler dabei ist. Wir werden nun sowohl die Laufzeit als auch
die Erfolgswahrscheinlichkeit genauer analysieren.
Theorem 1.8. Der FastCut-Algorithmus besitzt eine Laufzeit von O(n2 log n).
Beweis. Wir werden im Folgenden sowohl über Knoten des Multigraphen G als auch über
Knoten des Rekursionsbaumes sprechen. Aus dem Kontext wird aber stets hervorgehen,
welche Art von Knoten gemeint ist. Wir geben zunächst eine Rekursionsformel für die Laufzeit T (n) des FastCut-Algorithmus auf Multigraphen mit n Knoten an. Wir haben oben
gesagt, dass der Contract-Algorithmus mit einer geschickten Implementierung eine Laufzeit
von Θ(n2 ) besitzt. Da in den einzelnen Knoten des Rekursionsbaumes lediglich zwei Ausführungen des Contract-Algorithmus erfolgen, die auch noch vorzeitig abgebrochen werden,
sobald eine bestimmte Knotenanzahl erreicht ist, beträgt die Laufzeit für jeden Knoten des
Rekursionsbaumes ebenfalls nur O(n2 ). Berücksichtigt
man dann noch die beiden rekursiven
√
Aufrufe auf Multigraphen mit jeweils d1 + n/ 2e Knoten, so erhält man für n ≥ 7 und
eine geeignete Konstante c die folgende rekursive Abschätzung für die Laufzeit des FastCutAlgorithmus:
!
n
T (n) ≤ 2 · T 1 + √
+ cn2 .
2
Für n ≤ 6 gilt T (n) = Θ(1). Um aus dieser Formel eine explizite Abschätzung für T (n) zu
erhalten, rechnen wir zunächst aus, um welchen Faktor die Knotenanzahl mit jeder Ebene
der Rekursion mindestens schrumpft. Für n ≥ 7 gilt
√ m
1 + n/ 2
l
n
√
2 + n/ 2
2
1
≤
≤ + √ < 0,993 =: c1 .
n
n
2
Auf Tiefe ` ≥ 0 des Rekursionsbaumes gibt es 2` Knoten, die jeweils einen Aufruf auf einem
Graphen mit höchstens c`1 n Knoten darstellen. Die Tiefe des Rekursionsbaumes ist somit
durch
n
log1/c1
= Θ(log n)
6
1.3. Anwendungen
19
nach oben beschränkt.
Wir rechnen nun genauer nach, wie groß die Probleme auf Tiefe ` ≥ 0 im Rekursionsbaum
sind. Dabei schätzen wir wieder d1 + √n2 e durch √n2 + 2 nach oben ab. Das Problem auf
Tiefe 0 enthält noch alle n Knoten, die Probleme auf Tiefen 1, 2 und 3 enthalten höchstens
n
√
+2
2
√
√n
2
+2
√
+2
2
n
√ + 2,
2
2
√
bzw.
+2
+2
2
Knoten. Aus diesen drei Beispielen ist es nicht schwer zu sehen, dass die Anzahl Knoten bei
Problemen auf Tiefe ` ≥ 0 allgemein durch
`−1
∞
X
X
n
2
n
1
√
√
√
√
+
≤
+
2
`
i
`
( 2)
( 2)
2
i=0 ( 2)
i=0
i
n
n
2
√ ≤ √
≤ √ `+
+7
( 2)
1 − 1/ 2
( 2)`
nach oben beschränkt ist.
Da es 2` Knoten mit Tiefe ` im Rekursionsbaum gibt und die Laufzeit eines Knotens im Rekursionsbaum quadratisch in der Größe des zu lösenden Teilproblems nach oben beschränkt
ist, ist die Laufzeit für alle Knoten auf Ebene ` des Rekursionsbaums zusammen höchstens
n
2 ·c √ ` +7
( 2)
`
2
8n
≤2 ·c √ `
( 2)
`
2
= 64cn2 = O(n2 ).
Zusammen mit der Beobachtung, dass es O(log n) viele Ebenen gibt, folgt daraus das Theorem.
Als nächstes analysieren wir die Erfolgswahrscheinlichkeit des FastCut-Algorithmus.
Theorem 1.9. Der FastCut-Algorithmus gibt mit Wahrscheinlichkeit Ω(1/ log n) einen minimalen Schnitt aus.
Beweis. Zunächst überlegen wir uns, wie wahrscheinlich es ist, dass der Multigraph, der
durch die n−t Kontraktionen eines Aufrufs von Contract(G, t) entsteht, immer noch einen minimalen Schnitt des Graphen G enthält. Genau wie bei der Analyse des Contract-Algorithmus
fixieren wir dafür einen minimalen Schnitt C ⊆ E des Graphen G und berechnen die Wahrscheinlichkeit, dass dieser die Kontraktionen überlebt.
2
Für t = 2 haben wir die Wahrscheinlichkeit in Theorem 1.7 bereits durch n(n−1)
nach unten abgeschätzt. Schauen wir uns diese Analyse noch einmal an, so stellen wir fest, dass
wir sie einfach auf Contract(G, t) für allgemeine t erweitern können. Dazu definieren wir
Ereignisse A1 , . . . , An−t , wobei Ai wieder bedeutet, dass im i-ten Schritt keine Kante aus C
kontrahiert wird. Mit der in Theorem 1.7 hergeleiteten Abschätzung
Pr(Ai | A1 ∩ . . . ∩ Ai−1 ) ≥
n−i−1
n−i+1
gilt
Pr(C überlebt Contract(G, t))
= Pr(A1 ) · Pr(A2 | A1 ) · . . . · Pr(An−t | A1 ∩ . . . ∩ An−t−1 )
≥
n−2
n
n−3
n−1
l
=
t(t − 1)
=
n(n − 1)
1+
n−4
t+1
...
n−2
t+3
√n
2
m l
·
√n
2
n(n − 1)
m
l
1+
=
n
√n
2
t
t+2
m
l
·
√n
2
t−1
t+1
m
1
≥ .
n−1
2
20
1. Grundlagen der Wahrscheinlichkeitstheorie
Wir nennen einen Knoten des Rekursionsbaumes erfolgreich, wenn er einen Multigraphen
ausgibt, der einen minimalen Schnitt von G enthält. Wir bezeichnen mit P (n) eine untere
Abschätzung für die Wahrscheinlichkeit, dass die Wurzel bei einem Graphen G mit n Knoten erfolgreich ist. Die Wurzel ist dann erfolgreich, wenn für mindestens ein i ∈ {1, 2} der
Multigraph Hi einen minimalen Schnitt von G enthält und wenn der zu diesem Hi gehörige
rekursive Aufruf erfolgreich ist. Da die beiden Aufrufe von Contract(G, t) und die rekursiven Aufrufe unabhängig voneinander sind, können wir die Wahrscheinlichkeit, dass Hi einen
minimalen Schnitt von G enthält und dass zudem der rekursive Aufruf erfolgreich ist, durch
P (t)/2 nach unten abschätzen. Die Wahrscheinlichkeit, dass dies für kein i ∈ {1, 2} der Fall
ist, lässt sich auf Grund der Unabhängigkeit durch (1 − P (t)/2)2 nach oben abschätzen.
Damit ergibt sich für n ≥ 7
P (t)
P (n) ≥ 1 − 1 −
2
!2
und P (n) = 1 für n ≤ 6.
Da alle Teilprobleme, die sich auf derselben Ebene im Rekursionsbaum befinden, die gleiche
Knotenanzahl haben, ist es für uns einfacher, die Erfolgswahrscheinlichkeit eines Knotens
mit der Ebene im Rekursionsbaum zu parametrisieren anstatt mit der Knotenanzahl in dem
Teilproblem, das er darstellt. Sei dazu p(k) eine untere Schranke für die Erfolgswahrscheinlichkeit eines Knotens mit Höhe k. Wir verwenden die Konvention, dass Blätter die Höhe 0
haben, die Eltern der Blätter die Höhe 1 und so weiter. Aus obiger Formel ergibt sich für
die so parametrisierte Wahrscheinlichkeit direkt p(0) = 1 und für k ≥ 1
p(k − 1)
p(k) ≥ 1 − 1 −
2
!2
.
Wir können die Wahrscheinlichkeit p(k) auch wie folgt interpretieren: Man betrachte einen
vollständigen binären Baum der Höhe k und lösche jede Kante dieses Baumes unabhängig
von den anderen Kanten mit Wahrscheinlichkeit 1/2. Was groß ist die Wahrscheinlichkeit,
dass ein Weg von der Wurzel zu einem der Blätter erhalten bleibt?
Per vollständiger Induktion lässt sich leicht nachweisen, dass p(k) ≥
Für k = 0 folgt dies direkt. Für k ≥ 1 gilt per Induktion
p(k − 1)
p(k) ≥ 1 − 1 −
2
1
≥1− 1−
2k
für alle k ≥ 0 gilt.
!2
1
1
1
k+1 k+1
= − 2 =
−
k 4k
k+1
k
4k 2
1
3k − 1
1+
k+1
4k 2
=
!2
1
k+1
≥
1
.
k+1
Wir haben uns bereits im Beweis von Theorem 1.8 überlegt, dass die Rekursionstiefe Θ(log n)
beträgt. Somit ist die Erfolgswahrscheinlichkeit von FastCut mindestens Ω(1/ log n).
Auch bei FastCut erhöhen wir die Erfolgswahrscheinlichkeit durch unabhängige Wiederholungen. Sei die Erfolgswahrscheinlichkeit einer Ausführung von FastCut mindestens c/ log n
1.4. Zufallsvariablen und Erwartungswerte
21
für ein geeignet gewähltes c > 0. Wiederholen wir FastCut k log n/c oft, so erhalten wir eine
Fehlerwahrscheinlichkeit von
c
1−
log n
k log n/c
≤
c
1−
log n
log n/c !k
<
1
.
ek
Für k = Θ(log n) erhalten wir bereits eine sehr kleine Fehlerwahrscheinlichkeit von 1/nΘ(1) .
1.4
Zufallsvariablen und Erwartungswerte
Oft sind wir bei einem Zufallsexperiment gar nicht an seinem exakten Ausgang interessiert,
sondern nur an einer Kenngröße, die die für uns wesentliche Information enthält. Werfen wir
beispielsweise zwei Würfel, so sind wir oft nur an der Summe der Augenzahlen interessiert.
Ebenso sind wir bei einer Folge von Münzwürfen oft nicht an dem genauen Ausgang der Würfe
interessiert, sondern nur daran, wie oft „Zahl“ geworfen wurde. Um dies zu modellieren,
führen wir das Konzept von Zufallsvariablen ein.
Definition 1.10. Sei (Ω, Pr) ein diskreter Wahrscheinlichkeitsraum. Wir nennen eine Abbildung X : Ω → R, die die Ergebnismenge auf die reellen Zahlen abbildet, eine diskrete reelle
Zufallsvariable.
Bei einer Zufallsvariable X interessiert uns die Wahrscheinlichkeit, mit der sie bestimmte
Werte annimmt. Für eine reelle Zahl a ∈ R interpretieren wir X = a als das Ereignis {ω ∈
Ω | X(ω) = a} im Wahrscheinlichkeitsraum (Ω, Pr). Mit dieser Interpretation ergibt sich
Pr(X = a) = Pr {ω ∈ Ω | X(ω) = a} .
Für eine Teilmenge A ⊆ R der reellen Zahlen ergibt sich analog
Pr(X ∈ A) = Pr {ω ∈ Ω | X(ω) ∈ A} .
Wir betrachten zunächst zwei Beispiele für Zufallsvariablen.
• Sei (Ω, Pr) mit Ω = {1, . . . , 6}2 und Pr(ω) = 1/36 für ω ∈ Ω der Wahrscheinlichkeitsraum, der zwei unabhängige Würfelwürfe beschreibt, so können wir als Zufallsvariable X : Ω → {1, . . . , 12} die Summe der gewürfelten Zahlen definieren. Formal
setzen wir dafür X(ω) = ω1 + ω2 für ω = (ω1 , ω2 ) ∈ Ω. Für diese Zufallsvariable gelten
beispielsweise
Pr(X = 1) = 0, Pr(X = 2) =
1
1
und Pr(X = 7) = .
36
6
• Sei (Ω, Pr) mit Ω = {Z, K}10 und Pr(ω) = 1/1024 für ω ∈ Ω der Wahrscheinlichkeitsraum, der zehn unabhängige Münzwürfe beschreibt. Wir definieren als Zufallsvariable X : Ω → {0, 1, 2, . . . , 10} die Anzahl, wie oft „Zahl“ geworfen wurde. Als Übung
sollte der Leser sich überlegen, dass für diese Zufallsvariable
Pr(X = 0) =
gelten.
10
45
1
, Pr(X = 1) =
und Pr(X = 2) =
1024
1024
1024
22
1. Grundlagen der Wahrscheinlichkeitstheorie
Genauso wie bei Ereignissen können wir auch bei mehreren Zufallsvariablen wieder unterscheiden, ob sie unabhängig oder abhängig sind.
Definition 1.11. Sei (Ω, Pr) ein diskreter Wahrscheinlichkeitsraum und seien X : Ω → R
und Y : Ω → R diskrete reelle Zufallsvariablen. Wir nennen X und Y unabhängig, wenn für
alle x ∈ R und y ∈ R
Pr((X = x) ∩ (Y = y)) = Pr(X = x) · Pr(Y = y)
gilt. Wir nennen eine Familie X1 , . . . , Xn von diskreten reellen Zufallsvariablen unabhängig,
wenn für jede Teilmenge I ⊆ {1, . . . , n} und für alle xi ∈ R, i ∈ I,
!
Pr
\
(Xi = xi )
i∈I
=
Y
Pr(Xi = xi )
i∈I
gilt.
Diese Definition ist an Definition 1.3 angelehnt. Tatsächlich folgt unmittelbar, dass zwei
Zufallsvariablen X und Y genau dann unabhängig sind, wenn die Ereignisse {ω ∈ Ω | X(ω) =
x} und {ω ∈ Ω | Y (ω) = y} für alle x, y ∈ R unabhängig sind.
Oft möchte man den „durchschnittlichen Wert“ einer Zufallsvariable angeben. Dazu summiert man alle Werte auf, die die Zufallsvariable annehmen kann, wobei die einzelnen Werte
jeweils mit der Wahrscheinlichkeit gewichtet werden, dass sie von der Zufallsvariable angenommen werden.
Definition 1.12. Sei (Ω, Pr) ein diskreter Wahrscheinlichkeitsraum und sei X : Ω → R
P
eine diskrete reelle Zufallsvariable. Falls die Reihe ω∈Ω |X(ω)| · Pr({ω}) konvergiert, so
definieren wir
X
E(X) =
X(ω) · Pr({ω}).
ω∈Ω
als den Erwartungswert von X.
Sei X eine Zufallsvariable, für die der Erwartungswert gemäß obiger Definition existiert.
Bezeichnen wir mit R = X(Ω) die abzählbare Teilmenge der reellen Zahlen, die von X
angenommen werden können, dann können wir den Erwartungswert von X auch wie folgt
berechnen:
X
E(X) =
x · Pr(X = x).
(1.2)
x∈R
Für die Zufallsvariable X, die die Summe zweier unabhängiger Würfelwürfe beschreibt, gilt
E(X) = 2 ·
1
2
3
2
1
+3·
+4·
+ . . . + 11 ·
+ 12 ·
= 7.
36
36
36
36
36
Für die Zufallsvariable X, die beschreibt, wie oft in zehn Münzwürfen „Zahl“ geworfen wird,
ist es schon schwieriger, den Erwartungswert anhand der Definition nachzurechnen. Nur mit
viel Mühe rechnet man nach, dass
E(X) = 0 ·
1
10
45
1
+1·
+2·
+ . . . + 10 ·
=5
1024
1024
1024
1024
gilt. Um das Ausrechnen von Erwartungswerten zu vereinfachen, lernen wir jetzt einige
wichtige Rechenregeln kennen.
1.4. Zufallsvariablen und Erwartungswerte
23
Theorem 1.13. Sei (Ω, Pr) ein diskreter Wahrscheinlichkeitsraum und seien X : Ω → R
und Y : Ω → R diskrete reelle Zufallsvariablen, deren Erwartungswerte existieren. Dann gilt:
a) Für c, d ∈ R existiert der Erwartungswert der Zufallsvariable (cX + d) : Ω → R
mit (cX + d)(ω) = cX(ω) + d für ω ∈ Ω. Es gilt E(cX + d) = cE(X) + d.
b) Der Erwartungswert der Zufallsvariable (X + Y ) : Ω → R mit (X + Y )(ω) = X(ω) +
Y (ω) für ω ∈ Ω existiert und es gilt E(X + Y ) = E(X) + E(Y ).
c) Sind X und Y unabhängig, so existiert der Erwartungswert der Zufallsvariable (X ·
Y ) : Ω → R mit (X ·Y )(ω) = X(ω)·Y (ω) für ω ∈ Ω und es gilt E(X ·Y ) = E(X)·E(Y ).
Beweis. a) Aus Definition 1.12 folgt
E(cX + d) =
X
(cX + d)(ω) · Pr({ω})
ω∈Ω
=
X
(cX(ω) + d) · Pr({ω})
ω∈Ω
X
=c
X(ω) · Pr({ω}) + d
ω∈Ω
X
·Pr({ω})
ω∈Ω
= cE(X) + d.
Die Existenz des Erwartungswertes von cX + d rechnet man ebenfalls leicht nach.
b) Auch diese Aussage folgt direkt aus Definition 1.12:
E(X + Y ) =
X
(X + Y )(ω) · Pr({ω})
ω∈Ω
=
X
(X(ω) + Y (ω)) · Pr({ω})
ω∈Ω
=
X
X(ω) · Pr({ω}) +
ω∈Ω
X
Y (ω) · Pr({ω})
ω∈Ω
= E(X) + E(Y ).
c) Seien R = X(Ω) und S = Y (Ω) die abzählbaren Mengen von Werten, die X bzw. Y
annehmen können. Es gilt dann gemäß Definition 1.12
E(X · Y ) =
X
(X · Y )(ω) · Pr({ω})
ω∈Ω
=
X
(X(ω) · Y (ω)) · Pr({ω})
ω∈Ω
=
XX
xy · Pr (X = x) ∩ (Y = y)
x∈R y∈S
=
XX
xy · Pr(X = x) · Pr(Y = y)
x∈R y∈S
=
X
xPr(X = x)
x∈R
=
X
X
y · Pr(Y = y)
y∈S
xPr(X = x) · E(Y )
x∈R
= E(Y )
X
xPr(X = x)
x∈R
= E(X) · E(Y ),
24
1. Grundlagen der Wahrscheinlichkeitstheorie
wobei wir in der vierten Zeile die Unabhängigkeit der Zufallsvariablen ausgenutzt haben. Die
Existenz des Erwartungswertes rechnet man wieder analog nach, indem man in allen obigen
Summen x durch |x| und y durch |y| ersetzt.
Aussage b) des vorangegangenen Theorems werden wir auch als Linearität des Erwartungswertes bezeichnen. Es handelt sich dabei um eine äußerst nützliche Rechenregel, die sogar
für abhängige Zufallsvariablen X und Y gültig ist.
Nutzen wir die Linearität des Erwartungswertes, so ist es viel einfacher, die Erwartungswerte in den beiden obigen Beispielen zu berechnen. Betrachten wir dazu noch einmal den
Wahrscheinlichkeitsraum (Ω, Pr) mit Ω = {Z, K}10 und Pr(ω) = 1/1024 für ω ∈ Ω und die
Zufallsvariable X : Ω → {0, 1, 2, . . . , 10}, die angibt, wie oft „Zahl“ geworfen wurde. Diese
können wir darstellen als die Summe der Zufallsvariablen X1 , . . . , X10 , wobei Xi : Ω → {0, 1}
durch
(
1 falls i-ter Wurf „Zahl“ ergibt
Xi =
0 sonst
definiert ist. Eigentlich hätten wir in dieser Definition formal korrekt Xi (ω) statt einfach
nur Xi schreiben müssen. Um die Notation einfach zu halten, haben wir dies aber nicht
getan und werden auch im Folgenden in ähnlicher Weise Zufallsvariablen beschreiben. Für
jede Zufallsvariable Xi gilt
1
E(Xi ) = 1 · Pr(i-ter Wurf ergibt „Zahl“) = .
2
Somit ergibt sich
E(X) = E
X
10
Xi =
i=1
1.4.1
10
X
E(Xi ) =
i=1
10
X
1
i=1
2
= 5.
Anwendung: Analyse von Quicksort
Als erste algorithmische Anwendung analysieren wir die erwartete Laufzeit des QuicksortAlgorithmus. Dieser rekursive Sortieralgorithmus, der auf dem Prinzip Divide-and-Conquer
beruht, sollte aus vorangegangenen Vorlesungen bekannt sein, wir wiederholen ihn der Vollständigkeit halber an dieser Stelle aber noch einmal kurz. Wir gehen dabei davon aus, dass
wir als Eingabe eine Menge S von paarweise verschiedenen natürlichen Zahlen erhalten. Die
Ausgabe soll ein aufsteigend sortierter Vektor sein, der dieselben Zahlen wie S enthält.
QuickSort(S = {x1 , . . . , xn })
1. if (n = 0 or n = 1) then return S;
2. Wähle ein Pivotelement x ∈ S.
3. Bestimme S1 = {xi | xi < x} und S2 = {xi | xi > x}.
4. A1 = QuickSort(S1 ); A2 = QuickSort(S2 );
5. Sei A der Vektor, der durch Konkatenation von A1 , x und A2 entsteht.
6. return A;
Der obige Pseudocode lässt offen, auf welche Art und Weise das Pivotelement x ∈ S bestimmt wird. Wählt man stets die kleinste Zahl in S als Pivotelement, so ergibt sich eine
1.4. Zufallsvariablen und Erwartungswerte
25
Gesamtlaufzeit von Θ(n2 ). Wählt man jedoch stets den Median, so kann man leicht argumentieren, dass die Gesamtlaufzeit auf Θ(n log n) sinkt. Da das Bestimmen des Medians aber zu
aufwendig ist, bevorzugt man in der Praxis einfachere Regeln zur Wahl des Pivotelementes.
Wählt man stets eine uniform zufällige Zahl aus S als Pivotelement, so legen Experimente
die Vermutung nahe, dass die Laufzeit dann typischerweise in der Größenordnung Θ(n log n)
liegt. Tatsächlich ist diese Variante von Quicksort eines der in der Praxis besten Sortierverfahren. Um diese experimentellen Beobachtungen zu erklären, analysieren wir jetzt die
erwartete Laufzeit von Quicksort, wenn in jedem rekursiven Aufruf ein uniform zufälliges
Element als Pivotelement gewählt wird.
Aus vorangegangenen Vorlesungen sollte bekannt sein, dass wir bei Sortieralgorithmen häufig statt ihrer Laufzeit die Anzahl wesentlicher Vergleiche zählen, die sie durchführen. Ein
wesentlicher Vergleich ist einfach ein Vergleich zweier Zahlen der Eingabe. Bei vielen Algorithmen (inklusive Quicksort) dominieren die wesentlichen Vergleiche die Laufzeit für die
anderen Operationen. Das bedeutet, dass die Laufzeit in der gleichen Größenordnung wie
die Anzahl an wesentlichen Vergleichen liegt.
Theorem 1.14. Die erwartete Anzahl wesentlicher Vergleiche, die Quicksort durchführt,
wenn stets unabhängig ein uniform zufälliges Element als Pivotelement gewählt wird, beträgt 2n ln n + Θ(n).
Beweis. Es sei (y1 , . . . , yn ) der aufsteigend sortierte Vektor, der genau die Zahlen aus der
Menge S enthält. Für jedes Paar i, j ∈ {1, . . . , n} mit i < j definieren wir eine Zufallsvariable Xij wie folgt:
(
Xij =
1 falls während der Ausführung von Quicksort yi und yj verglichen werden,
0 sonst.
Wir nennen eine solche Zufallsvariable, die nur die Werte 0 und 1 annehmen kann, auch eine
Indikatorvariable, da sie ein Indikator für ein bestimmtes Ereignis ist (in diesem Falle für
das Ereignis, dass yi und yj verglichen werden). Wir sind interessiert an dem Erwartungswert der Zufallsvariable X, die die Anzahl wesentlicher Vergleich von Quicksort beschreibt.
Diese können wir als Summe über die Xij schreiben und Linearität des Erwartungswertes
ausnutzen. Damit erhalten wir
E(X) = E
n−1
X
n
X
i=1 j=i+1
!
Xij
=
n−1
X
n
X
i=1 j=i+1
E(Xij ) =
n−1
X
n
X
Pr(Xij = 1).
i=1 j=i+1
Im letzten Schritt dieser Umformung haben wir ausgenutzt, dass der Erwartungswert für
Zufallsvariablen, die nur die Werte 0 und 1 annehmen können, gemäß (1.2) der Wahrscheinlichkeit entspricht, dass sie den Wert 1 annehmen.
Wir bestimmen nun die Wahrscheinlichkeit dafür, dass yi und yj miteinander verglichen
werden. Dazu betrachten wir die Sequenz von Pivotelementen, die im Laufe der Ausführung
von Quicksort gewählt werden. Uns interessiert insbesondere das erste Pivotelement x, das im
Laufe des Algorithmus aus der Menge {yi , yi+1 , . . . , yj } gewählt wird. Genau dann, wenn x =
yi oder x = yj gilt, werden die Elemente yi und yj im Laufe des Quicksort-Algorithmus
miteinander verglichen. Um dies zu begründen, betrachten wir die folgenden beiden Fälle.
• Sei x 6= yi und x 6= yj . Da Quicksort in jedem Aufruf nur Vergleiche mit dem Pivotelement durchführt und bis zu diesem Zeitpunkt weder yi noch yj Pivotelement waren, wurden yi und yj bisher noch nicht miteinander vergleichen. In diesem Durchlauf
26
1. Grundlagen der Wahrscheinlichkeitstheorie
gilt yi < x < yj . Das bedeutet, dass yi der Menge S1 und yj der Menge S2 zugewiesen
werden. Somit kann es auch in keinem der weiteren rekursiven Aufrufe mehr zu einem
Vergleich von yi und yj kommen.
• Sei x entweder yi oder yj . Da bisher kein Element zwischen yi und yj als Pivotelement
gewählt wurde, sind in dem rekursiven Aufruf, in dem x gewählt wird, noch beide Elemente in der aktuellen Menge S enthalten. Somit findet in diesem Aufruf ein Vergleich
von yi und yj statt.
Wir müssen also nur noch die Wahrscheinlichkeit bestimmen, dass das erste Element, das
aus der Menge {yi , yi+1 , . . . , yj } gewählt wird, entweder yi oder yj ist. Solange kein Element
aus dieser Menge als Pivotelement gewählt wurde, sind in jedem rekursiven Aufruf entweder
noch alle Elemente dieser Menge in der aktuellen Menge S enthalten oder gar keins. Daraus
und aus der uniform zufälligen Wahl des Pivotelementes folgt zusammen, dass jedes Element
der Menge die gleiche Wahrscheinlichkeit besitzt, als erstes Element der Menge Pivotelement
2
zu werden. Damit folgt Pr(Xij = 1) = j−i+1
. Insgesamt erhalten wir
E(X) =
n−1
X
n
X
Pr(Xij = 1) =
i=1 j=i+1
=
n−1
X
X n−i+1
i=1 k=2
= (n + 1)
n−1
X
n
X
2
j−i+1
i=1 j=i+1
n n+1−k
n
X
X 2
X
2
2(n + 1 − k)
=
=
k k=2 i=1 k k=2
k
n
X
2
k=2
k
!
− 2(n − 1)
= (2n + 2)(Hn − 1) − 2(n − 1),
wobei Hn = ni=1 1i die n-te harmonische Zahl bezeichnet. Nutzt man aus, dass Hn =
ln n + Θ(1) gilt, so impliziert das
P
E(X) = (2n + 2)(ln n + Θ(1)) − 2(n − 1) = 2n ln n + Θ(n).
An dieser Stelle bietet es sich an, bereits kurz das zweite Thema dieser Vorlesung, die probabilistische Analyse von Algorithmen, anzusprechen. Dabei geht es darum, das Verhalten von
deterministischen oder randomisierten Algorithmen auf zufälligen Eingaben zu analysieren.
Die Variante von Quicksort, die stets das erste Element aus der Menge S als Pivotelement
wählt, hat im Worst-Case eine Laufzeit von Θ(n2 ), wenn die Elemente in S zum Beispiel
bereits sortiert sind. Kann man aber davon ausgehen, dass die initiale Reihenfolge der zu sortierende Element zufällig ist, so kann man zeigen, dass auch diese deterministische Variante
von Quicksort eine erwartete Laufzeit von Θ(n log n) hat.
Theorem 1.15. Die erwartete Anzahl wesentlicher Vergleiche, die Quicksort durchführt,
wenn stets das erste Element als Pivotelement gewählt wird, beträgt 2n ln n + Θ(n), wenn die
Eingabe eine uniform zufällige Permutation der zu sortierenden Elemente ist.
Beweis. Der Beweis erfolgt analog zu dem von Theorem 1.14. Da die Reihenfolge der Elemente in der initialen Eingabe S uniform zufällig gewählt wurde, haben alle Elemente in der
Menge {yi , yi+1 , . . . , yj } die gleiche Wahrscheinlichkeit, als erstes in S aufzutreten und somit
als erstes dieser Elemente Pivotelement zu werden. Dementsprechend kann man ganz analog
2
zeigen.
zum vorherigen Beweis Pr(Xij = 1) = j−i+1
1.4. Zufallsvariablen und Erwartungswerte
27
Wir weisen noch einmal explizit darauf hin, dass es zwischen Theorem 1.14 und Theorem 1.15
einen großen konzeptionellen Unterschied gibt. Während in Theorem 1.14 der Algorithmus
randomisiert ist, die Eingabe aber beliebig deterministisch gewählt sein kann, ist in Theorem 1.15 der Algorithmus deterministisch und die Eingabe ist zufällig gewählt.
1.4.2
Anwendung: Hashing
Wir betrachten als weitere Anwendung nun noch Hashing. Wir wissen bereits aus der Vorlesung „Algorithmen und Berechnungskomplexität I“, dass Hashing eine Möglichkeit ist,
dynamische Dateien zu verwalten. Wir gehen dabei davon aus, dass wir ein Universum U
haben, das alle möglichen Schlüssel enthält. Wir möchten in der Lage sein, Schlüssel in die
dynamische Datei einzufügen, zu suchen und zu löschen. Beim Hashing sind ein Feld der Größe m und eine Hashfunktion h : U → {1, . . . , m} gegeben, die jedem Schlüssel eine Position
im Feld zuweist.
Beim Hashing mit verketteten Listen werden Kollisionen dadurch gelöst, dass jede Position
des Feldes eine verkettete Liste ist und ein neu einzufügender Schlüssel einfach der entsprechenden Liste hinzugefügt wird. Können wir die Hashfunktion in konstanter Zeit auswerten,
so ist die Laufzeit für das Suchen und Löschen eines Schlüssels proportional zur Länge der
entsprechenden Liste. Die Laufzeit für das Einfügen von Schlüsseln ist konstant, wenn vorher
kein Test durchgeführt wird, ob der Schlüssel bereits vorhanden ist. Ansonsten ist sie auch
proportional zur Listenlänge. Neue Schlüssel werden dabei immer an den Anfang der Liste
angefügt.
Da die Laufzeit von Hashing im Worst-Case sehr schlecht ist, Hashing aber in der Praxis
gut funktioniert, analysiert man normalerweise die erwartete Laufzeit im Average-Case, um
realistischere Aussagen zu erhalten. Dazu trifft man oft vereinfachende Annahmen über die
Streuung der Hashfunktionen. Wir arbeiten hier zunächst mit der einfachen Annahme, dass
die Hashfunktion jeden Schlüssel aus U unabhängig von den anderen auf eine uniform zufällige Position aus {1, . . . , m} abbildet. Diese Annahme bezeichnen wir als uniformes Hashing.
Wir gehen im folgenden Theorem davon aus, dass bereits n Schlüssel in die Hashtabelle
eingefügt wurden, und bezeichnen mit α = n/m den Belegungsfaktor.
Theorem 1.16. Die erwartete Laufzeit einer Suche nach einem Schlüssel y ∈ U , der nicht in
der Hashtabelle enthalten ist, beträgt unter der Annahme des uniformen Hashings Θ(1 + α).
Die erwartete Laufzeit einer Suche nach einem Schlüssel, der in der Hashtabelle vorhanden
ist, beträgt im Durchschnitt über alle vorhandenen Schlüssel Θ(1 + α).
Beweis. Der erste Teil der Aussage folgt leicht. Seien dazu x1 , . . . , xn die Schlüssel, die in der
Hashtabelle vorhanden sind, und sei y ∈ U der Schlüssel, nach dem erfolglos gesucht wird.
Wir definieren Indikatorvariablen X1 , . . . , Xn , wobei Xi das Ereignis beschreibt, dass h(xi ) =
h(y) gilt. Dann können wir die Anzahl Zeiger, denen wir in der verketteten Liste bei der
Suche nach y folgen müssen, als 1 + X1 + . . . + Xn schreiben, wobei wir den letzte Nullzeiger
mitzählen. Auf Grund der Annahme, dass h(y) unabhängig von den Schlüsseln x1 , . . . , xn
auf eine uniform zufällig Position abgebildet wird, gilt Pr(Xi = 1) = 1/m. Nutzen wir nun
die Linearität des Erwartungswertes, so erhalten wir direkt
n
E(1 + X1 + . . . + Xn ) = 1 + E(X1 ) + . . . + E(Xn ) = 1 +
= 1 + α.
m
Die durchschnittliche erwartete Laufzeit bei einer erfolgreichen Suche zu bestimmen, erfordert etwas mehr Aufwand. Sei y das Element, das wir suchen, und seien x1 , . . . , xn die
28
1. Grundlagen der Wahrscheinlichkeitstheorie
Elemente in der Hashtabelle. Wir gehen davon aus, dass die Elemente x1 , . . . , xn in dieser
Reihenfolge eingefügt wurden und dass y = xi gilt. Wie vielen Zeigern folgen wir, wenn
wir nach y = xi suchen? Da neue Elemente an den Anfang der Liste angefügt werden, ist
nur wichtig, wie viele Schlüssel nach xi in die zugehörige Liste eingefügt wurden. Für j > i
definieren wir eine Indikatorvariable Xij mit
(
1
0
Xij =
falls h(xj ) = h(xi ),
falls h(xj ) 6= h(xi ).
Auf Grund der Unabhängigkeit von h(xi ) und h(xj ) gilt Pr(h(xj ) = h(xi )) = 1/m. Die
erwartete Anzahl Zeiger, denen wir folgen, wenn wir nach y = xi suchen, beträgt somit
E 1+
n
X
!
Xij
=1+
j=i+1
n
X
E Xij = 1 +
j=i+1
n−i
.
m
Der Durchschnitt über alle Wahlen y = xi beträgt
n
1X
n−i
1+
n i=1
m
=1+
n
1 X
1 n(n − 1)
(n − i) = 1 +
·
nm i=1
nm
2
=1+
α
α
n−1
=1+ −
= Θ(1 + α).
2m
2
2n
Beim Hashing mit offener Adressierung enthält jede Position des Feldes nur höchstens einen
Schlüssel und Kollisionen werden mittels Sondierung gelöst. Das bedeutet, dass eine erweiterte Hashfunktion h : U × {1, . . . , m} → {1, . . . , m} gegeben ist. Soll nun ein neuer Schlüssel x
eingefügt werden, so wird dies zunächst an der Position h(x, 1) versucht. Ist diese Position
bereits belegt, so wird als nächstes die Position h(x, 2) getestet und so weiter. Wird ein Element x gesucht, so werden die Positionen ebenfalls in dieser Reihenfolge besucht, solange,
bis entweder x oder eine leere Position gefunden wird. Wir gehen in diesem Falle davon aus,
dass keine Elemente gelöscht werden. Außerdem gehen wir davon aus, dass stets höchstens m
Elemente in der Hashtabelle vorhanden sind, da es ansonsten zu einem Überlauf kommt.
Zur Analyse von Hashing mit offener Adressierung machen wir wieder eine idealisierte
Annahme. Wir betrachten die Situation, dass wir eine Hashtabelle mit Auslastung α =
n/m < 1 haben, und einen Schlüssel x suchen. Dabei gehen wir davon aus, dass die Sequenz h(x, 1), h(x, 2), . . . , h(x, m) eine uniform zufällige Permutation der Menge {1, . . . , m}
ist. Wir nennen diese Annahme wieder uniformes Hashing.
Theorem 1.17. Die Laufzeit einer Suche nach einem Schlüssel y ∈ U , der nicht in
der
1
Hashtabelle enthalten ist, beträgt unter der Annahme des uniformen Hashings O 1−α
. Die
erwartete Laufzeit einer Suche nach einem Schlüssel, der in der Hashtabelle
enthalten ist,
1
beträgt im Durchschnitt über alle vorhandenen Schlüssel O α1 ln 1−α
.
Beweis. Wir betrachten zunächst den Fall einer erfolglosen Suche nach einem Schlüssel y,
der nicht in der Hashtabelle enthalten ist. Dazu definieren wir Ai für i ∈ {1, . . . , n} als das
Ereignis, dass die Position h(y, i) belegt ist. Sei X die Zufallsvariable, die angibt, wie viele
Positionen wir bei der erfolglosen Suche nach y betrachten. Dann gilt für i ∈ {1, . . . , n + 1}
Pr(X ≥ i) = Pr A1 ∩ . . . ∩ Ai−1 =
i−1
Y
j=1
Pr Aj | A1 ∩ . . . ∩ Aj−1 .
1.4. Zufallsvariablen und Erwartungswerte
29
Gehen wir davon aus, dass h(y, 1), . . . , h(y, m) eine uniform zufällige Permutation der Positionen ist, so gilt
n−j+1
Pr Aj | A1 ∩ . . . ∩ Aj−1 =
,
m−j+1
da für h(y, j) noch m − j + 1 mögliche Positionen zur Verfügung stehen, von denen unter
der Bedingung A1 ∩ . . . ∩ Aj−1 noch n − j + 1 viele belegt sind. Damit ergibt sich insgesamt
für i ∈ {1, . . . , n + 1}
i−1
Y
n−j+1
Pr(X ≥ i) =
≤
m
−j+1
j=1
n
m
!i−1
= αi−1 .
Da maximal n + 1 Positionen betrachtet werden, bis eine nicht belegte gefunden wird,
gilt Pr(X ≥ n + 2) = 0. Daraus folgt
E(X) =
∞
X
Pr(X ≥ i) =
i=1
n+1
X
Pr(X ≥ i) ≤
i=1
n+1
X
αi−1 ≤
i=1
∞
X
αi−1 =
i=1
1
.
1−α
Wir betrachten nun noch den Fall, dass die Schlüssel x1 , . . . , xn in dieser Reihenfolge in die
Hashtabelle eingefügt wurden und dass wir nach einem y = xi suchen. Diese Suche erzeugt
die gleiche Sequenz von Positionen wie das Einfügen des Schlüssels y. Zu dem Zeitpunkt,
zu dem der Schlüssel xi eingefügt wurde, waren bereits i − 1 andere Schlüssel vorhanden,
was einem Belegungsfaktor von αi = (i − 1)/m entspricht. Da das Einfügen zu diesem
Zeitpunkt zunächst einer erfolglosen Suche nach xi entspricht, besagt obige Rechnung, dass
1
Positionen angeschaut werden. Bilden wir
zur Einfügung von xi im Erwartungswert 1−α
i
den Durchschnitt über alle Schlüssel xi , so ergibt sich
n
m
X
X 1
X
1 X
1
1 n−1
1
1
1
m n−1
·
= ·
·
=
·
=
n i=1 1 − αi
n i=0 1 − mi
n i=0 m − i
α k=m−n+1 k
1
≤
α
1.4.3
Z m
m
1
1
dx = · ln
x
α
m−n
k=m−n
1
1
= ln
.
α
1−α
Binomialverteilung und geometrische Verteilung
Wir haben bereits gesehen, dass gewisse Fragestellungen bei der Analyse von randomisierten
Algorithmen wiederholt auftreten. Haben wir einen Algorithmus mit einer gewissen Erfolgswahrscheinlichkeit, so ist es zum Beispiel interessant, wie oft wir ihn unabhängig wiederholen
müssen, um mit hoher Wahrscheinlichkeit mindestens einmal erfolgreich zu sein. Manchmal
interessiert uns nicht nur die Wahrscheinlichkeit, dass mindestens eine Wiederholung erfolgreich war, sondern auch die Wahrscheinlichkeit, dass mindestens eine gewisse Anzahl an
Wiederholungen erfolgreich war. Um diese Wahrscheinlichkeiten nicht jedes Mal wieder neu
ausrechnen zu müssen, führen wir in diesem Abschnitt binomialverteilte Zufallsvariablen und
geometrische Zufallsvariablen ein.
Betrachten wir zunächst ein Zufallsexperiment, das mit Wahrscheinlichkeit p ∈ [0, 1] erfolgreich ist und mit Wahrscheinlichkeit 1 − p erfolglos. Dann nennen wir Y mit
(
Y =
1
0
falls erfolgreich
falls erfolglos
30
1. Grundlagen der Wahrscheinlichkeitstheorie
die Indikatorvariable für das Ereignis, dass das Zufallsexperiment erfolgreich ist. Eine solche
Zufallsvariable, die nur die Werte 0 und 1 annehmen kann, nennen wir auch BernoulliZufallsvariable mit Parameter p. Es gilt
E(Y ) = 0 · Pr(Y = 0) + 1 · Pr(Y = 1) = Pr(Y = 1) = p.
Führen wir einen randomisierten Algorithmus wie den Contract-Algorithmus zur Berechnung eines minimalen Schnittes aus, so können wir eine Bernoulli-Zufallsvariable definieren,
die angibt, ob der Algorithmus erfolgreich in dem Sinne ist, dass er einen minimalen Schnitt
ausgibt. Um die Frage zu beantworten, wie oft der Algorithmus bei mehrfacher Wiederholung erfolgreich ist, führen wir binomialverteilte Zufallsvariablen ein. Seien dazu Y1 , . . . , Yn
unabhängige Bernoulli-Zufallsvariablen mit demselben Parameter p ∈ [0, 1]. Die Zufallsvariable X = Y1 + . . . + Yn nennen wir binomialverteilte Zufallsvariable mit Parametern n
und p.
Theorem 1.18. Sei X eine binomialverteilte Zufallsvariable mit Parametern n und p. Es
gilt E(X) = pn und für j ∈ {0, . . . , n} gilt
!
Pr(X = j) =
n
· pj · (1 − p)n−j .
j
Beweis. Als erstes berechnen wir die Wahrscheinlichkeit für das Ereignis X = j. Dazu definieren wir für jede Möglichkeit, wie die j Erfolge sich auf die n Versuche
aufteilen können, ein
n
Ereignis. Seien dies die Ereignisse A1 , . . . , Am . Es gilt dann m = j , da dies der Anzahl von
Möglichkeiten entspricht, eine Teilmenge mit j Elementen aus einer Menge mit n Elementen
auszuwählen. Ein Ereignis Ai legt fest, welche j Versuche erfolgreich und welche n − j erfolglos sind. Die Wahrscheinlichkeit, dass Ai eintritt, ist somit für jedes i genau pj (1 − p)n−j .
Die Ereignisse A1 , . . . , Am sind paarweise disjunkt. Damit gilt
Pr(X = j) = Pr
m
[
i=1
!
Ai
=
m
X
!
j
n−j
Pr(Ai ) = m · p · (1 − p)
=
i=1
n
· pj · (1 − p)n−j .
j
Mit Hilfe dieser Wahrscheinlichkeit kann man mit ein wenig Rechnen den Erwartungswert
bestimmen:
!
!
n
X
n
j
n−j
E(X) =
j·
· p · (1 − p)
= . . . = np.
j
j=0
Viel einfacher geht es aber, wenn man die Linearität des Erwartungswertes ausnutzt. Damit
folgt nämlich direkt
!
E(X) = E
n
X
i=1
Yi
=
n
X
E(Yi ) = np,
i=1
wobei wir X = Y1 + . . . + Yn für Bernoulli-Zufallsvariablen Y1 , . . . , Yn mit Parameter p
ausgenutzt haben.
Nun betrachten wir noch die Frage, wie lange wir auf den ersten Erfolg warten müssen,
wenn wir einen Algorithmus unabhängig wiederholen, der eine Erfolgswahrscheinlichkeit
von p besitzt. Dies wird durch eine geometrische Zufallsvariable mit Parameter p beschrieben. Eine solche Zufallsvariable nimmt den Wert n ∈ N an, wenn die ersten n − 1 Versuche erfolglos sind und der n-te Versuch erfolgreich ist. Die Wahrscheinlichkeit hierfür beträgt (1 − p)n−1 · p. Wir definieren für eine geometrische Zufallsvariable X mit Parameter p
1.4. Zufallsvariablen und Erwartungswerte
31
dementsprechend Pr(X = n) = (1 − p)n−1 · p für jedes n ∈ N. Um den Erwartungswert
einer geometrischen Zufallsvariable zu bestimmen, leiten wir zunächst eine nützliche alternative Darstellung des Erwartungswertes her, die für alle Zufallsvariablen gilt, die nur Werte
aus N0 = {0, 1, 2, 3, . . .} annehmen können.
Lemma 1.19. Sei (Ω, Pr) ein diskreter Wahrscheinlichkeitsraum und sei X : Ω → N0 eine
diskrete Zufallsvariable, deren Erwartungswert existiert. Dann gilt
E(X) =
∞
X
Pr(X ≥ i).
i=1
Beweis. Es gilt
∞
X
Pr(X ≥ i) =
i=1
∞ X
∞
X
Pr(X = j)
i=1 j=i
=
=
j
∞ X
X
Pr(X = j)
j=1 i=1
∞
X
j · Pr(X = j) = E(X).
j=1
In obiger Rechnung haben wir ausgenutzt, dass wir bei absolut konvergenten Reihen die
Reihenfolge der Summanden beliebig vertauschen können.
Theorem 1.20. Für eine geometrische Zufallsvariable X mit Parameter p gilt E(X) = 1/p.
Beweis. Für die geometrische Zufallsvariable X und j ∈ N gilt
Pr(X ≥ j) =
∞
X
Pr(X = i) =
i=j
∞
X
(1 − p)i−1 · p = (1 − p)j−1 .
i=j
Die letzte Gleichung in obiger Formel rechnet man entweder nach oder man überlegt sich
einfach, was passieren muss, damit X ≥ j gilt. Dies ist genau dann der Fall, wenn die
ersten j − 1 Versuche erfolglos sind. Die Wahrscheinlichkeit dafür beträgt genau (1 − p)j−1 .
Nun folgt das Theorem leicht aus Lemma 1.19:
E(X) =
∞
X
j=1
Pr(X ≥ j) =
∞
X
(1 − p)j−1 =
j=1
1
1
= .
1 − (1 − p)
p
Das Theorem entspricht der Intuition, die wir im Laufe der Vorlesung gewonnen haben: Hat
ein Algorithmus eine Erfolgswahrscheinlichkeit von p, so müssen wir ihn 1/p mal wiederholen,
um mit konstanter Wahrscheinlichkeit mindestens einmal erfolgreich zu sein.
Eine wichtige Eigenschaft der geometrischen Verteilung, die man oft implizit oder explizit
ausnutzt, ist ihre Gedächtnislosigkeit. Das bedeutet, dass die Wahrscheinlichkeit eines Erfolges unabhängig davon ist, wie viele Misserfolge es bis jetzt gegeben hat. Das ist wie beim
Roulette: Die Information, dass in den letzten zehn Spielen immer rot geworfen wurde, ändert nichts an der Wahrscheinlichkeit, dass im nächsten Spiel rot geworfen wird. Formal
drückt das folgende Lemma die Gedächtnislosigkeit von geometrischen Zufallsvariablen aus.
32
1. Grundlagen der Wahrscheinlichkeitstheorie
Lemma 1.21. Es sei X eine geometrische Zufallsvariable mit Parameter p. Dann gilt für
alle n ∈ N und k ∈ N0
Pr(X = n + k | X > k) = Pr(x = n).
Beweis. Es gilt
Pr (X = n + k) ∩ (X > k)
Pr(X = n + k)
Pr(X = n + k | X > k) =
=
Pr(X > k)
Pr(X > k)
n+k−1
(1 − p)
·p
=
= (1 − p)n−1 · p = Pr(x = n).
k
(1 − p)
1.4.4
Anwendung: Coupon Collector’s Problem
Wir betrachten nun noch ein einfaches Zufallsexperiment, das in der Analyse von randomisierten Algorithmen oft auftritt. Das Coupon Collector’s Problem lässt sich anhand von
Sammelbildern beschreiben, wie sie zum Beispiel zu jeder Fußball-Weltmeisterschaft verkauft
werden. Wir gehen davon aus, dass es insgesamt n verschiedene solcher Bilder gibt. Diese
kann man nicht gezielt erwerben, sondern man kann nur verschlossene Tüten kaufen, in
denen sich jeweils unabhängig ein uniform zufällig ausgewähltes Sammelbild befindet. Wir
bezeichnen mit X die Zufallsvariable, die angibt wie viele Tüten wir kaufen müssen, bis wir
alle Bilder mindestens einmal in unserer Sammlung haben.
Theorem 1.22. Für das Coupon Collector’s Problem mit n Sammelbildern gilt E(X) =
n ln n + Θ(n).
Beweis. Zum Beweis des Theorems zerlegen wir den Zufallsprozess in n Phasen. Die erste
Phase beginnt mit dem ersten Sammelbild, das wir kaufen. Phase i für i ∈ {2, . . . , n} beginnt,
nachdem wir das (i − 1)-te verschiedene Sammelbild gekauft haben. Bezeichnen wir mit Xi
die Anzahl Sammelbilder, die wir in Phase i kaufen, dann gilt X = X1 + . . . + Xn . Außerdem
ist jedes Xi eine geometrisch verteilte Zufallsvariable mit Parameter
pi = 1 −
i−1
,
n
denn die Wahrscheinlichkeit, in Phase i ein Sammelbild zu kaufen, das nicht zu den (i − 1)
bereits erworbenen gehört, beträgt (n − i + 1)/n. Mit der Linearität des Erwartungswertes
und Theorem 1.20 folgt nun direkt
E(X) = E
n
X
i=1
=n
n
X
1
i=1
i
!
Xi
=
n
X
E(Xi ) =
i=1
n
X
1
i=1
pi
=
n
X
i=1
n
n−i+1
= n ln n + Θ(n).
Im letzten Schritt haben wir ausgenutzt, dass für die n-te harmonische Zahl
Θ(1) gilt.
Pn
1
i=1 i
= ln n +
1.5. Konzentration von Verteilungen
1.5
33
Konzentration von Verteilungen
Oft sind wir nicht nur daran interessiert, den Erwartungswert einer Zufallsvariable abzuschätzen, sondern wir möchten zusätzlich zeigen, dass es unwahrscheinlich ist, dass die Zufallsvariable stark von ihrem Erwartungswert abweicht. Wir möchten also zeigen, dass die
Zufallsvariable um ihren Erwartungswert herum konzentriert ist.
1.5.1
Markow- und Tschebyschew-Ungleichung
Die einfachste Möglichkeit, ein solches Konzentrationsergebnis für nicht-negative Zufallsvariablen zu erhalten, ist die Markow-Ungleichung.
Theorem 1.23. Es sei X : Ω → R≥0 eine Zufallsvariable, die nur nicht-negative Werte
annimmt und für die der Erwartungswert E(X) existiert. Dann gilt
Pr(X ≥ a) ≤
E(X)
a
für alle a > 0.
Wir können die Markow-Ungleichung umformulieren, um eine noch einprägsamere Form zu
erhalten. Sei X : Ω → R≥0 eine Zufallsvariable, die nur nicht-negative Werte annimmt. Dann
gilt für alle a ≥ 1
1
Pr(X ≥ a · E(X)) ≤ .
a
Die Wahrscheinlichkeit, dass X a-mal so groß ist wie sein Erwartungswert, ist also höchstens 1/a.
Beweis von Theorem 1.23. Für den Beweis definieren wir uns einfach eine Indikatorvariable I mit
(
1 falls X ≥ a,
I=
0 sonst.
Für diese Indikatorvariable gilt E(I) = Pr(I = 1) = Pr(X ≥ a). Außerdem gilt wegen X ≥ 0
stets I ≤ X/a. Damit folgt insgesamt, wie gewünscht,
Pr(X ≥ a) = E(I) ≤ E
X
a
=
E(X)
.
a
Mit der Markow-Ungleichung können wir beispielsweise die Wahrscheinlichkeit abschätzen,
dass wir in einer Folge von n unabhängigen fairen Münzwürfen mindestens (3n/4)-mal „Zahl“
sehen. Sei X die Zufallsvariable, die angibt, wie oft „Zahl“ geworfen wird. Dann gilt gemäß
der Markow-Ungleichung
Pr X ≥
3n
4
≤
E(X)
n/2
2
=
= .
3n/4
3n/4
3
Die Markow-Ungleichung ist die bestmögliche Schranke, wenn wir als einzige Information
ausnutzen, dass die Zufallsvariable nicht-negativ ist. Liegen uns noch weitere Informationen
vor, so können wir schärfere Schranken zeigen. Oft kennen wir noch die höheren Momente
einer Zufallsvariable im Sinne der folgenden Definition.
34
1. Grundlagen der Wahrscheinlichkeitstheorie
Definition 1.24. Es sei X eine Zufallsvariable und k ∈ N. Falls der Erwartungswert E(X k )
existiert, so nennen wir ihn das k-te Moment von X.
Mit Hilfe des zweiten Momentes einer Zufallsvariable können wir die Begriffe Varianz und
Standardabweichung definieren. Bei beiden Größen handelt es sich um ein Maß dafür, wie
wahrscheinlich es ist, dass die Zufallsvariable einen Wert annimmt, der von ihrem Erwartungswert stark abweicht.
Definition 1.25. Es sei X eine Zufallsvariable. Falls der Erwartungswert und das zweite
Moment von X existieren, so nennen wir
Var(X) = E (X − E(X))2 = E(X 2 ) − E(X)2 .
die Varianz von X. Die Standardabweichung σ(X) von X ist definiert als
σ(X) =
q
Var(X).
Dass die Gleichung in der obigen Definition der Varianz gültig ist, folgt aus der Linearität
des Erwartungswertes:
E (X − E(X))2 = E X 2 − 2XE(X) + E(X)2
= E(X 2 ) − E(2XE(X)) + E E(X)2
= E(X 2 ) − 2E(X)E(X) + E(X)2
= E(X 2 ) − E(X)2 .
In dieser Rechnung haben wir ausgenutzt, dass E(X) und E(X)2 für eine gegebene Zufallsvariable X Konstanten sind.
Um eine bessere Anschauung für Varianz und Standardabweichung zu erhalten, schauen wir
uns zwei Extremfälle an. Eine Zufallsvariable, die stets denselben Wert annimmt, besitzt
eine Varianz und Standardabweichung von 0. Eine Zufallsvariable X, die mit Wahrscheinlichkeit 1/k den Wert kE(X) und mit Wahrscheinlichkeit 1 − 1/k den Wert 0 annimmt,
besitzt eine Varianz von
1 2
· k E(X)2 − E(X)2 = (k − 1)E(X)2
k
√
und eine Standardabweichung von σ(X) = k − 1 · |E(X)|.
Var(X) = E(X 2 ) − E(X)2 =
Genau wie für den Erwartungswert gibt es einige Rechenregeln, die die Berechnung der
Varianz einer Zufallsvariablen vereinfachen.
Theorem 1.26. Seien X und Y zwei unabhängige Zufallsvariablen, für die die Varianzen Var(X) und Var(Y ) existieren, und seien a, b ∈ R. Dann gelten
Var(aX + b) = a2 · Var(X)
und
Var(X + Y ) = Var(X) + Var(Y ).
1.5. Konzentration von Verteilungen
35
Beweis. Die erste Aussage folgt direkt aus den bekannten Rechenregeln für Erwartungswerte:
Var(aX + b) = E (aX + b − E(aX + b))2
= E (aX + b − aE(X) − b)2
= E (aX − aE(X))2
= a2 · E (X − E(X))2
= a2 · Var(X).
Die zweite Aussage folgt ebenfalls direkt aus diesen Rechenregeln und der Unabhängigkeit
von X und Y , die E(X · Y ) = E(X) · E(Y ) impliziert:
Var(X + Y ) = E (X + Y )2 − E(X + Y )2
2
= E X 2 + 2XY + Y 2 ) − E(X) + E(Y )
= E(X 2 ) + 2E(X) · E(Y ) + E(Y 2 ) − E(X)2 + 2E(X) · E(Y ) + E(Y )2
= E(X 2 ) − E(X)2 + E(Y 2 ) − E(Y )2
= Var(X) + Var(Y ).
Nun können wir die Tschebyschew-Ungleichung angeben.
Theorem 1.27. Es sei X eine Zufallsvariable, deren Erwartungswert und Varianz existieren, und es sei a > 0. Dann gilt
Pr |X − E(X)| ≥ a ≤
Var(X)
.
a2
Auch die Tschebyschew-Ungleichung können wir anders formulieren. Für jedes t > 1 gelten
Pr |X − E(X)| ≥ t · σ(X) ≤
1
t2
und
Pr |X − E(X)| ≥ t · E(X) ≤
Var(X)
.
t2 E(X)2
Beweis von Theorem 1.27. Der Beweis besteht darin, die Markow-Ungleichung auf das zweite Moment von X anzuwenden. Es gilt
Pr |X − E(X)| ≥ a = Pr (X − E(X))2 ≥ a2
und die Zufallsvariable (X − E(X))2 nimmt nur nicht-negative Werte an und besitzt per
Definition den Erwartungswert E((X −E(X))2 ) = Var(X). Auf diese Zufallsvariable können
wir die Markow-Ungleichung anwenden, mit der wir die gewünschte Abschätzung erhalten:
Pr (X − E(X))2 ≥ a2 ≤
Var(X)
E((X − E(X))2 )
=
.
2
a
a2
Wir betrachten noch einmal das Beispiel mit n unabhängigen Münzwürfen. Sei wieder X
die Zufallsvariable, die angibt, wie oft „Zahl“ geworfen wird. Dann ist X binomialverteilt
36
1. Grundlagen der Wahrscheinlichkeitstheorie
mit den Parametern n und 1/2. Somit lässt sich X als die Summe von n unabhängigen
Bernoulli-Variablen X1 , . . . , Xn mit Parameter 1/2 darstellen. Damit ergibt sich
Var(X) = Var
n
X
!
Xi
i=1
=
n
X
i=1
Var(Xi ) =
n
X
E(Xi2 )
− E(Xi )
2
i=1
=
n X
1
i=1
1
−
2 4
=
n
.
4
Die Wahrscheinlichkeit, dass wir mindestens (3n/4)-mal „Zahl“ sehen, lässt sich mit der
Tschebyschew-Ungleichung wie folgt abschätzen:
Pr(X ≥ 3n/4) ≤ Pr(|X − E(X)| ≥ n/4) ≤
4
Var(X)
= .
2
(n/4)
n
In diesem Beispiel liefert die Tschebyschew-Ungleichung also eine deutlich bessere Schranke
als die Markow-Ungleichung.
Wir können hier allgemein festhalten, dass Var(X) = p − p2 = p(1 − p) für eine BernoulliZufallsvariable X mir Parameter p gilt. Außerdem gilt
Var(Y ) = n(p − p2 ) = np(1 − p) ≤
n
4
für eine binomialverteilte Zufallsvariable Y mit den Parametern n und p. Laut TschebyschewUngleichung gilt für jedes a > 0
Pr(|Y − E(Y )| ≥ a) ≤
np(1 − p)
n
≤ 2.
2
a
4a
Das bedeutet, dass die Wahrscheinlichkeit einer additiven Abweichung vom Erwartungs√
wert in der Größenordnung o( n) bei einer binomialverteilten Zufallsvariable mit Hilfe der
Tschebyschew-Ungleichung nicht sinnvoll nach oben beschränkt werden kann. Die Wahr√
scheinlichkeit einer Abweichungen in der Größenordnung Θ( n) kann durch eine Konstante
√
beschränkt werden. Für Abweichungen in der Größenordnung ω( n) geht die Wahrscheinlichkeit mit wachsendem n gegen Null.
1.5.2
Anwendung: Bestimmung des Medians
Wir geben nun einen randomisierten Algorithmus zur Bestimmung des Medians einer Menge S von n paarweise verschiedenen Zahlen an. Mit Median meinen wir das dn/2e-kleinste
Element, welches wir im Folgenden mit m ∈ S bezeichnen werden. Natürlich könnten wir
dieses Problem in Zeit Θ(n log n) lösen, indem wir die Zahlen zunächst sortieren und dann in
konstanter Zeit den Median der sortierten Folge bestimmen. Mit einem relativ komplizierten
deterministischen Algorithmus kann man das Problem sogar in Linearzeit lösen. Wir lernen
nun einen einfacheren randomisierten Algorithmus zur Bestimmung des Medians mit einer
erwarteten Laufzeit von O(n) kennen.
Die entscheidende Komponente in diesem Algorithmus ist die Bestimmung zweier Elemente a, b ∈ S, für die die folgenden beiden Eigenschaften gelten.
1. Es gilt a ≤ m ≤ b.
2. Für C = {x ∈ S | a ≤ x ≤ b} gilt |C| = o(n/ log n).
1.5. Konzentration von Verteilungen
37
Gelingt es uns, zwei Elemente a und b mit diesen beiden Eigenschaften zu bestimmen, so
können wir in Linearzeit deterministisch den Median m ∈ S bestimmen. Dazu berechnen
wir zunächst den Rang r(a) von a, d. h. r(a) = |{x ∈ S | x < a}|. Dies geht in Linearzeit, da wir das Element a lediglich mit allen anderen Elementen in S vergleichen müssen.
Anschließend bestimmen wir in Linearzeit die Menge C und sortieren sie mit Heapsort in
Zeit O(|C| log |C|) = o(n). Der Median ist dann das (dn/2e − r(a))-kleinste Element in C,
welches wir in der sortierten Menge C in konstanter Zeit finden können.
Es bleibt also nur noch die Frage zu klären, wie wir Elemente a und b mit den obigen beiden
Eigenschaften finden können. Dazu nutzen wir Randomisierung, insbesondere benutzen wir
die Methode des Samplings. Das bedeutet, dass wir eine zufällige Stichprobe der Menge S
bestimmen. Wir wählen dazu unabhängig dn3/4 e-mal hintereinander ein uniform zufälliges
Element aus S und fügen es zu der Stichprobe R hinzu. Insbesondere erlauben wir, dass
Elemente mehrfach ausgewählt werden, und betrachten R dementsprechend als Multimenge.
Dies wird uns die Analyse erleichtern.
Da die Stichprobe typischerweise relativ gut auf S verteilt ist, erwarten wir, dass der Median m0 der Stichprobe nicht weit vom Median m von S entfernt ist. Der Median m0 der
Stichprobe ist das dn3/4 /2e-kleinste Element von R. Wählen wir a als das (dn3/4 /2e − δ)kleinste Element von R und b als das (dn3/4 /2e+δ)-kleinste Element von R für einen genügend
großen Sicherheitsabstand δ, so erwarten wir, dass m zwischen a und b liegt. Dies ist in der
folgenden Abbildung illustriert.
C
a
r(a) viele Elemente
m
m0
b
s(b) viele Elemente
Die Zellen in der Abbildung stellen die Elemente von S in sortierter Reihenfolge dar. Graue
Zellen gehören zu der Stichprobe R, wobei wir der Einfachheit halber davon ausgehen, dass
kein Element mehrfach in R vorkommt. Der Median m0 der Stichprobe ist das dn3/4 /2ekleinste Element von R. In diesem Beispiel liegt er tatsächlich in der Nähe des zu bestimmenden Medians m und es gilt a ≤ m ≤ b.
Um nicht ständig mit gerundeten Werten arbeiten zu müssen, gehen wir der Einfachheit
√
halber im Folgenden davon aus, dass alle auftretenden Werte wie z. B. n/2, n und 21 n3/4
ganzzahlig sind. Insbesondere gehen wir davon aus, dass n gerade ist. Außerdem gehen wir
√
√
davon aus, dass n hinreichend groß ist, so dass 12 n3/4 − n ≥ 1 und 12 n3/4 + n ≤ n gelten.
38
1. Grundlagen der Wahrscheinlichkeitstheorie
Randomized-Median(S)
1. Bestimme eine Multimenge R mit n3/4 Elementen aus S.
Wähle dazu n3/4 Elemente aus S unabhängig und uniform zufällig aus.
Dabei dürfen Elemente aus S mehrfach ausgewählt werden.
2. Sortiere R mit Heapsort.
√ 3. Sei a das 21 n3/4 − n -kleinste Element in R.
√ 4. Sei b das 21 n3/4 + n -kleinste Element in R.
5. Bestimme r(a) = |{x ∈ S | x < a}| und s(b) = |{x ∈ S | x > b}|.
Vergleiche dazu a und b mit jedem Element aus S.
6. Bestimme C = {x ∈ S | a ≤ x ≤ b}.
7. Falls r(a) ≥ n/2 oder s(b) ≥ n/2 oder |C| > 4n3/4 , gib „Fehler“ aus.
8. Sortiere C mit Heapsort und gib das (n/2 − r(a))-kleinste Element von C aus.
Theorem 1.28. Der Algorithmus Randomized-Median besitzt eine Laufzeit von O(n). Falls
er keine Fehlermeldung ausgibt, so gibt er den Median von S aus.
Beweis. Wir gehen davon aus, dass in konstanter Zeit ein uniform zufälliges Element aus S
ausgewählt werden kann. Dann besitzt der erste Schritt eine Laufzeit von O(n3/4 ) = o(n).
Die Laufzeit des zweiten Schrittes beträgt O(|R| log |R|) = o(n). Ist R sortiert, so benötigen
die Schritte 3 und 4 Laufzeit O(1). Die Schritte 5 und 6 haben eine Laufzeit von O(n).
Schritt 7 hat konstante Laufzeit und Schritt 8 hat eine Laufzeit von O(|C| log |C|) = o(n),
wobei wir ausnutzen, dass |C| ≤ 4n3/4 gilt, wenn wir Schritt 8 erreichen.
Gibt der Algorithmus keine Fehlermeldung aus, so erreicht er Schritt 8. In diesem gibt er
das (n/2 − r(a))-kleinste Element x von C aus. Da der Algorithmus Schritt 8 erreicht,
gilt r(a) < n/2 und damit (n/2 − r(a)) ≥ 1. Außerdem muss
n
− r(a) ≤ |C| = n − r(a) − s(b)
2
gelten, damit Schritt 8 überhaupt durchgeführt werden kann. Dies ist äquivalent zu s(b) ≤
n/2, was gilt, wenn wir Schritt 8 erreichen. Somit ist gezeigt, dass das (n/2 − r(a))-kleinste
Element von C existiert.
Es gibt in S \ C genau r(a) Elemente, die kleiner als x sind. In C gibt es n/2 − r(a) − 1
solche Elemente. Damit gibt es insgesamt genau n/2 − 1 Elemente in S, die kleiner als x
sind. Somit ist x der Median von S.
Wir definieren nun drei Ereignisse und zeigen, dass der Algorithmus nur dann eine Fehlermeldung ausgibt, wenn mindestens eins dieser Ereignisse eintritt. Dann schätzen wir die
Wahrscheinlichkeit jedes einzelnen Ereignisses ab und wenden eine Union-Bound an, um die
Gesamtfehlerwahrscheinlichkeit abzuschätzen.
Lemma 1.29. Der Algorithmus gibt nur dann eine Fehlermeldung aus, wenn eines der
1.5. Konzentration von Verteilungen
39
folgenden drei Ereignisse eintritt:
√
1
F1 : |{x ∈ R | x ≤ m}| < n3/4 − n,
2
1 3/4 √
F2 : |{x ∈ R | x ≥ m}| ≤ n − n,
2
3/4
F3 : |C| > 4n .
Beweis. Wir betrachten die drei Bedingungen in Zeile 7, die zu einer Fehlermeldung führen.
Das Ereignis
F entspricht genau der dritten Bedingung. Gilt r(a) ≥ n/2, so ist a, das
3
1 3/4 √
n
−
n
-kleinste
Element in R, größer als m. Demzufolge gibt es in R weniger als 12 n3/4 −
√2
n viele Elemente, die höchstens so groß wie m sind. Dies entspricht F1 . Analog argumentiert
√
man, dass s(b) ≥ n/2 bedeutet, dass b, das 12 n3/4 + n -kleinste Element in R, höchstens
√ so groß wie m ist. Demzufolge gibt es in R höchstens 12 n3/4 − n viele Elemente, die
mindestens so groß wie m sind. Dies entspricht F2 .
Lemma 1.30. Es gelten Pr(F1 ) ≤ 14 n−1/4 und Pr(F2 ) ≤ 14 n−1/4 .
Beweis. Die Wahrscheinlichkeit, dass ein uniform zufälliges Element aus S höchstens so groß
wie der Median m ist, beträgt genau 1/2 (wir gehen davon aus, dass n gerade ist). Damit
ist die Anzahl an Elementen in C, die höchstens so groß wie m sind, eine binomialverteilte
Zufallsvariable X mit den Parametern n3/4 und 1/2. Das Ereignis F1 is äquivalent zu X <
√
1 3/4
− n. Die Varianz von X beträgt n3/4 /4. Mit der Tschebyschew-Ungleichung ergibt
2n
sich somit
√
√
1
1
Pr(F1 ) = Pr X < n3/4 − n ≤ Pr X ≤ n3/4 − n
2
2
√
Var(X)
1
≤ Pr |X − E(X)| ≥ n ≤
= n−1/4 .
n
4
Bis auf eine kleine Änderung, können wir die Wahrscheinlichkeit von F2 analog abschätzen.
Die Wahrscheinlichkeit, dass ein uniform zufälliges Element aus S mindestens so groß wie
der Median m ist, beträgt genau 1/2 + 1/n, wenn n gerade ist. Damit ist die Anzahl dieser
Elemente eine Zufallsvariable X mit den Parametern n3/4 und 1/2 + 1/n. Das Ereignis F2
√
ist äquivalent zu X ≤ 12 n3/4 − n. Die Varianz von X beträgt
n
3/4
·
1 1
+
2 n
·
1 1
−
2 n
1
≤ n3/4 .
4
Somit können wir die Tschebyschew-Ungleichung für F2 genauso wie für F1 anwenden.
Es bleibt, die Wahrscheinlichkeit des Fehlerereignisses F3 abzuschätzen.
Lemma 1.31. Es gilt Pr(F3 ) ≤ 21 n−1/4 .
Beweis. Falls die Menge C mehr als 4n3/4 Elemente enthält, so enthält sie mindestens 2n3/4
Elemente, die kleiner als der Median m sind, oder sie enthält mindestens 2n3/4 Elemente, die
größer als der Median m sind. Dementsprechend können wir zwei Ereignisse F3,1 und F3,2
wie folgt definieren:
F3,1 : C enthält mindestens 2n3/4 Elemente, die kleiner als der Median m sind,
F3,2 : C enthält mindestens 2n3/4 Elemente, die größer als der Median m sind.
40
1. Grundlagen der Wahrscheinlichkeitstheorie
Es gilt dann F3 ⊆ F3,1 ∪ F3,2 und wir können die Wahrscheinlichkeit von F3 mit Hilfe einer
Union-Bound abschätzen, wenn wir die Wahrscheinlichkeiten von F3,1 und F3,2 abgeschätzt
haben.
Wir schätzen nur die Wahrscheinlichkeit des Ereignisses F3,1 ab. Das Ereignis F3,2 ist zwar
nicht ganz symmetrisch, da n gerade ist, aber seine Wahrscheinlichkeit kann analog mit
demselben Ergebnis abgeschätzt werden. Das Ereignis F3,1 tritt genau dann ein, wenn |{x ∈
S | x ≤ a}| ≤ n/2 − 2n3/4 gilt, wie die folgende Abbildung illustriert.
C
a
m
m0
b
n/2 Elemente
mindestens 2n3/4 Elemente wegen F3,1
höchstens n/2 − 2n3/4 Elemente
√
Sei y ∈ S das (n/2 − 2n3/4 )-kleinste Element in S. Da a das ( 12 n3/4 − n)-kleinste Element
√
in R ist und gemäß obiger Argumentation a ≤ y gilt, gibt es in R mindestens ( 21 n3/4 − n)
viele Elemente, die höchstens so groß wie y sind.
Sei X die Zufallsvariable, die angibt, wie viele Elemente in R höchstens so groß wie y sind.
Dann ist X binomialverteilt mit den Parametern n3/4 und (1/2 − 2n−1/4 ). Somit gelten
√
1
E(X) = n3/4 − 2 n
2
und
Var(X) = n
3/4
1
− 2n−1/4
2
1
1
+ 2n−1/4 ≤ n3/4 .
2
4
Wir können nun die Tschebyschew-Ungleichung anwenden und erhalten
√
√
1
Var(X)
1
Pr(F3,1 ) ≤ Pr X ≥ n3/4 − n ≤ Pr |X − E(X)| ≥ n ≤
≤ n−1/4 .
2
n
4
Wegen Pr(F3,2 ) = Pr(F3,1 ) folgt das Lemma nun mit Hilfe einer Union-Bound:
1
Pr(F3 ) ≤ Pr(F3,1 ∪ F3,2 ) ≤ Pr(F3,1 ) + Pr(F3,2 ) ≤ n−1/4 .
2
Damit ist die Analyse des Algorithmus abgeschlossen und wir erhalten insgesamt das folgende
Theorem.
Theorem 1.32. Die Wahrscheinlichkeit, dass der Algorithmus Randomized-Median eine
Fehlermeldung ausgibt, ist höchstens n1/4 .
Beweis. Wir haben oben bereits gesagt, dass der Algorithmus nur dann eine Fehlermeldung
ausgibt, wenn F1 , F2 oder F3 gilt. Also folgt mit einer Union-Bound und den Lemmata 1.30
und 1.31 direkt, dass die Wahrscheinlichkeit, eine Fehlermeldung auszugeben, durch
Pr(F1 ) + Pr(F2 ) + Pr(F3 ) ≤ n−1/4
nach oben beschränkt ist.
1.5. Konzentration von Verteilungen
41
Der Algorithmus Randomized-Median hat unabhängig von den Zufallsentscheidungen immer eine lineare Laufzeit. Es besteht aber die Möglichkeit, dass er eine Fehlermeldung ausgibt. Wir können den Algorithmus leicht in einen randomisierten Algorithmus umbauen,
der stets den Median zurückgibt, dessen Laufzeit aber eine Zufallsvariable ist. Dazu wiederholen wir den Algorithmus Randomized-Median einfach solange unabhängig, bis er den
Median ausgibt. Da die Erfolgswahrscheinlichkeit in jeder Wiederholung unabhängig mindestens 1 − n−1/4 beträgt, können wir die Anzahl Wiederholungen durch eine geometrisch
Verteilte Zufallsvariable mit Parameter 1 − n−1/4 abschätzen. Im Erwartungswert benötigen
wir somit 1/(1 − n−1/4 ) = Θ(1) viele Wiederholungen und erhalten damit einen randomisierten Algorithmus, der immer das richtige Ergebnis zurückliefert und dessen Laufzeit im
Erwartungswert linear ist. Wir werden diese zwei Arten von randomisierten Algorithmen im
nächsten Kapitel systematischer betrachten.
Kapitel 2
Komplexitätstheorie für
randomisierte Algorithmen
Wir werden in diesem Kapitel genauer auf die formalen Grundlagen von randomisierten Algorithmen eingehen. Die Rechnermodelle wie Turing- und Registermaschinen, die wir bisher im
Studium kennengelernt haben, sind zur Modellierung von randomisierten Algorithmen nicht
geeignet, da sie es nicht vorsehen, dass zufällige Entscheidungen getroffen werden. Zwar haben wir bereits nichtdeterministische Turingmaschinen kennengelernt, diese kommen aber
zur Modellierung von randomisierten Algorithmen auch nicht in Frage, da sie (vermutlich)
keinem Rechnermodell entsprechen, das physikalisch umgesetzt werden kann.
Wir werden in diesem Kapitel erst ein geeignetes Rechnermodell zur Modellierung von randomisierten Algorithmen kennenlernen und dann entsprechende Komplexitätsklassen definieren. Anschließend werden wir uns mit der Frage beschäftigen, wie man untere Schranken
für randomisierte Algorithmen zeigen kann. Wir werden eine Technik kennenlernen, mit der
man für gewisse Probleme nachweisen kann, dass jeder randomisierte Algorithmus mindestens eine bestimmte Laufzeit benötigt.
Die Inhalte dieses Kapitels sind stark an die Kapitel 1.5, 2.1 und 2.2 von [6] angelehnt.
2.1
Rechnermodelle und Komplexitätsklassen
In diesem Abschnitt erweitern wir Begriffe, die wir in früheren Vorlesungen für deterministische Algorithmen kennengelernt haben, auf randomisierte Algorithmen. Dazu gehören
insbesondere Rechnermodelle und Komplexitätsklassen. Außerdem werden wir systematisch
auf die beiden verschiedenen Typen von randomisierten Algorithmen eingehen, die wir am
Ende von Abschnitt 1.5.2 bereits kurz angesprochen haben.
2.1.1
Probabilistische Rechnermodelle
Das Rechnermodell, das wir bei deterministischen Algorithmen zugrunde gelegt haben, ist
das Modell der Turingmaschine. Diese haben wir in der Vorlesung „Algorithmen und Berechnungskomplexität II“ als 7-Tupel (Q, Σ, Γ, B, q0 , q, δ) mit den folgenden Komponenten
kennengelernt.
• Q ist eine endliche Zustandsmenge.
42
2.1. Rechnermodelle und Komplexitätsklassen
43
• Σ ⊇ {0, 1} ist ein endliches Eingabealphabet.
• Γ ⊇ Σ ist ein endliches Bandalphabet.
• B ∈ Γ \ Σ ist das Leerzeichen (Blank).
• q0 ∈ Q ist der Startzustand.
• q ∈ Q ist der Stoppzustand.
• δ : (Q \ {q}) × Γ → Q × Γ × {R, L, N } ist die Zustandsüberführungsfunktion.
Eine Turingmaschine M berechnet eine Funktion fM : Σ∗ → Σ∗ ∪ {⊥}. Dabei gehen wir
davon aus, dass die Eingabe an der aktuellen Kopfposition beginnt und sich bis zum ersten Leerzeichen rechts davon erstreckt. Dann führt die Turingmaschine Schritte gemäß der
Funktion δ aus, bis sie den Stoppzustand erreicht. Die Ausgabe beginnt dann an der aktuellen Kopfposition und erstreckt sich wieder bis zum ersten Leerzeichen rechts davon. Hält
die Turingmaschine auf einer Eingabe x ∈ Σ∗ nicht, so definieren wir f (x) =⊥. Wir können
eine Turingmaschine auch einsetzen, um eine Sprache zu entscheiden. Wir sagen, dass die
Turingmaschine M die Sprache L ⊆ Σ∗ entscheidet, wenn für jedes x ∈ L gilt, dass f (x)
mit 1 beginnt, und wenn für jedes x ∈
/ L gilt, dass f (x) mit 0 beginnt. Lesern, die ihre
Kenntnisse über Turingmaschinen auffrischen möchten, sei [7] als Referenz empfohlen.
Eine probabilistische Turingmaschine (PTM) ist ein 8-Tupel (Q, Σ, Γ, B, q0 , q, δ0 , δ1 ). Der
einzige Unterschied zu einer herkömmlichen Turingmaschine ist, dass es zwei Zustandsüberführungsfunktionen δ0 und δ1 statt einer einzigen Funktion δ gibt. Anstatt in jedem Schritt
deterministisch einen Zustandsübergang gemäß δ zu machen, wird in jedem Schritt der PTM
unabhängig eine faire Münze geworfen. Zeigt diese „Kopf“ so wird der Zustandsübergang gemäß δ0 durchgeführt, ansonsten wird der Zustandsübergang gemäß δ1 durchgeführt. Somit
berechnet eine PTM M nicht mehr deterministisch eine Funktion fM : Σ∗ → Σ∗ ∪ {⊥}, sondern für jedes Paar (x, y) ∈ Σ∗ × (Σ∗ ∪ {⊥}) gibt es eine Wahrscheinlichkeit, dass y bei
Eingabe x ausgegeben wird. Geht es uns wieder darum, eine Sprache zu entscheiden, so
können wir analog für eine PTM M und ein Wort x ∈ Σ∗ die Wahrscheinlichkeit definieren, dass M das Wort akzeptiert. Deterministische Turingmaschinen sind der Spezialfall von
probabilistischen Turingmaschinen, in dem δ0 und δ1 übereinstimmen.
Wir sollten uns die Frage stellen, ob probabilistische Turingmaschinen ein gutes Modell realer
Rechner sind. Bei deterministischen Turingmaschinen hatten wir zunächst gezeigt, dass sie
genauso mächtig wie Registermaschinen sind. Dann haben wir uns überlegt, dass Registermaschinen ein gutes Modell realer Rechner darstellen. Obwohl es in fast allen Programmiersprachen die Möglichkeit gibt, Zufallszahlen zu erzeugen, stellt sich bei näherer Betrachtung
die Frage, wo diese Zufallszahlen eigentlich herkommen, wenn die Hardware deterministisch
arbeitet. Tatsächlich ist es ein nicht zu unterschätzendes Problem, eine längere Folge von
„Zufallsbits“ zu erzeugen. Dazu benutzt man normalerweise sogenannte Pseudozufallszahlengeneratoren. Diese werden mit einem kurzen hinreichend zufälligen Schlüssel initialisiert,
der zum Beispiel aus der Systemzeit oder den Mausbewegungen erzeugt wird. Aus dieser
zufälligen Initialisierung erzeugen sie dann eine lange Folge von Bits, die sich sehr ähnlich
verhält wie eine Folge von unabhängigen uniform zufälligen Bits. Damit kann das Modell
einer probabilistischen Turingmaschine mit realen Rechnern sehr gut nachgebildet werden.
Wir werden diese Diskussion hier aber nicht vertiefen.
Als eine Alternative zum Modell der probabilistischen Turingmaschine, das mehr Ähnlichkeit
zu realen Rechnern besitzt, können wir wieder Registermaschinen betrachten. Wir wissen
bereits, dass deterministische Turingmaschinen und Registermaschinen bis auf polynomielle
Faktoren in der Laufzeit gleichmächtig sind, wenn man das logarithmische Kostenmaß zu
44
2. Komplexitätstheorie für randomisierte Algorithmen
Grunde legt. Das bedeutet, dass man als Laufzeit nicht nur die Anzahl an Schritten zählt,
die die Registermaschine durchführt, sondern dass jeder Schritt eine Laufzeit proportional
zum Logarithmus der Zahlen besitzt, die in den Registern gespeichert sind, die für den Schritt
relevant sind. Erweitert man das Standardmodell der Registermaschine um einem Befehl, der
uniform zufällig und unabhängig von vorangegangenen Aufrufen entweder 0 oder 1 in den
Akkumulator schreibt, so erhalten wir ein Modell, das im logarithmischen Kostenmaß bis auf
polynomielle Faktoren in der Laufzeit gleichmächtig wie eine probabilistische Turingmaschine
ist.
Der Einfachheit halber haben wir in vorangegangenen Vorlesungen Registermaschinen oft im
uniformen Kostenmaß betrachtet. Das bedeutet, dass wir als Laufzeit lediglich die Anzahl
an Schritten gezählt haben. Wir haben argumentiert, dass dies für Algorithmen realistisch
ist, die nicht mit großen Zahlen operieren. Ähnlich werden wir es auch in dieser Vorlesung
wieder handhaben. Wir gehen sogar noch einen Schritt weiter und gehen davon aus, dass die
Registermaschine einen Befehl Uniform(k) besitzt, der ein uniform zufälliges Element aus
der Menge {1, . . . , k} erzeugt, wenn k polynomiell in der Eingabegröße beschränkt ist. Auf einer solchen probabilistischen Registermaschine können wir die randomisierten Algorithmen,
die wir in dieser Vorlesung kennengelernt haben und kennenlernen werden, einfach implementieren. Der Leser sollte sich aber klar machen, dass dieses Modell mächtiger ist als das
der probabilistischen Turingmaschine. Das liegt nicht nur am uniformen Kostenmaß, sondern
auch daran, dass zum Beispiel die uniform zufällige Auswahl eines Elementes aus einer Menge mit drei Elementen nur mit Hilfe von einer festen Anzahl an zufälligen Bits nicht möglich
ist. Dieses Problem werden wir in den Übungen noch weiter vertiefen. Da es sich hierbei
aber nur um ein technisches Detail handelt, werden wir Laufzeitanalysen von randomisierten
Algorithmen, die nicht mit großen Zahlen operieren, immer bezüglich Registermaschinen im
uniformen Kostenmaß durchführen, die um den Befehl Uniform(k) erweitert wurden.
2.1.2
Monte-Carlo- und Las-Vegas-Algorithmen
Wir haben nach der Vorstellung des Algorithmus Randomized-Median in Abschnitt 1.5.2
kurz diskutiert, dass wir randomisierte Algorithmen in zwei Kategorien einteilen können. Es
gibt randomisierte Algorithmen, bei denen die Laufzeit nicht zufällig ist, die aber eine gewisse
Fehlerwahrscheinlichkeit haben, und es gibt randomisierte Algorithmen, die stets das richtige
Ergebnis ausgeben, bei denen die Laufzeit aber eine Zufallsvariable ist. Algorithmen aus der
ersten Kategorie werden Monte-Carlo-Algorithmen genannt. Algorithmen aus der zweiten
Kategorie heißen Las-Vegas-Algorithmen. Die Namensgebung ist natürlich auf die Spielkasinos in diesen beiden Städten zurückzuführen, in denen Zufall auch eine wichtige Rolle
spielt. Als Eselsbrücke kann man die Anfangsbuchstaben nehmen: während Monte-CarloAlgorithmen „mostly correct“ sind, ist bei Las-Vegas-Algorithmen die Laufzeit variabel.
Wir können diese beiden Arten von randomisierten Algorithmen zueinander in Beziehung
setzen. Als erstes beobachten wir, dass jeder Las-Vegas-Algorithmus leicht in einen MonteCarlo-Algorithmus überführt werden kann.
Theorem 2.1. Es sei A ein Las-Vegas-Algorithmus für ein beliebiges Problem Π mit einer
erwarteten Laufzeit von höchstens f (n) für Instanzen von Π der Größe n. Dann existiert für
jedes α > 1 ein Monte-Carlo-Algorithmus Bα für Π mit einer Laufzeit von αf (n) und einer
Fehlerwahrscheinlichkeit von α1 .
Beweis. Der Algorithmus Bα simuliert maximal αf (n) viele Schritte des Algorithmus A auf
der gegebenen Eingabe der Länge n. Terminiert der Algorithmus im Laufe dieser Simulation,
2.1. Rechnermodelle und Komplexitätsklassen
45
so übernimmt Bα das korrekte Ergebnis von A. Ansonsten gibt Bα eine Fehlermeldung aus.
Dann ist Bα ein Monte-Carlo-Algorithmus, der nur dann eine Fehlermeldung ausgibt, wenn
die Laufzeit X von A auf der gegebenen Eingabe um mehr als den Faktor α größer ist als
die erwartete Laufzeit. Mit der Markow-Ungleichung ergibt sich
Pr(X > αf (n)) ≤ Pr(X ≥ αE(X)) ≤
1
.
α
Monte-Carlo-Algorithmen lassen sich nur dann leicht in Las-Vegas-Algorithmus überführen,
wenn es möglich ist, effizient zu testen, ob ihre Ausgabe korrekt ist.
Theorem 2.2. Es sei A ein Monte-Carlo-Algorithmus für ein Problem Π mit einer (deterministischen) Laufzeit von höchstens f (n) für Instanzen von Π der Größe n. Es sei p(n)
eine untere Schranke für die Wahrscheinlichkeit, dass die Ausgabe von A korrekt ist. Ferner
existiere ein deterministischer Algorithmus, der in einer Laufzeit von höchstens g(n) testet,
ob die Ausgabe von A korrekt ist. Dann existiert ein Las-Vegas-Algorithmus für Π mit einer
erwarteten Laufzeit von f (n)+g(n)
.
p(n)
Beweis. Wir wiederholen Algorithmus A und den deterministischen Test, ob die Ausgabe
korrekt ist, einfach solange, bis dies das erste Mal der Fall ist. Dann ist die Anzahl an
Wiederholungen X eine geometrische Zufallsvariable mit Parameter p(n). Somit beträgt die
erwartete Laufzeit
E((f (n) + g(n)) · X) = (f (n) + g(n)) · E(X) =
f (n) + g(n)
.
p(n)
In dem Monte-Carlo-Algorithmus zur Bestimmung des Medians war ein solcher Test auf
Korrektheit bereits integriert, aber wir können uns auch einen anderen randomisierten Algorithmus zur Bestimmung des Medians vorstellen, der stets ein Element aus der gegebenen
Menge S ausgibt, welches aber nur mit einer gewissen Wahrscheinlichkeit der Median ist.
Dann könnten wir in linearer Zeit testen, ob das zurückgegebene Element wirklich der Median
ist und mit Hilfe von Theorem 2.2 einen Las-Vegas-Algorithmus entwerfen.
2.1.3
Komplexitätsklassen
Nun definieren wir Komplexitätsklassen für randomisierte Algorithmen. In vorangegangenen Vorlesungen haben wir die beiden Klassen P und N P kennengelernt. Diese eignen sich
aber nicht zur Einordnung von Problemen, die von randomisierten Algorithmen gelöst werden. Genauso wie bisher werden wir uns bei der Definition von Komplexitätsklassen auf
Entscheidungsprobleme bzw. Sprachen beschränken. Dies ist dadurch gerechtfertigt, dass
die Komplexität der Optimierungsvariante eines Problems in der Regel polynomiell mit der
Komplexität der entsprechenden Entscheidungsvariante verknüpft ist.
Wir betrachten noch einmal das Problem aus Abschnitt 1.3.2, einen minimalen Schnitt zu
berechnen. Die Entscheidungsvariante dieses Problems entspricht der Sprache
L = {code(G, k) | der minimale Schnitt in G hat Kardinalität k},
wobei code(G, k) eine Kodierung eines Graphen G und einer Zahl k ist. Der Leser möge sich
selbst als Übung und Wiederholung überlegen, wie man einen effizienten Algorithmus für
dieses Entscheidungsproblem in einen effizienten Algorithmus für die Optimierungsvariante
46
2. Komplexitätstheorie für randomisierte Algorithmen
überführen kann, in der nur ein Graph G gegeben ist, für den ein minimaler Schnitt gesucht
wird.
Eine Sprache L gehört zu der Klasse P, wenn es eine deterministische Turingmaschine mit
polynomieller Laufzeit gibt, die sie entscheidet. Das heißt, die Turingmaschine akzeptiert
jedes Wort x ∈ L und verwirft jedes Wort x ∈
/ L. Für randomisierte Algorithmen definieren
wir mehrere Komplexitätsklassen, je nachdem, welche Fehler auftreten können.
Definition 2.3. Eine Sprache L ⊆ Σ∗ gehört zu der Klasse RP (Randomized Polynomial time), wenn es eine probabilistische Turingmaschine M gibt, deren Laufzeit immer polynomiell
beschränkt ist und für die für alle Eingaben x ∈ Σ∗ gilt:
x ∈ L ⇒ Pr(M akzeptiert x) ≥
1
2
und
x∈
/ L ⇒ Pr(M akzeptiert x) = 0.
Die Klasse RP enthält also alle Probleme, für die es einen Monte-Carlo-Algorithmus mit
einseitigem Fehler gibt. Während Nein-Instanzen sicher als solche erkannt werden, darf der
Algorithmus sich bei Ja-Instanzen mit einer Wahrscheinlichkeit von höchstens 1/2 irren. Um
auch Probleme klassifizieren zu können, für die wir einen Monte-Carlo-Algorithmus haben,
der Ja-Instanzen sicher erkennt und sich nur bei Nein-Instanzen irren kann, führen wir das
Komplement von Komplexitätsklassen ein. Sei C eine beliebige Komplexitätsklasse, d. h. eine
Menge von Sprachen über dem Alphabet Σ. Wir definieren das Komplement co-C von C
als co-C = {L ⊆ Σ∗ | L ∈ C}, wobei L = {x ∈ Σ∗ | x ∈
/ L} wie üblich das Komplement der
Sprache L bezeichnet. Die Klasse co-RP enthält alle Sprachen, für es eine probabilistische
Turingmaschine M gibt, deren Laufzeit immer polynomiell beschränkt ist und die alle Eingaben x ∈ L stets akzeptiert und alle Eingaben x ∈
/ L höchstens mit Wahrscheinlichkeit 1/2
akzeptiert.
Um dies zu verdeutlichen, betrachten wir noch einmal den Test auf Gleichheit zweier Polynome mit einseitigem Fehler, den wir in Abschnitt 1.1 kennengelernt haben. Dies war ein
Algorithmus für die Sprache
L = {code(p, q) | p und q stimmen überein},
wobei code(p, q) die Kodierung zweier Polynome p und q bezeichnet. Der Algorithmus, der eine zufällige Zahl in die Polynome einsetzt und die Ergebnisse vergleicht, erkennt Ja-Instanzen
mit Wahrscheinlichkeit 1, kann sich aber bei Nein-Instanzen irren. Somit gehört die Sprache L zu der Klasse co-RP. Denkt man an reelle Polynome, so ist natürlich klar, dass L sogar
zu P gehört, wenn die Polynome p und q explizit gegeben sind. Über allgemeinen Körpern
ist das allerdings nicht mehr der Fall, da dort zwei Polynome auch überall übereinstimmen
können, ohne dass alle ihre Koeffizienten übereinstimmen.
Analog zu der Klasse RP für Algorithmen mit einseitigem Fehler definieren wir nun die Klasse BPP, die alle Probleme enthält, für die es Monte-Carlo-Algorithmen mit beschränktem
zweiseitigem Fehler gibt.
Definition 2.4. Eine Sprache L ⊆ Σ∗ gehört zu der Klasse BPP (Bounded-error Probabilistic Polynomial time), wenn es eine probabilistische Turingmaschine M gibt, deren Laufzeit
immer polynomiell beschränkt ist und für die für alle Eingaben x ∈ Σ∗ gilt:
x ∈ L ⇒ Pr(M akzeptiert x) ≥
3
4
und
1
x∈
/ L ⇒ Pr(M akzeptiert x) ≤ .
4
Sowohl die Klasse RP als auch die Klasse BPP beziehen sich auf Monte-Carlo-Algorithmen.
Wir definieren nun noch eine Klasse für Las-Vegas-Algorithmen.
2.1. Rechnermodelle und Komplexitätsklassen
47
Definition 2.5. Eine Sprache L ⊆ Σ∗ gehört zu der Klasse ZPP (Zero-error Probabilistic
Polynomial time), wenn es eine probabilistische Turingmaschine M mit einer erwarteten
polynomiellen Laufzeit gibt, die die Sprache L immer korrekt entscheidet.
Die Klasse ZPP enthält somit genau die Probleme, die von einem Las-Vegas-Algorithmus
mit erwarteter polynomieller Laufzeit gelöst werden können. Bei einem solchen Algorithmus
spricht man auch von einem Algorithmus mit nullseitigem Fehler. Der Grund dafür ist, dass
man einen Las-Vegas-Algorithmus, wie wir in Abschnitt 2.1.2 gesehen haben, in einen MonteCarlo-Algorithmus umbauen kann, der niemals ein falsches Ergebnis ausgibt, der aber mit
einer gewissen Wahrscheinlichkeit eine Fehlermeldung ausgibt. Man kann außerdem zeigen,
dass ZPP = RP ∩ co-RP und damit insbesondere ZPP ⊆ RP gelten (siehe Übung).
Die Fehlerwahrscheinlichkeiten in den Definitionen 2.3 und 2.4 sind bis zu einem gewissen
Grad willkürlich. Anstatt einer Fehlerwahrscheinlichkeit von höchstens 1/2 in der Definition
von RP zu fordern, hätten wir auch jede andere Konstante größer Null wählen können, ohne
dadurch eine andere Komplexitätsklasse zu erhalten. Ebenso können wir bei der Definition
von BPP 3/4 und 1/4 durch beliebige Konstanten echt größer bzw. echt kleiner als 1/2
ersetzen, ohne eine andere Komplexitätsklasse zu erhalten. Der Leser sollte dies als Übung
beweisen.
Definiert man neue Komplexitätsklassen, so stellt sich natürlich sofort die Frage, wie sie in
Relation zu den bereits bekannten Klassen stehen. Da deterministische Turingmaschinen ein
Spezialfall von probabilistischen sind, ist P ⊆ RP, P ⊆ BPP und P ⊆ ZPP. Der Vergleich
mit N P ist schwieriger.
Theorem 2.6. Es gilt RP ⊆ N P.
Beweis. Sei eine beliebige Sprache L ∈ RP gegeben. Dann gibt es eine probabilistische
Turingmaschine, die L mit einem einseitigen Fehler von höchstens 1/2 entscheidet. Wir fassen
diese Turingmaschine einfach als nichtdeterministische Turingmaschine auf, die in jedem
Schritt zwei mögliche Übergänge besitzt und sich entscheiden kann, ob sie δ0 oder δ1 folgt.
Erhält diese Turingmaschine als Eingabe ein Wort x ∈
/ L, so gibt es gemäß der Definition
von RP keinen Rechenweg, der dazu führt, dass x akzeptiert wird. Ist hingegen x ∈ L, so
besagt die Definition von RP, dass mindestens die Hälfte der Rechenwege zum Akzeptieren
von x führt. Insbesondere gibt es also einen solchen Rechenweg und damit ist gezeigt, dass
die nichtdeterministische Turingmaschine die Sprache L entscheidet.
Insgesamt gilt somit ZPP ⊆ RP ⊆ N P. Der Beweis legt eine alternative Charakterisierung
von N P nahe, die an die Definition von RP angelehnt ist.
Korollar 2.7. Eine Sprache L ⊆ Σ∗ gehört genau dann zu N P, wenn es eine probabilistische
Turingmaschine M gibt, deren Laufzeit immer polynomiell beschränkt ist und für die für alle
Eingaben x ∈ Σ∗ gilt:
x ∈ L ⇒ Pr(M akzeptiert x) > 0
und
x∈
/ L ⇒ Pr(M akzeptiert x) = 0.
Bis heute ist es nicht gelungen, die Klassen BPP und N P zueinander in Beziehung zu setzen.
Obwohl wir BPP als die Klasse von Problemen auffassen, die effizient von randomisierten
Algorithmen gelöst werden können, und einige Forscher sogar glauben, dass P = BPP gilt,
ist es bisher noch nicht einmal gelungen zu zeigen, dass BPP ⊆ N P gilt. Mit dem heutigen
Wissen ist es selbst unter der Annahme P =
6 N P möglich, dass N P ⊆ BPP gilt. Dies wird
48
2. Komplexitätstheorie für randomisierte Algorithmen
im Allgemeinen aber als unwahrscheinlich angenommen, da es bedeuten würde, dass es für
alle Probleme aus N P effiziente Algorithmen mit beliebig kleiner Fehlerwahrscheinlichkeit
gäbe.
2.2
Untere Schranken für randomisierte Algorithmen
Bislang haben wir uns in der Vorlesung damit beschäftigt, randomisierte Algorithmen für
verschiedene Probleme zu entwerfen. Eine natürliche Frage ist, wie gut diese Algorithmen
eigentlich sind. Bei jedem Problem können wir uns fragen, ob es bessere Algorithmen mit
einer kleineren Laufzeit oder einer kleineren Fehlerwahrscheinlichkeit gibt. Leider hat es
sich als ziemlich schwierige Aufgabe erwiesen, untere Schranken für die Komplexität von
Problemen zu zeigen. Für randomisierte Algorithmen gibt es jedoch eine Methode, mit deren
Hilfe man für viele Probleme untere Schranken für die erwartete Laufzeit jedes Las-VegasAlgorithmus zeigen kann. Bevor wir diese Methode beschreiben, führen wir zunächst das
Problem der Spielbaumauswertung ein, anhand dessen wir die Methode illustrieren werden.
2.2.1
Spielbaumauswertung
Ein Spielbaum ist ein Baum, in dem jedes Blatt einen reellen Wert besitzt. Jeder innere Knoten besitzt ebenfalls einen Wert, der sich durch eine bestimmte Operation aus den Werten
seiner Kinder berechnet. Gängige Operationen sind zum Beispiel MIN und MAX, die den
kleinsten bzw. größten Wert eines der Kinder ausgeben. Unter Spielbaumauswertung verstehen wir das Problem, den Wert der Wurzel zu bestimmen. Der Name dieses Problems kommt
daher, dass Spielbäume bei Schach und anderen Spielen dazu genutzt werden, um möglichst
gute Strategien zu berechnen.
Wir betrachten Spielbaumauswertung für den Spezialfall, dass ein vollständiger binärer
Baum ausgewertet werden muss, dessen Blätter nur die Werte 0 oder 1 haben. Als Operationen erlauben wir nur MIN- und MAX-Operationen, die wir auf Grund der booleschen
Werte auch als AND- und OR-Operationen bezeichnen werden. Wir bezeichnen einen solchen
Baum als Tk -Baum, wenn er die Tiefe 2k besitzt und alle inneren Knoten mit einem geraden
Abstand von der Wurzel (insbesondere die Wurzel selbst) AND-Operationen berechnen und
alle anderen inneren Knoten OR-Operationen. Die folgende Abbildung zeigt einen T1 -Baum.
0
AND
0
0
OR
OR
0
1
1
0
Anstatt die Laufzeit von Algorithmen zur Spielbaumauswertung zu analysieren, betrachten
wir im Folgenden nur, wie viele Blätter zur Bestimmung des Wertes der Wurzel ausgelesen werden. Alle anderen Operationen, die die Algorithmen durchführen, vernachlässigen
wir. Zum einen erleichtert das die Analyse und zum anderen ist die erwartete Anzahl von
ausgelesenen Blättern bei dem Algorithmus, den wir betrachten werden, in der gleichen Größenordnung wie seine Laufzeit.
2.2. Untere Schranken für randomisierte Algorithmen
49
Einen Algorithmus können wir einfach als eine adaptive Reihenfolge betrachten, in der die
Werte der Blätter ausgelesen werden. Ein deterministischer Algorithmus liest beispielsweise
deterministisch zunächst immer den Wert desselben Blattes. Abhängig davon, ob dort eine 0
oder eine 1 steht, wählt er dann deterministisch das zweite zu lesende Blatt aus und so weiter. Es ist eine Übungsaufgabe für den Leser, zu zeigen, dass es für jeden deterministischen
Algorithmus eine Eingabe gibt, die ihn dazu zwingt, die Werte aller Blätter zu auszulesen.
Die wesentliche Idee zur Konstruktion dieser Eingabe können wir wie folgt beschreiben. Wir
nennen einen Knoten determiniert, wenn sich sein Wert aus Werten der bisher ausgelesenen Blätter ergibt. Wir nennen einen Knoten vollständig aufgedeckt, wenn die Werte aller
Blätter in dem Teilbaum, dessen Wurzel er ist, gelesen wurden. Wir wählen die Werte der
gelesenen Blätter so, dass nur vollständig aufgedeckte Knoten determiniert sind. Das heißt
insbesondere, dass wir alle Blätter auslesen müssen, bevor der Wert der Wurzel feststeht.
Man kann induktiv zeigen, dass stets eine solche Wahl der Werte der Blätter existiert.
Der naheliegende randomisierte Algorithmus, den wir nun betrachten werden, wertet die
Teilbäume eines jeden Knotens in zufälliger Reihenfolge aus. Wertet er beispielsweise einen
OR-Knoten aus, der den Wert 1 hat, so hat mindestens einer seiner beiden Söhne ebenfalls
den Wert 1. Wählt er diesen zuerst aus, was mit Wahrscheinlichkeit 1/2 passiert, so muss er
den anderen nicht mehr auswerten. Genauso verhält es sich mit AND-Knoten mit Wert 0.
Wie sieht es jedoch mit OR-Knoten mit Wert 0 und AND-Knoten mit Wert 1 aus? Es sieht
so aus, als könnten wir hier durch die zufällige Reihenfolge der Auswertung nichts sparen.
Aber auch diese Knoten helfen uns weiter, denn der Vater eines OR-Knotens mit Wert 0
ist ein AND-Knoten mit Wert 0, also ein für uns guter Knoten. Ebenso ist der Vater eines
AND-Knotens mit Wert 1 ein OR-Knoten mit Wert 1, also ebenfalls ein für uns guter Knoten.
RandomGameTree(T, v)
1. if v ist Blatt return Wert von v.
2. else
3.
Seien u0 und u1 die Kinder von v.
4.
Wähle i ∈ {0, 1} uniform zufällig.
5.
if v ist OR-Knoten then
6.
if RandomGameTree(T, ui )=1 then return 1.
7.
else return RandomGameTree(T, u1−i ).
8.
9.
10.
if v ist AND-Knoten then
if RandomGameTree(T, ui )=0 then return 0.
else return RandomGameTree(T, u1−i ).
Theorem 2.8. Die erwartete Anzahl an Blättern, die der Algorithmus RandomGameTree
ausliest, ist für jeden Tk -Baum höchstens 3k .
Beweis. Wir zeigen die Aussage mittels Induktion über k. Der Induktionsanfang für k = 0
ist trivial. Wir betrachten nun den Induktionsschritt für k ≥ 1. In diesem Falle hat der Tk Baum einen AND-Knoten v als Wurzel mit zwei OR-Knoten u0 und u1 als Söhnen, die jeweils
zwei Tk−1 -Bäume als Nachkommen haben. Diese Situation ist in der folgenden Abbildung
dargestellt.
50
2. Komplexitätstheorie für randomisierte Algorithmen
v
AND
u0
Tk−1
OR
OR
Tk−1
Tk−1
u1
Tk−1
Wir analysieren zunächst die OR-Knoten u0 und u1 . Wir können für beide Knoten dieselbe
Analyse durchführen, weswegen wir nicht zwischen den beiden Knoten unterscheiden und
einfach allgemein über den Knoten ui für i ∈ {0, 1} sprechen. Wir unterscheiden zwei Fälle.
Hat der OR-Knoten ui Wert 1, so liefert mindestens einer seiner Söhne ebenfalls den Wert 1
zurück. Werten wir diesen zuerst aus, was mit Wahrscheinlichkeit 1/2 passiert, so genügen
zur Auswertung von ui im Erwartungswert gemäß Induktionsvoraussetzung 3k−1 Blätter.
Der andere Sohn von ui ergibt im schlimmsten Fall eine 0. Werten wir diesen zuerst aus, so
müssen wir auch noch den anderen Sohn auswerten und mit der Linearität des Erwartungswertes ergibt sich eine erwartete Anzahl ausgelesener Blätter von 2 · 3k−1 . Da beide Fälle
mit Wahrscheinlichkeit 1/2 eintreten, können wir die erwartete Anzahl ausgelesener Blätter
durch
1 k−1 1
3
·3
+ · 2 · 3k−1 = · 3k−1
2
2
2
nach oben beschränken. Hat der OR-Knoten ui den Wert 0, so müssen beide Kinder ausgewertet werden, was eine erwartete Anzahl von höchstens 2 · 3k−1 ausgelesenen Blättern
bedeutet.
Nun betrachten wir die Wurzel v des Tk -Baumes. Dies ist ein AND-Knoten. Falls dieser den
Wert 1 hat, so haben bei Söhne ebenfalls den Wert 1. Nutzen wir wieder Linearität des
Erwartungswertes, so ergibt sich mit der obigen Analyse für ui , dass die erwartete Anzahl
ausgelesener Blätter durch
3
2 · · 3k−1 = 3k
2
nach oben beschränkt ist. Ist der Wert des AND-Knotens v gleich 0, so hat mindestens einer
seiner Söhne ebenfalls den Wert 0. Wird dieser zuerst ausgewertet, so ist die erwartete Anzahl
ausgelesener Blätter 2 · 3k−1 . Ansonsten, falls der andere Sohn den Wert 1 hat und dieser
zuerst ausgewertet wird, so ist die erwartete Anzahl ausgelesener Blätter höchstens 32 · 3k−1 +
2 · 3k−1 = 72 · 3k−1 . Da beide Fälle mit Wahrscheinlichkeit 1/2 eintreten, ist die erwartete
Anzahl ausgelesener Blätter insgesamt
1
1 7
11 k−1
· 2 · 3k−1 + · · 3k−1 =
·3
≤ 3k .
2
2 2
4
Da die Anzahl Blätter in einem Tk -Baum n = 4k beträgt, ist die erwartete Anzahl an
Blättern, die der Las-Vegas-Algorithmus RandomGameTree ausliest, durch
3k = 3log4 n = nlog4 3 ≤ n0.793
nach oben beschränkt.
2.2. Untere Schranken für randomisierte Algorithmen
2.2.2
51
Das Min-Max-Prinzip
2-Personen-Nullsummenspiele
Die Methode zum Beweis von unteren Schranken für randomisierte Algorithmen ist durch
Ideen aus der Spieltheorie inspiriert. Zunächst betrachten wir 2-Personen-Nullsummenspiele.
Dabei handelt es sich um Spiele, die durch eine (n×m)-Matrix mit reellen Einträgen beschrieben sind. Es gibt einen Spalten- und einen Zeilenspieler, die jeweils eine Spalte j und eine
Zeile i der Matrix auswählen. Der Spaltenspieler muss dann einen Betrag in Höhe von Mij an
den Zeilenspieler zahlen. Das bedeutet, der Spaltenspieler möchte Mij minimieren, während
der Zeilenspieler es maximieren möchte.
Wir können beispielsweise das berühmte Spiel Schere-Stein-Papier als ein 2-Personen-Nullsummenspiel mit der folgenden (3 × 3)-Matrix M auffassen.
Schere
Stein
Papier
Schere
0
1
-1
Stein
-1
0
1
Papier
1
-1
0
Verliert der Spaltenspieler, so zahlt er 1 an den Zeilenspieler. Gewinnt er, so zahlt er −1,
erhält also 1 vom Zeilenspieler. Bei Unentschieden findet keine Zahlung statt.
Spieler, die auf Nummer sicher gehen und sich gegen alle möglichen Strategien des anderen
Spielers wappnen möchten, verfolgen eine sogenannte Min-Max-Strategie. Das heißt, der
Zeilenspieler wählt die Zeile i, für die minj Mij am größten wird. Damit kann er erreichen,
dass er mindestens
VR = max min Mij
i
j
vom Spaltenspieler erhält. Der Spaltenspieler wählt die Spalte j, für die maxi Mij am kleinsten wird. Damit kann er erreichen, dass er höchstens einen Betrag von
VC = min max Mij
j
i
an den Zeilenspieler zahlen muss. Mit dieser Anschauung ist klar, dass VR ≤ VC für jede
Matrix M gilt.
Gilt sogar VR = VC , so ist es für beide Spieler vernünftig, sich an die Min-Max-Strategie zu
halten. Dadurch wird dann ein sogenanntes Nash-Gleichgewicht erreicht, in dem es für keinen
Spieler Sinn ergibt, seine Strategie zu ändern. Gilt aber VR < VC wie im Beispiel SchereStein-Papier, dann ist die Min-Max-Strategie kein Gleichgewicht, weil man das Wissen über
die Strategie des anderen Spielers ausnutzen kann, um die eigene Strategie zu verbessern.
Um dieses Problem zu lösen, nutzt man Randomisierung. Statt eine Zeile zu wählen, wählt der
Zeilenspieler eine Wahrscheinlichkeitsverteilung p auf den Zeilen. Wir können p ∈ [0, 1]n als
einen Vektor p = (p1 , . . . , pn ) mit p1 +. . .+pn = 1 auffassen. Ebenso wählt der Spaltenspieler
eine Wahrscheinlichkeitsverteilung q ∈ [0, 1]m auf den Spalten, wobei q = (q1 , . . . , qm ) ein
Vektor mit q1 + . . . + qm = 1 ist. Wählen beide Spieler ihre Strategie unabhängig gemäß
dieser Verteilungen, dann ist der erwartete Betrag, den der Spaltenspieler an den Zeilenspieler
zahlen muss, genau
pT M q =
n X
m
X
i=1 j=1
pi Mij qj .
52
2. Komplexitätstheorie für randomisierte Algorithmen
Wir definieren nun VR und VC wie vorhin, nur dass wir diesmal randomisierte Strategien
zulassen. Dann ist
VR = max min pT M q
p
q
die größte erwartete Auszahlung, die sich der Zeilenspieler gegen jede Gegenstrategie des
Spaltenspielers sichern kann. Ebenso kann der Spaltenspieler erreichen, dass er im Erwartungswert niemals mehr als
VC = min max pT M q
q
p
an den Zeilenspieler zahlen muss. John von Neumann hat das folgende erstaunliche Ergebnis
bewiesen.
Theorem 2.9. Für jede Matrix M gilt
VR = max min pT M q = min max pT M q = VC .
p
q
q
p
Lassen wir also Randomisierung zu, so besitzt jedes 2-Personen-Nullsummenspiel ein NashGleichgewicht, d. h. ein Paar von Strategien, von dem keiner der beiden Spieler einen Anreiz
hat, abzuweichen. Eine einfache Folgerung aus diesem Theorem ist das folgende Korollar.
Korollar 2.10. Es bezeichne ei den i-ten Einheitsvektor. Für jede Matrix M gilt
VR = max min pT M ej = min max eTi M q = VC .
p
j
q
i
Ist die randomisierte Strategie des Gegners bekannt, so existiert also stets eine beste Gegenstrategie, die deterministisch ist.
Anwendung auf randomisierte Algorithmen
Nun diskutieren wir, wie uns der obige Exkurs in die Spieltheorie dabei hilft, untere Schranken für randomisierte Algorithmen zu zeigen. Dazu betrachten wir ein Problem Π, für das
es für jedes n ∈ N nur eine endliche Anzahl an Eingaben der Länge n gibt. Wir gehen
davon aus, dass n fixiert ist und bezeichnen mit I die Menge der Eingaben der Länge n.
Außerdem darf es für jede Eingabelänge n ∈ N nur endlich viele essentiell verschiedene deterministische Algorithmen für das Problem Π geben. Wieder gehen wir davon aus, dass n
fixiert ist und bezeichnen mit A die Menge aller Algorithmen für Eingabelänge n. Natürlich
kann man für jedes Problem beliebig viele deterministische Algorithmen dadurch erhalten,
dass man einen beliebigen korrekten deterministischen Algorithmus nimmt und irgendwelche nicht notwendigen Operationen hinzufügt, die die Ausgabe nicht verändern. Wenn wir
von essentiell verschiedenen Algorithmen sprechen, so müssen wir für jedes Problem genau
definieren, was damit gemeint ist. Bei dem Problem der Spielbaumauswertung interessiert
uns beispielsweise nur die adaptive Reihenfolge, in der die Werte Blätter ausgelesen werden.
Von diesen Reihenfolgen gibt es für jedes feste n nur eine endliche Anzahl.
Für A ∈ A und I ∈ I sei C(A, I) ∈ R≥0 ein Maß dafür, wie gut Algorithmus A auf Eingabe I
arbeitet. Uns interessiert in dieser Vorlesung nur der Spezialfall, dass C(A, I) die Laufzeit
von A auf I angibt, prinzipiell sind aber auch andere Maße wie zum Beispiel die Güte bei
Approximationsalgorithmen denkbar. Wir definieren nun ein 2-Personen-Nullsummenspiel,
in dem der Spaltenspieler dem Algorithmendesigner entspricht und der Zeilenspieler einem
Gegner, der eine möglichst schlechte Eingabe wählen möchte. Für einen Algorithmus A ∈ A
und eine Eingabe I ∈ I enthält die (|I|×|A|)-Matrix M an der Stelle MIA den Wert C(A, I).
2.2. Untere Schranken für randomisierte Algorithmen
53
Eine reine Strategie des Spaltenspielers entspricht einem deterministischen Algorithmus aus
der Menge A. Eine gemischte Strategie des Spaltenspielers ist eine Wahrscheinlichkeitsverteilung q ∈ [0, 1]|A| auf den deterministischen Algorithmen. Diese können wir als einen LasVegas-Algorithmus betrachten, der zufällig gemäß der Verteilung q einen deterministischen
Algorithmus auswählt, welchen er dann auf die gegebene Eingabe anwendet. Andersherum
können wir jeden Las-Vegas-Algorithmus als eine Wahrscheinlichkeitsverteilung auf der Menge A der deterministischen Algorithmen darstellen. Der Leser möge an dieser Stelle über ein
formales Argument hierfür nachdenken. Das bedeutet insgesamt, dass die Menge der gemischten Strategien des Spaltenspielers genau mit der Menge der Las-Vegas-Algorithmen
übereinstimmt.
Das Min-Max-Theorem angewendet auf das soeben definierte 2-Personen-Nullsummenspiel
liefert folgendes Korollar.
Korollar 2.11. Es bezeichnen P und Q die Mengen der gemischten Strategien des Zeilenbzw. Spaltenspielers. Für p ∈ P und q ∈ Q bezeichnen Ip und Aq eine zufällige Eingabe,
die gemäß p gewählt wird, bzw. einen zufälligen Algorithmus, der gemäß q gewählt wird. Es
gelten
max min E(C(Ip , Aq )) = min max E(C(Ip , Aq ))
p∈P q∈Q
q∈Q p∈P
und
max min E(C(Ip , A)) = min max E(C(I, Aq )).
p∈P A∈A
q∈Q I∈I
Aus diesem Korollar ergibt sich direkt ein weiteres Korollar, das wir zum Beweis unterer
Schranken einsetzen werden.
Korollar 2.12. Für alle Verteilungen p ∈ P über I und für alle Verteilungen q ∈ Q über A
gilt
min E(C(Ip , A)) ≤ max E(C(I, Aq )).
A∈A
I∈I
Zunächst sollten wir uns klar machen, was die Terme in diesem Korollar bedeuten. Auf
der rechten Seite steht maxI∈I E(C(I, Aq )), wobei q eine beliebige Wahrscheinlichkeitsverteilung auf der Menge A ist, also ein beliebiger Las-Vegas-Algorithmus. Da das Maximum
über alle Eingaben I ∈ I gebildet wird, entspricht dieser Term genau der erwarteten Laufzeit des durch q beschriebenen Las-Vegas-Algorithmus auf der schlimmsten Eingabe. Der
Term minA∈A E(C(Ip , A)) auf der linken Seite bezeichnet die erwartete Laufzeit des besten
deterministischen Algorithmus auf Eingaben, die gemäß der Verteilung p gewählt werden.
Möchten wir mit Hilfe dieses Korollars also zeigen, dass es keinen Las-Vegas-Algorithmus
gibt, dessen erwartete Worst-Case-Laufzeit eine gewisse Schranke B unterschreitet, so genügt es, eine Wahrscheinlichkeitsverteilung p auf der Menge der Eingaben zu finden, für die
kein deterministischer Algorithmus eine erwartete Laufzeit kleiner als B erreichen kann. Auf
diese Weise können wir das Problem umgehen, über alle möglichen Las-Vegas-Algorithmen
argumentieren zu müssen. Stattdessen genügt es, eine einzige Verteilung auf den Eingaben
zu finden, für die alle deterministischen Algorithmen im Erwartungswert schlecht sind.
Zwar folgt Korollar 2.12 direkt aus dem Min-Max-Theorem über 2-Personen-Nullsummenspiele, da wir dieses aber nicht bewiesen haben, präsentieren wir hier noch einen elementaren
Beweis des Korollars, der ohne Spieltheorie auskommt.
54
2. Komplexitätstheorie für randomisierte Algorithmen
Beweis von Korollar 2.12. Es seien p ∈ P und q ∈ Q beliebig. Dann gilt
X max E(C(I, Aq )) = max
I∈I
I∈I
≥
A∈A
X
X p(I) ·
I∈I
=
q(A) · C(I, A)
A∈A
X X
A∈A
I∈I
q(A) ·
≥ min
A∈A
q(A) · C(I, A)
X
p(I) · C(I, A)
p(I) · C(I, A)
I∈I
= min E(C(Ip , A)),
A∈A
wobei wir in der dritten Zeile bei der Umordnung der Summe ausgenutzt haben, dass A
und I endlich sind.
2.2.3
Eine untere Schranke für Spielbaumauswertung
Wir möchten nun Korollar 2.12 anwenden, um zu zeigen, dass es keinen Las-Vegas-Algorithmus zur Spielbaumauswertung gibt, der im Erwartungswert weniger Blätter betrachtet
als der Algorithmus RandomGameTree, den wir oben beschrieben haben. Wir betrachten
wieder Tk -Bäume. Anstatt diese über wechselnde Ebenen von AND- und OR-Knoten zu
beschreiben, ersetzen wir alle Knoten durch NOR-Knoten. Mit Hilfe der De Morgan’schen
Gesetze sieht man leicht, dass sich der Wert der Wurzel des Spielbaumes dadurch nicht
verändert. Wir gehen also davon aus, dass wir einen vollständigen binären Baum der Höhe 2k
vorliegen haben, in dem alle inneren Knoten die NOR-Funktion berechnen.
Wir zeigen eine Schranke für die erwartete Anzahl an Blättern, die sich jeder Las-VegasAlgorithmus anschauen muss, bevor er sicher den korrekten Wert an der Wurzel kennt.
Korollar 2.12 besagt, dass es dazu genügt, eine Wahrscheinlichkeitsverteilung auf der Menge
der Eingaben anzugeben, auf der alle deterministischen Algorithmen schlecht abschneiden.
Wir wählen eine Verteilung auf Tk -Bäumen,√in der jedes Blatt unabhängig von den anderen
mit einer Wahrscheinlichkeit von r = 3 − 5 /2 auf 1 und sonst auf 0 gesetzt wird. Diese
Verteilung hat die Eigenschaft, dass die Wahrscheinlichkeit, dass ein NOR zweier Blätter
den Wert 1 ergibt, wieder genau
√
√
5−1 2 6−2 5
2
(1 − r) =
=r
=
2
4
beträgt. Somit verhalten sich alle Ebenen des Tk -Baumes in gewisser Weise identisch.
Sei v ein Knoten eines solchen Tk -Baumes. Intuitiv ergibt es Sinn, dass ein optimaler deterministischer Algorithmus zunächst den Wert eines Teilbaumes von v bestimmt, bevor er
damit beginnt, Blätter in dem anderen Teilbaum auszulesen. Wir nennen eine Reihenfolge
von Blättern DFS-Reihenfolge, wenn die Blätter in dieser Reihenfolge von einer Tiefensuche
besucht werden können. Dann ergibt es intuitiv Sinn, wenn der Algorithmus sich die Blätter
in einer DFS-Reihenfolge anschaut, wobei er Teilbäume überspringt, deren Werte nicht mehr
relevant sind. Solche Algorithmen nennen wir DFS-Pruning-Algorithmen. Tatsächlich kann
man zeigen, dass es für die Verteilung, die wir gewählt haben, einen optimalen Algorithmus
gibt, der ein DFS-Pruning-Algorithmus ist.
2.2. Untere Schranken für randomisierte Algorithmen
55
Lemma 2.13. Es sei T ein NOR-Baum dessen Blätter unabhängig mit einer festen Wahrscheinlichkeit r ∈ [0, 1] auf 1 gesetzt werden. Es sei W (T ) die erwartete Anzahl an Blättern,
die ein optimaler deterministischer Algorithmus auslesen muss, um T auszuwerten. Dann
gibt es einen DFS-Pruning-Algorithmus, der im Erwartungswert W (T ) Blätter ausliest, um T
auszuwerten.
Der Beweis dieses Lemmas, den wir hier nicht präsentieren, kann per Induktion über die
Höhe von T geführt werden.
Sei nun ein beliebiger deterministischer DFS-Pruning-Algorithmus fixiert. Die erwartete Anzahl an Blättern W (h), die er für einen NOR-Baum der Höhe h ausliest, können wir induktiv
wie folgt beschränken. Es gilt W (0) = 1 und für h ≥ 1 gilt
W (h) = W (h − 1) + (1 − r) · W (h − 1) = (2 − r) · W (h − 1).
Dies liegt daran, dass der erste Teilbaum der Wurzel, den der Algorithmus auswertet mit
einer Wahrscheinlichkeit von (1 − r) den Wert 0 besitzt. Nur in diesem Fall muss auch der
zweite Teilbaum ausgewertet werden. Somit gilt W (h) ≥ (2 − r)h . Die Anzahl Blätter eines
NOR-Baumes der Höhe h beträgt n = 2h und damit gilt
W (h) ≥ (2 − r)log2 n = nlog2 (2−r) ≥ n0.694 .
Damit ist gezeigt, dass jeder DFS-Pruning-Algorithmus im Erwartungswert mindestens n0.694
viele Blätter ausliest. Auf Grund von Lemma 2.13 bedeutet das, dass jeder deterministische
Algorithmus auf Eingaben, die gemäß der oben beschriebenen Verteilung gewählt werden, im
Erwartungswert mindestens n0.694 viele Blätter ausliest. Diese Schranke entspricht nicht ganz
der oberen Schranke, die der Algorithmus RandomGameTree erreicht. Mit deutlich mehr
Aufwand kann man jedoch sogar zeigen, dass der Algorithmus RandomGameTree optimal
ist.
Kapitel 3
Chernoff-Schranken und
randomisierte Lastverteilung
Wir haben mit den Markow- und Tschebyschew-Ungleichungen bereits zwei Möglichkeiten
kennengelernt, um die Wahrscheinlichkeit zu beschränken, dass eine Zufallsvariable von ihrem
Erwartungswert abweicht. Diese Ungleichungen sind recht allgemein formuliert und nutzen
außer dem Wissen, dass der Erwartungswert bzw. die Varianz existieren, und der Nichtnegativität im Falle der Markow-Ungleichung keine weiteren Eigenschaften der Zufallsvariable
aus. Für viele konkrete Verteilungen wie zum Beispiel die Binomialverteilung lassen sich
deutlich bessere Schranken zeigen, wenn mehr Informationen ausgenutzt werden. In diesem
Kapitel leiten wir eine Klasse von Ungleichungen her, die als Chernoff-Schranken bezeichnet
werden. Anschließend werden wir diese Schranken auf verschiedene Probleme anwenden.
Im zweiten Teil des Kapitels beschäftigen wir uns mit randomisierter Lastverteilung. Oft
müssen in der Informatik Lastverteilungsprobleme gelöst werden. Beispielsweise möchte man
Routen in einem Netzwerk so festlegen, dass die Last möglichst gleichmäßig auf die Kanten des Netzwerkes verteilt ist, oder man möchte Einträge in einer Hashtabelle möglichst
gleichmäßig auf die möglichen Hashwerte verteilen. Bei vielen Problemen nutzt man Randomisierung, um eine gute Verteilung zu finden.
Die Inhalte dieses Kapitels sind stark an die Kapitel 4 und 5 von [5] angelehnt.
3.1
Chernoff-Schranken
Bevor wir Chernoff-Schranken formulieren und beweisen können, präsentieren wir mit momenterzeugenden Funktionen zunächst ein wichtiges Hilfsmittel aus der Wahrscheinlichkeitstheorie.
3.1.1
Momenterzeugende Funktionen
Definition 3.1. Es sei X eine reelle Zufallsvariable. Falls es ein δ > 0 gibt, sodass der
Erwartungswert E etX für jedes t ∈ (−δ, δ) existiert, dann bezeichnen wir die Funktion MX : (−δ, δ) → R mit
MX (t) = E etX
als die momenterzeugende Funktion von X.
56
3.1. Chernoff-Schranken
57
Die momenterzeugende Funktion trägt ihren Namen, weil aus ihr alle Momente der Zufallsvariable abgeleitet werden können, wenn sie in einer Umgebung um Null existiert.
Theorem 3.2. Es sei X eine reelle Zufallsvariable mit der momenterzeugenden Funktion MX , die in einem Intervall (−δ, δ) für ein δ > 0 existiert. Dann gilt für jedes n ∈ N
(n)
E(X n ) = MX (0),
(n)
wobei MX die n-te Ableitung von MX bezeichnet.
Beweis. Für t ∈ (−δ, δ) gilt
(n)
MX (t)
dn tX
dn e
= n E etX = E
dt
dtn
!
= E X n · etX .
Bei dieser Rechnung haben wir ausgenutzt, dass man die Reihenfolge von Differenzieren und
Bilden des Erwartungswertes vertauschen kann. Dies folgt daraus, dass die Funktion MX
in einem Intervall um Null herum existiert. Auf einen formalen Beweis dafür verzichten wir
hier aber. Setzt man nun t = 0 in obige Formel ein, so erhält man direkt die zu beweisende
Aussage.
Genauso wie bei Erwartungswerten und Varianzen ist es hilfreich, Rechenregeln für momenterzeugende Funktionen zu haben. Uns interessiert insbesondere die momenterzeugende
Funktion der Summe zweier Zufallsvariablen.
Theorem 3.3. Es seien X und Y zwei unabhängige reelle Zufallsvariablen, deren momenterzeugende Funktionen in einem Intervall (−δ, δ) für ein δ > 0 existieren. Dann existiert
auch die momenterzeugende Funktion von X + Y und es gilt für jedes t ∈ (−δ, δ)
MX+Y (t) = MX (t) · MY (t).
Beweis. Es gilt
MX+Y (t) = E et(X+Y ) = E etX etY
= E etX · E etY
= MX (t) · MY (t),
wobei wir im dritten Schritt die Unabhängigkeit von etX und etY ausgenutzt haben, die aus
der Unabhängigkeit von X und Y folgt.
3.1.2
Chernoff-Schranken für die Summe von Bernoulli-Zufallsvariablen
Als Chernoff-Schranke bezeichnet man im weitesten Sinne jede Schranke für die Wahrscheinlichkeit einer Abweichung vom Erwartungswert, die man durch eine Anwendung der MarkowUngleichung auf die momenterzeugende Funktion einer Zufallsvariable erhält. Existiert für
eine Zufallsvariable X in einem Intervall (−δ, δ) die momenterzeugende Funktion MX , so gilt
für jedes t ∈ (0, δ)
E(etX )
Pr(X ≥ a) = Pr etX ≥ eta ≤
(3.1)
eta
und damit insbesondere
E(etX )
Pr(X ≥ a) ≤ min
.
eta
t∈(0,δ)
58
3. Chernoff-Schranken und randomisierte Lastverteilung
Analog gilt für Abweichungen nach unten für jedes t ∈ (−δ, 0)
Pr(X ≤ a) = Pr etX ≥ eta ≤
und damit insbesondere
E(etX )
eta
(3.2)
E(etX )
.
eta
t∈(−δ,0)
Pr(X ≤ a) ≤ min
Wenn wir diese Schranken anwenden, so wählen wir nicht unbedingt das beste t, für das der
obige Ausdruck minimiert wird, sondern wir wählen ein t, mit dem wir gut rechnen können.
Wir möchten nun als erstes spezielle Chernoff-Schranken für die Summe von BernoulliZufallsvariablen herleiten. Seien dazu X1 , . . . , Xn Bernoulli-Zufallsvariablen mit den Parametern p1 , . . . , pn ∈ [0, 1]. Es sei X = X1 + . . . + Xn und µ sei der Erwartungswert von X.
Dann gilt
µ = E(X) = E
X
n
Xi =
i=1
n
X
E(Xi ) =
i=1
n
X
pi .
i=1
Für ein δ > 0 sind wir daran interessiert, die Wahrscheinlichkeiten zu beschränken, dass X
einen Wert annimmt, der um den Faktor 1 + δ größer ist als sein Erwartungswert oder der
um den Faktor 1 − δ kleiner ist als sein Erwartungswert. Um diese Wahrscheinlichkeiten
beschränken zu können, bestimmen wir zunächst die momenterzeugende Funktion von X.
Für jedes Xi und jedes t ∈ R gilt
t −1)
MXi (t) = E etXi = pi et + (1 − pi )e0 = 1 + pi (et − 1) ≤ epi (e
,
wobei wir für die letzte Ungleichung ausgenutzt haben, dass 1 + y ≤ ey für jedes y ∈ R
gilt. Nun können wir mit Hilfe von Theorem 3.3 die momenterzeugende Funktion von X für
jedes t ∈ R wie folgt nach oben abschätzen:
MX (t) =
n
Y
MXi (t) ≤
i=1
n
Y
pi (et −1)
e
= exp
i=1
n
X
!
t
pi (e − 1)
t −1)
= eµ(e
.
(3.3)
i=1
Das folgende Theorem ergibt sich nun durch eine geeignete Wahl von t aus (3.1).
Theorem 3.4. Es seien X1 , . . . , Xn unabhängige Bernoulli-Zufallsvariablen mit den Parametern p1 , . . . , pn ∈ [0, 1]. Sei X = X1 + . . . + Xn und sei µ = E(X) = p1 + . . . + pn .
a) Für jedes δ > 0 gilt
Pr(X ≥ (1 + δ)µ) ≤
eδ
(1 + δ)1+δ
!µ
.
b) Für jedes 0 < δ ≤ 1 gilt
Pr(X ≥ (1 + δ)µ) ≤ e−µδ
2 /3
.
c) Für jedes R ≥ 6µ gilt
Pr(X ≥ R) ≤ 2−R .
Die erste im Theorem genannte Ungleichung ist die stärkste, aus der sich die anderen beiden
ergeben. Für Anwendungen eignen sich aber oft die zweite und dritte Form besser, da mit
ihnen einfacher zu rechnen ist.
3.1. Chernoff-Schranken
59
Beweis von Theorem 3.4. Die erste Ungleichung folgt direkt, wenn wir die Markow-Ungleichung für t = ln(1 + δ) auf die momenterzeugende Funktion anwenden. Wir erhalten dann
mit (3.1) und (3.3)
t
E(etX )
MX (t)
e(e −1)µ
Pr(X ≥ (1 + δ)µ) ≤ t(1+δ)µ = t(1+δ)µ ≤ t(1+δ)µ =
e
e
e
eδ
(1 + δ)1+δ
!µ
.
Für die zweite Ungleichung muss gezeigt werden, dass
eδ
2
≤ e−δ /3
1+δ
(1 + δ)
für alle 0 < δ ≤ 1 gilt. Wenn wir auf beide Seiten den natürlichen Logarithmus anwenden,
so erhalten wir die äquivalente Ungleichung
δ2
≤ 0.
3
Mit einer elementaren Kurvendiskussion kann man zeigen, dass diese Ungleichung für alle δ ∈
(0, 1] erfüllt ist.
δ − (1 + δ) ln(1 + δ) +
Für den Beweis der dritten Ungleichung setzen wir R = (1 + δ)µ. Für R ≥ 6µ gilt dann δ =
R/µ − 1 ≥ 5. Aus der ersten Ungleichung folgt dann
Pr(X ≥ (1 + δ)µ) ≤
eδ
(1 + δ)1+δ
!µ
≤
e
1+δ
!(1+δ)µ
≤
e
6
!R
≤ 2−R .
Damit sind alle drei Ungleichungen bewiesen.
Auf ähnliche Art und Weise kann man auch das folgende Theorem beweisen, das die Wahrscheinlichkeit beschränkt, dass eine Summe von Bernoulli-Zufallsvariablen einen Wert annimmt, der deutlich unter ihrem Erwartungswert liegt.
Theorem 3.5. Es seien X1 , . . . , Xn unabhängige Bernoulli-Zufallsvariablen mit den Parametern p1 , . . . , pn ∈ [0, 1]. Sei X = X1 + . . . + Xn und sei µ = E(X) = p1 + . . . + pn .
a) Für jedes 0 < δ < 1 gilt
Pr(X ≤ (1 − δ)µ) ≤
e−δ
(1 − δ)1−δ
!µ
.
b) Für jedes 0 < δ < 1 gilt
Pr(X ≤ (1 − δ)µ) ≤ e−µδ
2 /2
.
Oft kennen wir den Erwartungswert einer Zufallsvariable nicht genau, sondern wir haben nur
eine Abschätzung nach oben oder nach unten. Tatsächlich gilt Theorem 3.4 für jedes µ ≥
E(X) und Theorem 3.5 gilt für jedes µ ≤ E(X). Dies zu zeigen ist eine Übungsaufgabe für
den Leser.
Interessiert uns generell eine Abweichung vom Erwartungswert egal in welche Richtung, so
können wir das folgende Korollar anwenden, das sich direkt aus Theorem 3.4 und Theorem 3.5
ergibt.
Korollar 3.6. Es seien X1 , . . . , Xn unabhängige Bernoulli-Zufallsvariablen mit den Parametern p1 , . . . , pn ∈ [0, 1]. Sei X = X1 + . . . + Xn und sei µ = E(X) = p1 + . . . + pn . Dann
gilt für jedes 0 < δ < 1
2
Pr(|X − µ| ≥ δµ) ≤ 2e−µδ /3 .
60
3. Chernoff-Schranken und randomisierte Lastverteilung
Vergleich mit Markow- und Tschebyschew-Ungleichung
Um die Mächtigkeit von Chernoff-Schranken zu demonstrieren, betrachten wir noch einmal
das Beispiel von n unabhängigen fairen Münzwürfen. Wir haben die Wahrscheinlichkeit,
mindestens (3n/4)-mal „Zahl“ zu werfen, bereits mit der Markow- und der TschebyschewUngleichung abgeschätzt. Diese Rechnungen wiederholen wir kurz und wenden anschließend
Theorem 3.4 an. Sei X die Zufallsvariable, die angibt, wie oft wir „Zahl“ werfen. Mit der
Markow-Ungleichung ergibt sich
Pr X ≥
3n
4
≤
E(X)
n/2
2
=
= .
3n/4
3n/4
3
In Wirklichkeit ist es aber sehr viel unwahrscheinlicher, dass X ≥ 3n/4 gilt. Mit Hilfe der
Tschebyschew-Ungleichung erhalten wir zumindest eine Schranke für die Wahrscheinlichkeit,
die mit wachsendem n fällt:
3n
Pr X ≥
4
≤
Var(X)
4
= .
2
(n/4)
n
Auch diese Schranke ist aber noch weit von der Wahrheit entfernt. Mit der Chernoff-Schranke
aus Theorem 3.4 b) erhalten wir
3n
Pr X ≥
4
1
= Pr X ≥ 1 + E(X) ≤ e−n/24 .
2
Das bedeutet, dass die Wahrscheinlichkeit, mindestens (3n/4)-mal „Zahl“ zu werfen, sogar
exponentiell klein in n ist.
Wir betrachten die Chernoff-Schranke für δ ∈ (0, 1] noch einmal genauer. Laut Korollar 3.6
gilt für jedes δ ∈ (0, 1)
n
n 2
≤ 2e−nδ /6 .
Pr X − ≥ δ ·
2
2
Das bedeutet beispielsweise
r
n √
n 6 n
2
Pr X − ≥ 6n = Pr X − ≥
·
≤ .
2
und
2
n 2
e
s
n √
n 6 ln n n
2
Pr X − ≥ 6n ln n = Pr X − ≥
·
≤ .
2
2
n
2
n
Gemäß der Chernoff-Schranke haben additive Abweichungen vom Erwartungswert in der
√
Größenordnung Θ( n) also eine konstante Wahrscheinlichkeit,
√ während die Wahrscheinlichkeit einer additiven Abweichung in der Größenordnung Θ( n ln n) bereits relativ klein ist.
Dies entspricht ziemlich genau dem tatsächlichen Verhalten von der Summe von BernoulliZufallsvariablen.
3.1.3
Anwendungen
Verbesserung der Fehlerwahrscheinlichkeit bei BPP
In Kapitel 2.1.3 haben wir definiert, dass eine Sprache L zu der Klasse BPP gehört, wenn es
eine polynomiell zeitbeschränkte probabilistische Turingmaschine gibt, die alle Ja-Instanzen
3.1. Chernoff-Schranken
61
mit einer Wahrscheinlichkeit von höchstens 1/4 verwirft und die alle Nein-Instanzen mit
einer Wahrscheinlichkeit von höchstens 1/4 akzeptiert. Wir haben bereits in einer Übungsaufgabe gesehen, dass sich die Komplexitätsklasse BPP nicht ändert, wenn wir die Fehlerwahrscheinlichkeit von 1/4 auf 1/n reduzieren, wobei n die Länge der Eingabe ist. Mit Hilfe
von Chernoff-Schranken können wir zeigen, dass wir selbst eine exponentiell kleine Fehlerwahrscheinlichkeit fordern können, ohne die Klasse zu verändern.
Theorem 3.7. Zu jeder Sprache L ⊆ Σ∗ aus BPP gibt es eine polynomiell zeitbeschränkte
probabilistische Turingmaschine, die jedes Wort w ∈ L mit einer Wahrscheinlichkeit von
höchstens e−|w| verwirft und jedes Wort w ∈
/ L mit einer Wahrscheinlichkeit von höchstens e−|w| akzeptiert.
Beweis. Da L zu BPP gehört, existiert eine polynomiell zeitbeschränkte PTM, die jedes w ∈
L mit einer Wahrscheinlichkeit von höchstens 1/4 verwirft und die jedes w ∈
/ L mit einer
Wahrscheinlichkeit von höchstens 1/4 akzeptiert. Wir simulieren diese PTM unabhängig
k-mal für k = 12|w| und übernehmen dann die Ausgabe, die in diesen Wiederholungen
häufiger vorkam. Bei Gleichstand akzeptieren wir. Sei X die Zufallsvariable, die angibt, wie
viele Simulationen verwerfen. Für w ∈ L gilt E(X) ≤ k/4. Mit Theorem 3.4 folgt außerdem
Pr(X ≥ k/2) ≤ Pr(X ≥ 2E(X)) ≤ e−k/12 = e−|w| .
Den Fall w ∈
/ L können wir analog analysieren. Damit ist das Theorem bewiesen, da wir
nur polynomiell viele Simulationen benötigen, um die Fehlerwahrscheinlichkeit auf e−|w| zu
reduzieren.
Set Balancing
Bei dem Problem Set Balancing besteht die Eingabe aus einer (n × m)-Matrix A mit Einträgen aus {0, 1}. Gesucht ist ein Vektor b ∈ {−1, 1}m , für den die Maximumsnorm kAbk∞
so klein wie möglich wird. Sei Ab = (c1 , . . . , cn )T , dann ist kAbk∞ := maxi∈{1,...,n} |ci |.
Dieses Problem ist wichtig, wenn eine statistische Studie zu einem neuen Medikament durchgeführt wird. Dazu hat man eine Menge von Versuchspersonen, die man in zwei Klassen
einteilt. Versuchspersonen aus der einen Klasse erhalten das neue Medikament; Versuchspersonen aus der anderen Klasse erhalten ein Placebo oder ein anderes Medikament, mit dem
das neue verglichen werden soll. Um einen fairen Vergleich zu ermöglichen, sollen beide Gruppen ähnliche Merkmale aufweisen. Beispielsweise sollten beide Gruppen in etwa die gleiche
Anzahl an Rauchern enthalten, die gleiche Anzahl mit gewissen Vorerkrankungen usw. Die
Zeilen der Matrix A entsprechen dann den Merkmalen, die in der Studie von Interesse sind,
und jede Spalte entspricht einer Versuchsperson, für die vermerkt ist, welche Merkmale auf
sie zutreffen. Der gesuchte Vektor b ∈ {−1, 1}m entspricht dann der Einteilung der Personen
in zwei Klassen.
Der randomisierte Algorithmus zum Finden eines Vektor b, für den kAbk∞ klein wird, den wir
analysieren wollen, ist sehr einfach. Er wählt jeden Eintrag von b unabhängig und uniform
zufällig aus der Menge {−1, 1}. Dann ist der Erwartungswert jedes ci Null und wir können eine Chernoff-Schranke benutzen, um die Wahrscheinlichkeit von Abweichungen vom
Erwartungswert zu beschränken.
Theorem 3.8. Es sei A eine beliebige (n × m)-Matrix mit Einträgen aus {0, 1} und es
sei b ∈ {−1, 1}m ein zufälliger Vektor, in dem jeder Eintrag unabhängig und uniform zufällig
62
3. Chernoff-Schranken und randomisierte Lastverteilung
aus {−1, 1} gewählt wird. Dann gilt
Pr kAbk∞ ≥
√
12m ln n ≤
2
.
n
Beweis. Wir betrachten
zunächst eine beliebige Zeile i ∈ {1, . . . , n}. Sind in dieser Zei√
le weniger √
als 12m ln n Einsen vorhanden, so ist der Betrag
von ci für jeden Vektor b
√
kleiner als 12m ln n. Interessant ist also nur der Fall k ≥ 12m ln n. Dann ist ci die Summe X = X1 + . . . + Xk von k Zufallsvariablen, die unabhängig voneinander jeweils mit Wahrscheinlichkeit 1/2 die Werte −1 und 1 annehmen. Darauf können wir die Chernoff-Schranken,
die wir für Bernoulli-Zufallsvariablen hergeleitet haben, nicht direkt anwenden. Stattdessen
definieren wir Hilfszufallsvariablen Y1 , . . . , Yk mit Yi = (1 + Xi )/2. Wie man leicht nachrechnet, handelt es sich bei diesen Zufallsvariablen um unabhängige Bernoulli-Zufallsvariablen
mit Parameter 1/2. Es gilt
k+X
Y := Y1 + . . . + Yk =
2
und damit
k+a
k−a
X ≥ a ⇐⇒ Y ≥
und X ≤ −a ⇐⇒ Y ≤
.
2
2
Also gilt
k a k a
2
2
Pr |X| ≥ a = Pr Y − ≥
= Pr Y − ≥ · E(Y ) ≤ 2e−a /(6k) ≤ 2e−a /(6m) ,
2
2
2
k
√
wobei wir im letzten Schritt k ≤ m ausgenutzt haben. Für a = 12m ln n ergibt sich
Pr(|X| ≥ a) ≤ 2e−2 ln n =
2
.
n2
Damit haben wir für jedes ci gezeigt, dass die Wahrscheinlichkeit, dass |ci | zu groß ist,
durch 2/n2 nach oben beschränkt ist. Der Beweis des Theorems kann nun mit Hilfe einer
Union Bound über die n Zeilen der Matrix abgeschlossen werden.
√
Da eine positive Wahrscheinlichkeit besteht, dass kAbk∞ < 12m ln n für einen zufälligen
Vektor b gilt, besagt das vorangegangene
√ Theorem insbesondere, dass es für jede Matrix A
einen Vektor b gibt, für den kAbk∞ < 12m ln n gilt. Diese Art der Argumentation nennt
man probabilistische Methode.
3.2
Randomisierte Lastverteilung
Wir betrachten zunächst ein abstraktes Modell zur Lastverteilung, das wir später für einige
algorithmische Anwendungen nutzen werden. In diesem Modell gibt es n Kisten und es
werden m Bälle auf diese Kisten verteilt. Dabei wählen wir für jeden Ball unabhängig eine
uniform zufällige Kiste aus, in die er gelegt wird. Wir beantworten dann insbesondere die
Frage, wie viele Bälle in der vollsten Kiste im Erwartungswert liegen.
Ein Spezialfall dieses Problems ist einigen Lesern vielleicht schon unter dem Namen Geburtstagsparadoxon bekannt. Bei diesem betrachtet man m Personen, die unabhängig voneinander jeweils an einem uniform zufälligen Tag des Jahres Geburtstag haben. Dabei werden
Schaltjahre ignoriert und von n = 365 Tagen pro Jahr ausgegangen. Diese Wahrscheinlichkeit können wir mit dem Wissen aus dieser Vorlesung leicht abschätzen. Dazu führen
3.2. Randomisierte Lastverteilung
63
wir die Ereignisse A2 , . . . , Am ein, wobei Ai das Ereignis bezeichne, dass die i-te Person
nicht gemeinsam mit einer der Personen 1, . . . , i − 1 Geburtstag hat. Dann entspricht der
Schnitt A2 ∩ . . . ∩ Am dem Ereignis, dass alle Personen an verschiedenen Tagen Geburtstag
haben. Für jedes i gilt
n−i+1
Pr(Ai | A1 ∩ . . . ∩ Ai−1 ) =
,
n
da das Ereignis A1 ∩. . .∩Ai−1 garantiert, dass die ersten i−1 Personen paarweise verschiedene
Geburtstage haben, und somit für die i-te Person n − i + 1 noch nicht belegte Tage zur
Verfügung stehen. Insgesamt folgt damit
Pr(A1 ∩ . . . ∩ Am ) =
m
Y
Pr(Ai | A1 ∩ . . . ∩ Ai−1 ) =
i=1
m Y
i=1
i−1
1−
.
n
(3.4)
Diese Zufallsexperiment wird oft als Paradoxon bezeichnet, da die Wahrscheinlichkeit, die
sich aus (3.4) ergibt, viel größer ist, als viele Menschen intuitiv vermuten würden. Die Wahrscheinlichkeit zwei gleiche Geburtstage zu haben, ist bereits bei 23 Personen größer als 1/2.
Bei 50 Personen liegt sie bereits über 0,97.
Wir möchten nun zunächst herausfinden, in welcher Größenordnung die Anzahl an Personen m bei allgemeinem n liegen muss, damit die Wahrscheinlichkeit, zwei gleiche Geburtstage
zu haben, mindestens 1/2 ist. Zunächst nähern wir (3.4) mit einer Formel an, die einfacher
zu handhaben ist. Ist i im Verhältnis zu n klein, so gilt näherungsweise 1 − i/n ≈ e−i/n .
Setzen wir diese Näherung in (3.4) ein, so ergibt sich
m Y
i=1
1−
i−1
n
≈
m
Y
e−(i−1)/n = exp
−
m
X
i−1
i=2
i=1
n
= exp
−
m(m − 1)
2n
≈ e−m
2 /(2n)
.
p
Diese Überschlagsrechnung legt die Vermutung nahe, dass wir m ≈ 2 ln(2)n wählen sollten,
damit die Wahrscheinlichkeit 1/2 wird. Natürlich ist das noch kein formales Argument, aber
√
die folgenden Rechnungen zeigen, dass zumindest die Größenordnung Θ( n) korrekt ist. Wir
√
gehen der Einfachheit halber in den folgenden Rechnungen davon aus, dass n eine ganze
Zahl ist.
√
Ist m ≤ n, so ergibt eine Union Bound, dass die Wahrscheinlichkeit, dass zwei Geburtstage
übereinstimmen, kleiner als 1/2 ist. Dies entspricht dem Ereignis A2 ∪ . . . ∪ Am , für das gilt
m
X
Pr(A2 ∪ . . . ∪ Am ) ≤
Pr(Ai ) ≤
i=2
m
X
i−1
i=2
n
=
m(m − 1)
1
< .
2n
2
√
Ist m ≥ 2 n, so können wir ebenfalls leicht argumentieren, dass die Wahrscheinlichkeit, dass
√
zwei Geburtstage übereinstimmen, größer als 1/2 ist. Gehen wir davon aus, dass die ersten n
Personen an verschiedenen Tagen Geburtstag haben, so beträgt die Wahrscheinlichkeit, dass
√
√
√
eine Person i ∈ { n+1, . . . , 2 n} nicht am selben Tag Geburtstag hat wie eine der ersten n
Personen,
√
n− n
1
=1− √ .
n
n
√
√
Die Wahrscheinlichkeit, dass keine der Personen i ∈ { n + 1, . . . , 2 n} am selben Tagen
√
Geburtstag hat wie eine der ersten n Personen, beträgt somit
1
1− √
n
√n
<
1
1
< .
e
2
64
3. Chernoff-Schranken und randomisierte Lastverteilung
√
Somit ist die Wahrscheinlichkeit, dass alle 2 n Personen paarweise verschiedene Geburtstage
haben, kleiner als 1/e.
Das Zufallsexperiment, das wir soeben analysiert haben, entspricht dem Verteilen von m
√
Bällen unabhängig und uniform zufällig auf n Kisten. Wir haben gezeigt, dass ab Θ( n)
Bällen die Wahrscheinlichkeit, eine Kiste mit mindestens zwei Bällen zu erhalten, größer
als 1/2 ist.
3.2.1
Anwendung: Bucketsort
Bevor wir das Zufallsexperiment, in dem wir m Bälle zufällig in n Kisten verteilen, genauer
analysieren, betrachten wir als Anwendung den Sortieralgorithmus Bucketsort. Dabei handelt es sich um ein Sortierverfahren für Zahlen, das nicht vergleichsbasiert ist und deshalb
in bestimmten Situationen die untere Schranke von Ω(n log n) für das vergleichsbasierte Sortieren von n Elementen schlagen kann.
Angenommen, wir möchten n = 2m Zahlen sortieren, die alle unabhängig uniform zufällig
aus der Menge {0, 1, 2, . . . , 2k − 1} für ein k ≥ m gewählt werden. Bucketsort arbeitet in zwei
Phasen. In der ersten Phase werden die Zahlen in 2m viele Klassen gemäß ihrer ersten m
Bits eingeteilt. Das bedeutet, zwei Zahlen gehören zu derselben Klasse, wenn sie in den ersten m Bits (den m höchstwertigen Bits) übereinstimmen. Durch diese Klasseneinteilung ist
gewährleistet, dass es eine eindeutige Sortierung auf den Klassen gibt. Für eine geeignete
Nummerierung der Klassen gilt also, dass alle Zahlen in der ersten Klasse kleiner sind als
alle Zahlen in der zweiten Klasse und so weiter. In der zweiten Phase werden die Zahlen
innerhalb jeder Klasse mit einem beliebigen quadratischen Sortieralgorithmus wie zum Beispiel Insertionsort sortiert und anschließend werden die Klassen in der richtigen Reihenfolge
aneinander gehängt, sodass sich insgesamt eine sortierte Folge ergibt.
Die Klasseneinteilung ebenso wie das Aneinanderhängen der Klassen benötigen eine Laufzeit
von O(n). Die interessante Frage ist also, wie viel Zeit für das Sortieren der Zahlen innerhalb
einer Klasse benötigt wird. Im Durchschnitt enthält jede Klasse genau eine Zahl. Selbst
wenn jede Liste maximal eine konstante Anzahl an Zahlen enthält, benötigt das Sortieren
aller Listen eine Laufzeit von O(n). Da die Zahlen, die zu sortieren sind, aber uniform zufällig
gewählt werden, können wir nicht garantieren, dass jede Klasse nur eine konstante Anzahl an
Zahlen enthält. Für i ∈ {1, . . . , n} bezeichnen wir mit Xi die Zufallsvariable, die angibt, wie
viele Zahlen in Klasse i enthalten sind. Da jede Zahl eine Wahrscheinlichkeit von 2−m = 1/n
besitzt, in eine bestimmte Klasse zu fallen, ist jedes Xi binomialverteilt mit den Parametern n
und 1/n. Wir können die erwartete Laufzeit für das Sortieren der Klassen für eine geeignete
Konstante c durch
n
n
E
X
i=1
cXi2 = c
X
E(Xi2 ) = cnE(X12 )
i=1
nach oben abschätzen, wobei wir im letzten Schritt ausgenutzt haben, dass die Erwartungswerte aller Xi2 aus Symmetriegründen übereinstimmen.
Wir haben die Analyse von Bucketsort also auf die Bestimmung des Erwartungswertes
von E(X 2 ) zurückgeführt, wobei X binomialverteilt mit den Parametern n und p ist. Der
Erwartungswert von X beträgt np, aber an dieser Stelle sei der Leser noch einmal explizit gewarnt, dass das nicht bedeutet, dass der Erwartungswert E(X 2 ) gleich (np)2 ist. Im
Allgemeinen kann es sogar sein, dass der Erwartungswert E(X 2 ) gar nicht existiert. Für
binomialverteilte Zufallsvariablen ist dies aber nicht der Fall und es gilt
E(X 2 ) = n(n − 1)p2 + np.
3.2. Randomisierte Lastverteilung
65
Da wir bereits wissen, dass Var(X) = n(p−p2 ) gilt, folgt dies einfach mit folgender Rechnung
E(X 2 ) = E(X)2 + Var(X) = (np)2 + n(p − p2 ) = n(n − 1)p2 + np.
Insgesamt folgt damit, dass die erwartete Laufzeit für das Sortieren der Klassen durch
2
cnE(X12 ) = cn n(n − 1)
1
n
1
n
+n
< 2cn
nach oben beschränkt ist. Somit ist die erwartete Laufzeit von Bucketsort insgesamt linear
in der Anzahl der zu sortierenden Zahlen.
3.2.2
Auslastung der vollsten Kiste
Wir betrachten nun das Experiment mit m Bällen, die uniform auf n Kisten verteilt werden, genauer. Wir betrachten den Spezialfall n = m und interessieren uns insbesondere für
die Frage, wie groß die maximale Anzahl an Bällen in der vollsten Kiste ist. Mit Hilfe der
Linearität des Erwartungswertes sieht man leicht ein, dass jede Kiste im Erwartungswert
genau einen Ball enthält. Sei Xi die Zufallsvariable, die für i ∈ {1, . . . , m} angibt, wie viele
Bälle sich in Kiste i befinden. Dann gilt dementsprechend maxi E(Xi ) = 1. Uns interessiert
aber wie groß E(X) für X = maxi Xi ist. Wir werden sehen, dass dieser Erwartungswert
signifikant größer ist (siehe (3.5)). Dies zeigt insbesondere, dass man bei einem Maximum
im Gegensatz zu einer Summe nicht einfach die Reihenfolge mit der Bildung eines Erwartungswertes vertauschen darf.
Theorem 3.9. Für hinreichend große n gilt
3 ln n
Pr X >
ln ln n
≤
1
.
n
Beweis. Wir fixieren zunächst eine beliebige Kiste. Da alle Kisten symmetrisch sind, können
wir ohne Beschränkung der Allgemeinheit die erste betrachten. Die Wahrscheinlichkeit, dass
diese mindestens M Bälle enthält, können wir mit einer Chernoff-Schranke abschätzen, wenn
wir ausnutzen, dass E(X1 ) = 1 gilt. Für δ = M − 1 ergibt Theorem 3.4 a)
eδ
eM −1
Pr(X1 ≥ M ) = Pr(X1 ≥ (1 + δ) · E(X1 )) ≤
=
≤
(1 + δ)1+δ
MM
e
M
!M
.
Setzen wir nun M = 3 ln n/(ln ln n) ein und bilden eine Union Bound über alle n Kisten, so
ist die Wahrscheinlichkeit, dass eine Kiste mehr als M Bälle enthält, durch folgenden Term
nach oben beschränkt:
n
e
M
M
=n
e ln ln n
3 ln n
3 ln n/(ln ln n)
<n
ln ln n
ln n
3 ln n/(ln ln n)
= eln n (eln ln ln n−ln ln n )3 ln n/(ln ln n)
= e−2 ln n+3(ln n)(ln ln ln n)/(ln ln n)
1
≤ .
n
In der letzten Abschätzung haben wir ausgenutzt, dass für hinreichend große n der zweite
Summand im Exponenten kleiner als ln n ist.
66
3. Chernoff-Schranken und randomisierte Lastverteilung
Aus Theorem 3.9 folgt insbesondere, dass der Erwartungswert der Anzahl Bälle in der vollsten
3 ln n
Kiste durch ln
ln n + 1 nach oben beschränkt ist. Um dies zu zeigen, definieren wir eine
Zufallsvariable Y mit
(
3 ln n
3 ln n
falls X ≤ ln
ln n ,
Y = ln ln n
n
sonst.
Da X durch n nach oben beschränkt ist, gilt stets X ≤ Y und damit auch E(X) ≤ E(Y ).
Den Erwartungswert von Y können wir mit Hilfe von Theorem 3.9 durch
3 ln n
3 ln n
3 ln n
+ n · Pr X >
· Pr X ≤
ln ln n
ln ln n
ln ln n
3 ln n
1
3 ln n
≤
+n· =
+1
ln ln n
n
ln ln n
E(Y ) =
nach oben beschränken.
Der Faktor 3 in Theorem 3.9 kann durch eine bessere Analyse eliminiert werden. Tatsächlich
kann gezeigt werden, dass
E(X) = Γ−1 (n) −
3
ln n
+ o(1) = (1 + o(1)) ·
2
ln ln n
(3.5)
gilt.
Als kurze Anwendung von Theorem 3.9 betrachten wir noch einmal Hashing mit verketteten
Listen. Wir gehen davon aus, dass wir eine Hashtabelle der Größe n vorliegen haben, in die n
Schlüssel eingefügt werden. Wir haben in Theorem 1.16 gezeigt, dass die erwartete Laufzeit
einer Suche nach einem Schlüssel, der in der Hashtabelle vorhanden ist, im Durchschnitt
über alle vorhandenen Schlüssel Θ(1 + α) beträgt, wobei der Belegungsfaktor α in unserer
Anwendung genau Eins ist. Was ist aber, wenn wir nicht den Durchschnitt über alle Schlüssel
bilden, sondern an der erwarteten Laufzeit für den schlechtesten
Schlüssel interessiert sind?
ln n
Gleichung (3.5) besagt, dass diese Laufzeit Θ ln ln n beträgt.
3.2.3
Anwendung: Verwaltung einer Menge
Wir möchten eine Datenstruktur entwerfen, die mit möglichst geringem Speicherplatzbedarf
eine Menge S = {s1 , . . . , sm } von Elementen eines Universums U verwaltet. Dabei soll die
Datenstruktur für beliebige t ∈ U feststellen können, ob t zu der Menge S gehört oder nicht.
Die einfachste Möglichkeit, dies zu realisieren, ist die Elemente aus S abzuspeichern und
mit t zu vergleichen. Ist eine Ordnung auf dem Universum U gegeben, so kann man dieses
Verfahren beschleunigen, indem man die Menge S sortiert speichert und eine binäre Suche
nach t anwendet. Das Hauptproblem dieses Ansatzes ist aber der relativ hohe Speicherplatzbedarf. Wir sind stattdessen auf der Suche nach einer Lösung, die mit wenig Speicherplatz
auskommt, und erlauben dafür, dass mit einer kleinen Wahrscheinlichkeit falsche Ausgaben
produziert werden dürfen.
Um Speicherplatz zu sparen, definieren wir für ein b ∈ N eine Hashfunktion h : U →
{0, 1, . . . , 2b −1}, die jedes Element des Universums auf eine Zahl abbildet, die mit b Bits dargestellt werden kann. Anstatt nun die Elemente aus S selbst zu kodieren und abzuspeichern,
speichern wir nur ihre Hashwerte h(s1 ), . . . , h(sm ) in sortierter Reihenfolge und führen eine
binäre Suche nach dem Hashwert h(t) des Elementes t durch. Ist dieser nicht gespeichert, so
können wir sicher sein, dass t nicht zu der Menge S gehört. Ansonsten geben wir aus, dass t
3.2. Randomisierte Lastverteilung
67
zu S gehört, was aber mit einer gewissen Wahrscheinlichkeit falsch sein kann. Wir sagen
dann, dass t falsch positiv ist.
Wir treffen wie üblich die Annahme des uniformen Hashings, d. h. wir gehen davon aus, dass
die Funktion h jedes Element aus S unabhängig und uniform zufällig auf einen Hashwert
aus {0, 1, . . . , 2b − 1} abbildet. Dann können wir für jedes beliebige t ∈
/ S die Wahrscheinlichkeit, dass t falsch positiv ist, wie folgt beschränken:
Pr(t ist falsch positiv) = Pr(∃s ∈ S : h(s) = h(t))
= 1 − Pr(∀s ∈ S : h(s) 6= h(t))
=1−
Y
Pr(h(s) 6= h(t))
s∈S
1
=1− 1− b
2
=1−
≥1−e
m
1
1− b
2
− mb
2
2b ! 2mb
.
Wir haben in der Abschätzung in der letzten Zeile ausgenutzt, dass (1 − 1/x)x < 1/e für
alle x > 1 gilt. In der dritten Zeile haben wir ausgenutzt, dass die Ereignisse h(s) = h(t) für
verschiedene s ∈ S unabhängig sind.
Damit die Wahrscheinlichkeit, dass t falsch positiv ist, überhaupt kleiner als eine Konstan−m
te c ∈ (0, 1) sein kann, muss 1 − e 2b ≤ c gelten. Eine kurze Rechnung zeigt, dass dies
äquivalent zu
!
m
b ≥ log2
1
ln 1−c
ist. Wir benötigen also Ω(log(m)) Bits pro Element aus S, um eine konstante Fehlerwahrscheinlichkeit zu erreichen. Andererseits sieht man leicht, dass b = 2 log2 (m) Bits genügen,
denn
1 m
2b
1 m
=1− 1− 2
m
Pr(t ist falsch positiv) = 1 − 1 −
≤1−
1
2e
1/m
→ 0.
Bei der Abschätzung in der letzten Zeile haben wir ausgenutzt, dass (1 − 1/x)x > 1/(2e) für
alle x ≥ 2 gilt.
Wir können also insgesamt festhalten, dass man bei diesem Ansatz Θ(log(m)) Bits pro Element aus S benötigt, um eine konstante Fehlerwahrscheinlichkeit zu erreichen. Im folgenden
Abschnitt werden wir sehen, wie man den Speicherplatzbedarf noch deutlich verbessern kann.
3.2.4
Bloom-Filter
Bei Bloom-Filtern handelt es sich um eine Datenstruktur zur Verwaltung einer Menge, die
bereits mit konstant vielen Bits pro Element aus S eine konstante Fehlerwahrscheinlichkeit
68
3. Chernoff-Schranken und randomisierte Lastverteilung
erreicht. Dazu wird ein Feld mit n Bits A[0], . . . , A[n−1] verwaltet und es werden k Hashfunktionen h1 : U → {0, . . . , n − 1}, . . . , hk : U → {0, . . . , n − 1} benutzt. Für jedes Element s ∈ S
setzen wir die Bits A[h1 (s)], . . . , A[hk (s)] auf Eins. Ist eines dieser Bits bereits durch das
Einfügen eines anderen Elements auf Eins gesetzt, so lassen wir es auf Eins. Nachdem alle
Elemente aus S eingefügt wurden, gilt also für jedes j ∈ {0, . . . , n − 1}
A[j] = 1 ⇐⇒ ∃s ∈ S ∃i : hi (s) = j.
Erhalten wir nun ein Objekt t ∈ U , dann testen wir, ob für alle Hashfunktionen hi (t) = 1
gilt. Im positiven Fall geben wir aus, dass t zu S gehört. Ansonsten geben wir aus, dass t
nicht zu S gehört. Genauso wie bei der Datenstruktur aus dem vorangegangenen Abschnitt
sind bei Bloom-Filtern falsch positive Ergebnisse möglich, wohingegen im Falle t ∈ S stets
das korrekte Ergebnis ausgegeben wird.
Die folgende Abbildung zeigt ein Beispiel eines Bloom-Filters mit drei Hashfunktionen und
zwei Elementen s1 und s2 in S. Während das Element t ∈
/ S als solches erkannt wird, ist t0
falsch positiv.
s1
s2
0110011100
t
t0
Auch für einen Bloom-Filter wollen wir die Wahrscheinlichkeit beschränken, dass ein bestimmtes t ∈
/ S falsch positiv ist. Wir treffen dazu wieder die Annahme des uniformen
Hashings, dass jedes Element aus U von jeder Hashfunktion unabhängig von den anderen
Hashfunktionen und den anderen Elementen aus U auf eine uniform zufällige Position abgebildet wird. Wir betrachten zunächst die Wahrscheinlichkeit, dass ein bestimmtes Bit A[j]
den Wert Null hat. Es gilt
1
Pr(A[j] = 0) = Pr(∀s ∈ S ∀i : hi (s) 6= j) = 1 −
n
km
≈ e−
km
n
=: p.
km
Das bedeutet, dass im Erwartungswert genau n 1 − n1
Bits nach dem Einfügen der Menge S den Wert Null haben. Um die Argumentation im Folgenden zu vereinfachen, gehen
km
wir zunächst davon aus, dass exakt n 1 − n1
Bits den Wert Null haben. Unter dieser
vereinfachenden Annahme, können wir die Wahrscheinlichkeit, dass t ∈
/ S falsch positiv ist,
durch
1 km k
Pr(t ist falsch positiv) = 1 − 1 −
≈ (1 − p)k =: f (k)
n
ausdrücken. Wir vereinfachen die Rechnungen noch weiter, indem wir mit den Näherungswerten p und f (k) statt mit den exakten Werten rechnen.
Die Frage, die es zu beantworten gilt, ist, wie viele Hashfunktionen wir für gegebene Parameter n und m wählen sollten, damit die Wahrscheinlichkeit f (k) so klein wie möglich wird.
Es gibt dabei zwei gegenläufige Tendenzen. Je mehr Hashfunktionen wir wählen, desto mehr
Bits sind nach dem Einfügen von S auf Eins gesetzt. Dadurch kann sich die Wahrscheinlichkeit, dass für t ∈
/ S eines der Bits A[hi (t)] gleich Null ist, verringern. Auf der anderen Seite
testen wir aber auch mehr Positionen, wenn wir mehr Hashfunktionen wählen, wodurch sich
3.2. Randomisierte Lastverteilung
69
die Wahrscheinlichkeit, dass eines der A[hi (t)] gleich Null ist, erhöhen kann. Wir müssen
nun den richtigen Kompromiss für die Anzahl k an Hashfunktionen finden. Eine elementan
re Kurvendiskussion zeigt, dass die Funktion f (k) für k = ln(2) · m
ein globales Minimum
annimmt. Für dieses k gilt
n
Pr(t ist falsch positiv) ≈ f ln(2) ·
m
n
ln(2)· m
=
1
2
n
≈ (0.6185) m .
n
Der Quotient m
ist die durchschnittliche Anzahl an Bits, die wir pro Element aus S speichern.
Unsere Überlegungen zeigen, dass die Wahrscheinlichkeit eines falsch positiven Ergebnisses
exponentiell mit dieser Anzahl an Bits fällt. Sind wir also an einer konstanten Fehlerwahrscheinlichkeit interessiert, so genügt es, pro Element aus S eine konstante Anzahl an Bits zu
speichern. Ist man beispielsweise an einer Fehlerwahrscheinlichkeit von unter einem Prozent
interessiert, so genügt es, 10 Bits pro Element aus S zu wählen. Dies ist eine deutliche Verbesserung gegenüber der Lösung mit einer Hashfunktion, bei der Θ(log(m)) Bits notwendig
sind.
Eine interessante Beobachtung, die wir noch kurz festhalten wollen, ist, dass bei der optimakm
n
len Wahl k = ln(2) · m
für die Anzahl an Hashfunktionen, die Wahrscheinlichkeit p = e− n
genau den Wert 1/2 annimmt. Das bedeutet, dass in einem Bloom-Filter mit einer optimalen
Anzahl an Hashfunktionen jedes Bit nahezu uniform zufällig 0 oder 1 ist.
km
Zum Schluss kommen wir auf unsere Annahme zurück, dass genau n 1 − n1
Bits den
Wert Null haben. Es sind zwar im Erwartungswert genau so viele Bits gleich Null, aber
typischerweise wird die exakte Anzahl von ihrem Erwartungswert zumindest ein wenig abweichen. Man kann zeigen, dass große Abweichungen vom Erwartungswert unwahrscheinlich
sind. Dafür genügt es aber nicht, einfach nur Chernoff-Schranken anzuwenden, da die Bits
abhängig voneinander sind. Wissen wir beispielsweise bereits, dass ein Bit den Wert Null
annimmt, so erhöht das die Wahrscheinlichkeit, dass andere Bits den Wert Eins haben. Man
kann trotz dieser Abhängigkeiten zeigen, dass große Abweichungen vom Erwartungswert sehr
unwahrscheinlich sind. Diese relativ technische Analyse, die in Kapitel 5 von [5] zu finden
ist, werden wir hier jedoch nicht präsentieren. Hat man gezeigt, dass große Abweichungen
vom Erwartungswert sehr unwahrscheinlich sind, so kann man die obige Analyse leicht so
anpassen, dass sie ohne die vereinfachende Annahme auskommt.
3.2.5
The Power of Two Choices
Wir wollen in diesem Abschnitt noch kurz diskutieren, wie randomisierte Lastverteilung verbessert werden kann. Wieder betrachten wir den Fall, dass n Bälle auf n Kisten verteilt werden sollen, und uns interessiert die erwartete Auslastung der vollsten Kiste. In Abschnitt 3.2.2
haben wir gesehen, dass diese (1 + o(1)) · lnlnlnnn beträgt, wenn jeder Ball uniform zufällig eine
Kiste wählt, in die er gelegt wird. Natürlich können wir durch eine zentrale Koordination
erreichen, dass jede Kiste nur genau einen Ball enthält, wir sind aber auf der Suche nach
einem dezentralen randomisierten Prozess, der einfach lokal von jedem Ball ohne globales
Wissen ausgeführt werden kann.
Eine naheliegende Idee, den randomisierten Prozess zu verbessern, sieht wie folgt aus. Die
Bälle werden nach und nach in die Kisten eingefügt. Anstatt eine Kiste uniform zufällig zu
wählen, wählt jeder Ball unabhängig und uniform zufällig d ≥ 2 Kisten aus. Er wird dann
der Kiste von den d ausgewählten zugewiesen, die momentan die kleinste Anzahl an Bällen
enthält. Bei Gleichstand kann eine beliebige Kiste mit der momentan kleinsten Anzahl an
Bällen gewählt werden. Das folgende Theorem wird in Kapitel 14 von [5] bewiesen.
70
3. Chernoff-Schranken und randomisierte Lastverteilung
Theorem 3.10. Die erwartete Auslastung der vollsten Kiste beträgt in dem oben beschriebenen Zufallsexperiment für d ≥ 2
ln ln n
+ O(1).
ln d
Selbst für d = 2 ist somit der erwartete Füllstand der vollsten Kiste um einen exponentiellen
Faktor kleiner als bei dem einfachen Prozess, in dem jeder Ball nur eine Kiste wählt. Mehr
als zwei Kisten zu wählen, bringt hingegen nur noch eine relativ kleine Verbesserung.
Diesen Prozess der randomisierten Lastverteilung kann man beispielsweise zur Verbesserung
von Hashing einsetzen. Wir haben in Abschnitt 3.2.2 argumentiert, dass die erwartete Laufzeit für die Suche nach dem schlechtesten Schlüssel Θ( lnlnlnnn ) beträgt, wenn wir n Schlüssel
in eine Hashtabelle mit n Positionen einfügen. Haben wir zwei unabhängige Hashfunktionen,
die jedes Element auf zwei Positionen in der Hashtabelle abbilden, und fügen wir jedes Element in die momentan kürzere Liste ein, so besagt Theorem 3.10, dass die erwartete Laufzeit,
um nach dem schlechtesten Schlüssel zu suchen, nur Θ(ln ln n) beträgt. Bei der Suche nach
einem Element müssen dann beide in Frage kommenden Listen durchsucht werden.
Kapitel 4
Markow-Ketten und Random
Walks
In diesem Kapitel werden wir mit Markow-Ketten ein wichtiges Hilfsmittel zum Entwurf
und zur Analyse von randomisierten Algorithmen kennenlernen, das wir insbesondere auf
2-SAT und 3-SAT anwenden werden. Anschließend werden mit Random Walks spezielle
Markow-Ketten betrachten, die durch ungerichtete Graphen beschrieben werden, und ihre
algorithmischen Anwendungen diskutieren.
Die Inhalte dieses Kapitels sind stark an Kapitel 7 von [5] und Kapitel 6 von [6] angelehnt.
4.1
Markow-Ketten
Sprechen wir in dieser Vorlesung von einem stochastischen Prozess, so ist damit eine Familie
von Zufallsvariablen Xt für t ∈ N0 gemeint. Wir betrachten in dieser Vorlesung ausschließlich
diskrete stochastische Prozesse, bei denen jede Zufallsvariable Xt Werte aus einer abzählbaren Menge annehmen kann. Ohne Beschränkung der Allgemeinheit gehen wir davon aus,
dass jedes Xt nur Werte aus N0 annimmt. Wir werden den Wert von Xt auch als den Zustand
zum Zeitpunkt t bezeichnen. Im Allgemeinen können die Werte der Zufallsvariablen beliebig
voneinander abhängen. Uns interessieren aber besonders Prozesse, bei denen die Verteilung
von Xt nur vom unmittelbar vorangegangenen Zustand Xt−1 beeinflusst wird, nicht aber
von weiter zurückliegenden Zuständen. Diese Eigenschaft, die auch als Gedächtnislosigkeit
bezeichnet wird, ist in der folgenden Definition formalisiert.
Definition 4.1. Ein diskreter stochastischer Prozess heißt Markow-Kette, wenn für alle
Zeitpunkte t ∈ N0 und für alle a0 , . . . , at ∈ N0
Pr(Xt = at | X0 = a0 , . . . , Xt−1 = at−1 ) = Pr(Xt = at | Xt−1 = at−1 ).
gilt. Eine Markow-Kette heißt homogen, wenn es für jedes Zustandspaar i, j ∈ N0 ein pi,j ∈
[0, 1] gibt, sodass für alle t ≥ 1
Pr(Xt = j | Xt−1 = i) = pi,j
gilt. In einer homogenen Markow-Kette hängen die Übergangswahrscheinlichkeiten also nicht
vom Zeitpunkt ab.
71
72
4. Markow-Ketten und Random Walks
Wir werden in dieser Vorlesung ausschließlich homogene Markow-Ketten betrachten und
dies im Folgenden nicht immer explizit erwähnen. Wir können jede homogene Markow-Kette
durch ihre Übergangsmatrix P beschreiben. Dies ist im Allgemeinen eine unendliche Matrix,
deren Zeilen und Spalten jeweils mit den Elementen aus N0 indiziert sind, und die in der Zelle
in Zeile i und Spalte j den Wert pi,j enthält. Andersherum beschreibt jede solche Matrix mit
P
Einträgen aus [0, 1] eine Markow-Kette, wenn j∈N0 pi,j = 1 für jede Zeile i ∈ N0 gilt.
Gibt man eine Wahrscheinlichkeitsverteilung auf den Zuständen zum Zeitpunkt 0 vor, so
kann man mit Hilfe der Matrix P für jedes t ∈ N0 die Wahrscheinlichkeitsverteilung zum
Zeitpunkt t berechnen. Für t ∈ N0 sei p(t) = (p0 (t), p1 (t), p2 (t), . . .) mit pi (t) = Pr(Xt = i)
die Wahrscheinlichkeitsverteilung zum Zeitpunkt t. Kennen wir die Verteilung p(t) zu einem
Zeitpunkt t, so gilt
X
pj (t + 1) =
pi (t) · pi,j
(4.1)
i∈N0
für jedes j ∈ N0 . Diese Gleichung folgt, da für das Ereignis Xt+1 = j, nur der unmittelbar
vorangegangene Zustand relevant ist. Wir summieren über alle möglichen Zustände und
betrachten jeweils die Wahrscheinlichkeit, dass sich die Markow-Kette zum Zeitpunkt t in
Zustand i befindet und von dort in einem Schritt in Zustand j wechselt. Formal handelt es sich
um eine Anwendung der Formel der totalen Wahrscheinlichkeit. Wenn wir die Vektoren p(t)
und p(t + 1) als Zeilenvektoren betrachten, so folgt aus (4.1) direkt
p(t + 1) = p(t)P.
(4.2)
Mit Hilfe von (4.2) kann man auch für jedes Zustandspaar i, j ∈ N0 und jedes m ∈ N
(m)
die Wahrscheinlichkeit pi,j ausrechnen, in genau m Schritten von Zustand i in Zustand j
überzugehen. Ähnlich wie bei (4.1) argumentiert man zunächst, dass
(m)
pi,j =
X (m−1)
pi,k
· pk,j
(4.3)
k∈N0
gilt. Dabei haben wir über alle Zustände k summiert, die nach genau m − 1 Schritten von i
(m)
ausgehend erreicht werden können. Fasst man die Wahrscheinlichkeiten pi,j wieder in einer
Matrix P (m) zusammen, so folgt mit (4.3) leicht, dass P (m) = P · P (m−1) gilt. Daraus folgt
induktiv, dass P (m) = P m für jedes m ∈ N gilt.
Man kann sich Markow-Ketten auch als gerichtete Graphen vorstellen. Zu einer MarkowKette mit Übergangsmatrix P definieren wir einen gerichteten Graphen G = (V, E, w) mit
Gewichten w : E → [0, 1]. Dieser Graph enthält einen Knoten für jeden möglichen Zustand
der Markow-Kette, das heißt, es gilt im Allgemeinen V = N0 . Kann man in einer MarkowKette für eine gegebene Verteilung p(0) nur bestimmte Zustände überhaupt mit positiver
Wahrscheinlichkeit erreichen, dann kann man die Menge V auch auf diese Zustände einschränken. Für zwei Zustände i, j ∈ V gehört (i, j) genau dann zu der Menge der Kanten E,
wenn pi,j > 0 gilt. Das Gewicht w(i, j) dieser Kante entspricht dann der Wahrscheinlichkeit pi,j . Die gerichteten Kanten des Graphen entsprechen also den Übergängen, die mit
positiver Wahrscheinlichkeit erfolgen, und die Gewichte entsprechen den Übergangswahrscheinlichkeiten.
Wir betrachten als Beispiel die folgende Markow-Kette, die links als Graph und rechts als
Übergangsmatrix dargestellt ist.
4.1. Markow-Ketten
73
1
2
0
1
2
1
1
3
1
2
2
3

0
0

P =
0
0
1
2
3
1
2
1/2
1/2
0
0
1/2
1/3
0
0

0
2/3


1
1/2
Um in dieser Markow-Kette beispielsweise die Wahrscheinlichkeit zu bestimmen, dass man
sich startend in Zustand 0 nach genau 3 Schritten in Zustand 3 befindet, gibt es zwei Möglichkeiten. Wir können im Graphen alle Pfade von Knoten 0 zu Knoten 3 betrachten, die
aus genau drei Kanten bestehen. Dies sind die Pfade (0, 1, 3, 3), (0, 1, 2, 3) und (0, 2, 3, 3).
Die Wahrscheinlichkeit, dass die Zustandsübergänge in der Markow-Kette gemäß eines solchen Pfades erfolgen, entspricht dem Produkt der Übergangswahrscheinlichkeiten. Für die
drei Pfade ergeben sich dementsprechend die Wahrscheinlichkeiten 1/6, 1/12 und 1/4. In
der Summe ergibt dies eine Wahrscheinlichkeit von 7/12. Dies kann auch am der Matrix P 3
abgelesen werden. Es gilt

0
0

P3 = 
0
0
5/12
1/3
1/4
7/24
0
1/9
1/6
1/12

7/12
5/9 

7/12

5/8
(3)
und insbesondere p0,3 = 7/12. Anhand dieser Matrix können wir auch leicht die Wahrscheinlichkeitsverteilung p(3) zum Zeitpunkt 3 berechnen, wenn wir die Wahrscheinlichkeitsverteilung p(0) zum Zeitpunkt 0 kennen. Es gilt nämlich p(3) = p(0)P 3 . Startet man in einem
uniform zufälligen Zustand, so ergibt sich beispielsweise p(3) = (0, 31/96, 13/144, 169/288).
4.1.1
Anwendung: Randomisierter Algorithmus für 2-SAT
Wir wissen bereits, dass das Erfüllbarkeitsproblem SAT im Allgemeinen N P-hart ist. Wir
betrachten nun aber den Spezialfall 2-SAT, bei dem jede Klausel aus genau zwei Literalen
besteht. Eine mögliche Instanz dieses Problems wäre beispielsweise die Formel
(x1 ∨ x3 ) ∧ (x2 ∨ x3 ) ∧ (x1 ∨ x2 ) ∧ (x2 ∨ x3 ),
für die entschieden werden soll, ob es eine Belegung der binären Variablen x1 , . . . , x4 gibt, die
alle Klauseln erfüllt. Wir betrachten einen Algorithmus, der eine lokale Suche durchführt. Er
startet mit einer beliebigen Belegung der Variablen und versucht diese, Schritt für Schritt in
eine erfüllende Belegung umzuwandeln. Dazu wählt er, solange er noch keine erfüllende Belegung erreicht hat, eine beliebige nicht erfüllte Klausel aus. Dann wählt er eines der beiden
Literale dieser Klausel uniform zufällig aus und ändert die Belegung der zu diesem Literal
gehörigen Variable. Wird nach einer gewissen Anzahl an solchen Schritten keine erfüllende
Belegung gefunden, so gibt der Algorithmus aus, dass keine existiert. Diese Ausgabe kann
falsch sein und wir werden im Folgenden mit Hilfe einer Markow-Kette die Fehlerwahrscheinlichkeit analysieren. Zunächst geben wir den beschriebenen Algorithmus aber in Pseudocode
an. Dabei ist φ die Formel, m ∈ N ein Parameter, der beliebig gewählt werden kann, und n
bezeichne die Anzahl an binären Variablen.
74
4. Markow-Ketten und Random Walks
Rand-2-SAT(φ, m)
1. Wähle beliebige Belegung x der Variablen.
2. for i = 1 to 2n2 m do
3.
if x erfüllt nicht alle Klauseln then
4.
Wähle beliebige durch x nicht erfüllte Klausel.
5.
Wähle uniform zufälliges Literal dieser Klausel und ändere in x seine Belegung.
6. return „Ja“, falls x alle Klauseln erfüllt, und „Nein“ sonst.
Ist die Formel φ nicht erfüllbar, so gibt der Algorithmus stets das korrekte Ergebnis zurück.
Für die Analyse der Fehlerwahrscheinlichkeit interessiert uns also nur der Fall, dass die Formel erfüllbar ist. Es sei S eine beliebige erfüllende Belegung von φ und Ai sei die Belegung
der Variablen, die nach dem i-ten Durchlauf der for-Schleife erreicht wird. Dabei sei A0 die
initiale Belegung, die im ersten Schritt des Algorithmus gewählt wird. Wir definieren nun
Zufallsvariablen X0 , X1 , . . . , X2n2 m , wobei Xi angibt, in wie vielen Variablen die Belegungen S und Ai übereinstimmen. Nimmt eine von diesen Zufallsvariablen Xi den Wert n an,
so hat der Algorithmus die erfüllende Belegung S gefunden und gibt am Ende das korrekte
Ergebnis aus. Nimmt keine der Variablen Xi den Wert n an, so gibt der Algorithmus nicht
notwendigerweise das falsche Ergebnis aus, da er eine andere erfüllende Belegung gefunden
haben kann, die von S verschieden ist.
Die Zufallsvariablen X0 , X1 , . . . , X2n2 m beschreiben einen stochastischen Prozess. Da wir in
jedem Durchlauf der for-Schleife den Wert genau einer Variable ändern, folgt, dass stets
Xi+1 ∈ {Xi − 1, Xi + 1} gilt. Wir argumentieren zunächst, dass die Wahrscheinlichkeit,
dass Xi+1 um eins größer ist als Xi , immer mindestens so groß ist wie die Wahrscheinlichkeit,
dass es um eins kleiner ist. Zunächst ist klar, dass für jedes i
Pr(Xi+1 = 1 | Xi = 0) = 1
gilt, denn wenn die aktuelle Belegung in keiner Variable mit S übereinstimmt, so wird die
nächste Belegung stets genau in der Variable mit S übereinstimmen, deren Belegung geändert
wurde. Außerdem gilt für jedes i
Pr(Xi+1 = n | Xi = n) = 1,
da eine erfüllende Belegung nicht mehr geändert wird. Für j ∈ {1, . . . , n − 1} gilt außerdem
Pr(Xi+1 = j + 1 | Xi = j) ≥
1
2
und
1
Pr(Xi+1 = j − 1 | Xi = j) ≤ .
2
Der Grund hierfür ist, dass der Algorithmus eine beliebige nicht erfüllte Klausel und daraus
ein uniform zufälliges Literal wählt. Da die Klausel nicht erfüllt ist, ist mindestens eins der
beiden Literale anders als in S belegt. Die Wahrscheinlichkeit, dieses auszuwählen und seine
Belegung zu ändern, beträgt genau 1/2. Es kann sogar sein, dass beide Literale anders belegt
sind als in S. Dann ist die Wahrscheinlichkeit sogar 1, dass der Abstand zur Belegung S
verringert wird.
Der stochastische Prozess, der durch X0 , X1 , . . . , X2n2 m beschrieben wird, ist aber keine
Markow-Kette, denn ob in der ausgewählten Klausel nur ein Literal nicht mit S übereinstimmt oder beide, hängt von der Vergangenheit ab. Wir schätzen diesen Prozess jedoch
durch eine Markow-Kette Y0 , Y1 , Y2 , . . . ab, für die
Pr(Yi+1 = 1 | Yi = 0) = 1
und
Pr(Yi+1 = n | Yi = n) = 1
4.1. Markow-Ketten
75
und für j ∈ {1, . . . , n − 1}
1
1
und Pr(Yi+1 = j − 1 | Yi = j) = .
2
2
gelten. Der zu dieser Markow-Kette gehörige Graph ist in folgender Abbildung dargestellt.
Pr(Yi+1 = j + 1 | Yi = j) =
1
2
1
0
1
2
1
1
2
1
2
2
1
2
1
2
3
1
2
...
1
2
1
2
1
2
n−1
n
1
Intuitiv ist diese Markow-Kette eine pessimistische Abschätzung für den stochastischen Prozess X0 , X1 , X2 , . . .. Insbesondere sollte sie, wenn sie mit dem gleichen Wert initialisiert wird,
nicht schneller den Zustand n erreichen als der Prozess X0 , X1 , X2 , . . .. Um für diese Aussage, die dem Leser intuitiv hoffentlich einleuchtet, einen formalen Beweis zu geben, gibt es
Methoden, die wir in dieser Vorlesung aber nicht näher besprechen werden. Wir begnügen
uns hier mit der intuitiven Begründung.
Ein zentraler Bestandteil der Analyse der Fehlerwahrscheinlichkeit ist es, die erwartete Anzahl an Schritten zu bestimmen, die die Markow-Kette benötigt, um von einem beliebigen
Startzustand j ∈ {0, . . . , n} den Zustand n zu erreichen. Wir gehen pessimistisch davon
aus, dass wir im Zustand 0 starten. Bevor wir die erwartete Anzahl an Schritten formal
bestimmen, überlegen wir uns zunächst informell, in welcher Größenordnung sie liegt. Dazu
vereinfachen wir zunächst die Markow-Kette dahingehend, dass wir erlauben, dass sie links
über 0 und rechts über n hinauslaufen darf. Das entspricht dann folgendem Zufallsexperiment: Wir starten an Position 0 und werfen k mal eine Münze. Jedes Mal, wenn die Münze
Kopf zeigt, gehen wir einen Schritt nach rechts, jedes Mal, wenn die Münze Zahl zeigt, gehen
wir einen Schritt nach links. Wir erreichen die Position n oder eine rechts davon genau dann,
wenn es einen Präfix der k Münzwürfe gibt, in dem mindestens n mal häufiger Kopf als Zahl
geworfen wird.
Die Anzahl der Münzen, die Kopf zeigen, in einem Präfix der Länge ` ≤ k ist binomialverteilt mit den Parametern ` und 1/2. Im Erwartungswert enthält jeder Präfix der Länge `
also genau `/2 solcher Münzen. Gibt es einen Präfix, der mindestens `/2 + n/2 viele solcher
Münzen enthält, so erreicht die vereinfachte Markow-Kette den Zustand n. Ist ` = O(n), also
z. B. ` = 10n, so kann man mit einer Chernoff-Schranke leicht zeigen, dass dieses Ereignis
exponentiell unwahrscheinlich ist. Mit einer Union-Bound kann man dann sogar zeigen, dass
es exponentiell unwahrscheinlich ist, dass es einen Präfix gibt, der diese Eigenschaft erfüllt,
wenn k = O(n) gilt. Auf der anderen Seite haben wir in Abschnitt
3.1.2 diskutiert, dass Ab√
weichungen vom Erwartungswert in der Größenordnung Θ( `) bei einem Präfix der Länge `
eine konstante Wahrscheinlichkeit haben. Das bedeutet, dass nach Θ(n2 ) vielen Schritten eine signifikante Wahrscheinlichkeit besteht, Zustand n mindestens einmal zu erreichen. Diese
Intuition weisen wir in dem folgenden Lemma formal nach.
Lemma 4.2. Ist eine 2-SAT-Formel φ erfüllbar, so erreicht die Markow-Kette, die durch
die Zufallsvariablen Y0 , Y1 , . . . beschrieben wird, von jedem Startzustand j ∈ {0, . . . , n} im
Erwartungswert in höchstens n2 vielen Schritten den Zustand n.
Beweis. Wir definieren für jedes j ∈ {0, . . . , n} eine Zufallsvariable Zj , die angibt, wie viele
Schritte die Markow-Kette benötigt, um startend in Zustand j den Zustand n zu erreichen.
Mit hj bezeichnen wir den Erwartungswert von Zj . Es gilt hn = 0 und h0 = h1 + 1, da von
Zustand 0 deterministisch in Zustand 1 gewechselt wird. Für j ∈ {1, . . . , n − 1} gilt
1
1
Xj = (1 + Xj−1 ) + (1 + Xj+1 ),
2
2
76
4. Markow-Ketten und Random Walks
da von j jeweils mit Wahrscheinlichkeit 1/2 in den Zustand j − 1 oder den Zustand j + 1
gewechselt wird. Dementsprechend folgt mit der Linearität des Erwartungswertes
hj−1 hj+1
+
+ 1.
2
2
Nun kann man leicht mit vollständiger Induktion zeigen, dass hj = hj+1 + 2j + 1 für alle j ∈
{0, . . . , n − 1} gilt. Der Induktionsanfang für j = 0 folgt direkt aus der Formel h0 = h1 + 1.
Für j ≥ 1 gilt
hj =
hj−1 hj+1
+
+1
2
2
hj + 2(j − 1) + 1 hj+1
+
+ 1,
=
2
2
wobei wir im zweiten Schritt die Induktionsvoraussetzung ausgenutzt haben. Stellt man diese
Gleichung nach hj um, so erhält man, wie gewünscht
hj =
hj = hj+1 + 3 + 2(j − 1) = hj+1 + 2j + 1.
Damit folgt
h0 = h1 + 1 = h2 + 3 + 1 = . . . =
Außerdem folgt
n2
n−1
X
n−1
X
i=0
i=0
(2i + 1) = n + 2
i = n + n(n − 1) = n2 .
= h0 > h1 > . . . > hn , womit das Lemma bewiesen ist.
Wir können nun zeigen, dass die Fehlerwahrscheinlichkeit von Rand-2-SAT exponentiell klein
in dem Parameter m ist.
Theorem 4.3. Ist die Formel φ erfüllbar, so beträgt die Fehlerwahrscheinlichkeit von Rand2-SAT höchstens 1/2m .
Beweis. Lemma 4.2 besagt, dass der Algorithmus im Erwartungswert spätestens nach dem
n2 -ten Durchlauf der for-Schleife eine erfüllende Belegung findet. Die Wahrscheinlichkeit,
dass er nach dem 2mn2 -ten Durchlauf noch immer keine gefunden hat, lässt sich somit mit
der Markow-Ungleichung durch 1/(2m) nach oben abschätzen.
Um eine exponentiell kleine Wahrscheinlichkeit zu zeigen, wenden wir einen Trick an. Wir
zerlegen die Durchläufe der for-Schleife in m disjunkte Phasen der Länge jeweils 2n2 . Wir
sagen, dass eine Phase erfolgreich ist, wenn Rand-2-SAT während der Phase eine erfüllende
Belegung findet. Die Phasen sind abhängig voneinander, da die letzte Belegung einer Phase
gleichzeitig die initiale Belegung der nächsten Phase ist. Da wir die Aussage in Lemma 4.2
aber für jede mögliche initiale Konfiguration gezeigt haben, können wir die Phasen trotz
dieser Abhängigkeiten analysieren. Da unabhängig von der initialen Konfiguration im Erwartungswert nach höchstens n2 Schritten eine erfüllende Belegung gefunden wird, kann
man mit der Markow-Ungleichung zeigen, dass die Wahrscheinlichkeit, dass eine bestimmte
Phase erfolglos ist, höchstens 1/2 beträgt. Die Wahrscheinlichkeit, dass alle Phasen erfolglos
sind, beträgt somit höchstens 1/2m .
Da Rand-2-SAT stets das korrekte Ergebnis liefert, wenn die Formel φ nicht erfüllbar ist,
haben wir mit Theorem 4.3 gezeigt, dass das Problem 2-SAT zu der Komplexitätsklasse RP
gehört. Tatsächlich kann man sogar zeigen, dass 2-SAT zu P gehört und in Linearzeit gelöst
werden kann. Die Analyse des randomisierten Algorithmus Rand-2-SAT diente hauptsächlich
als Vorbereitung auf den nächsten Abschnitt, in dem wir einen randomisierten Algorithmus
für 3-SAT kennenlernen werden.
4.1. Markow-Ketten
4.1.2
77
Anwendung: Randomisierter Algorithmus für 3-SAT
Wir betrachten nun das Problem 3-SAT, bei dem jede Klausel aus genau drei Literalen besteht. Wir wissen bereits, dass dieses Problem N P-hart ist, und erwarten deshalb nicht,
einen polynomiellen deterministischen oder randomisierten Algorithmus zu finden. Stattdessen werden wir einen randomisierten Algorithmus mit einer Laufzeit von O(n3/2 · ( 43 )n )
kennenlernen, der auf einer Verallgemeinerung des Algorithmus Rand-2-SAT beruht. Diese
Laufzeit ist zwar exponentiell, sie ist aber deutlich besser als die Laufzeit von Ω(2n ) für das
Durchprobieren aller möglichen Belegungen der n Variablen.
Zunächst verallgemeinern wir den Algorithmus Rand-2-SAT kanonisch auf 3-SAT.
Rand-3-SAT(φ, m)
1. Wähle uniform zufällige Belegung x der Variablen.
2. for i = 1 to 2m do
3.
if x erfüllt nicht alle Klauseln then
4.
Wähle beliebige durch x nicht erfüllte Klausel.
5.
Wähle uniform zufälliges Literal dieser Klausel und ändere in x seine Belegung.
6. return „Ja“, falls x alle Klauseln erfüllt, und „Nein“ sonst.
Es gibt nur zwei Unterschiede zu Rand-2-SAT. Zum einen wird im ersten Schritt eine uniform
zufällige Belegung statt einer beliebigen gewählt. Der Grund hierfür ist lediglich, dass wir
Rand-3-SAT später an einer Stelle als Unterroutine einsetzen werden, an der es wichtig
ist, mit einer uniform zufälligen Belegung zu starten. Zum anderen wird in Schritt 5 eines
von drei Literalen der nicht erfüllten Klausel uniform zufällig gewählt und nicht eines von
zwei Literalen wie bei Rand-2-SAT. Dieser vermeintlich kleine Unterschied hat einen großen
Einfluss auf die Wahrscheinlichkeit, eine erfüllende Belegung zu finden.
Genauso wie bei Rand-2-SAT interessiert uns nur der Fall, dass die Formel φ erfüllbar ist, und
wir fixieren eine beliebige erfüllende Belegung S. Sei wieder Ai die Belegung der Variablen, die
nach dem i-ten Durchlauf der for-Schleife angenommen wird, und sei A0 die initiale Belegung,
die im ersten Schritt gewählt wird. Wir definieren wieder für jedes Ai eine Zufallsvariable Xi ,
die angibt, in wie vielen Variablen die Belegungen Ai und S übereinstimmen. Ganz analog
zu der Analyse von Rand-2-SAT erhalten wir
Pr(Xi+1 = 1 | Xi = 0) = 1
und
Pr(Xi+1 = n | Xi = n) = 1.
Für j ∈ {1, . . . , n − 1} erhalten wir nun aber nur
Pr(Xi+1 = j + 1 | Xi = j) ≥
1
3
und
2
Pr(Xi+1 = j − 1 | Xi = j) ≤ ,
3
da in einer nicht erfüllten Klausel nur eines der drei Literale einen anderen Wert als in S
annehmen muss. Es kann durchaus vorkommen, dass zwei Literale genauso belegt sind wie
in S. Dann beträgt die Wahrscheinlichkeit, sich von S zu entfernen, genau 2/3.
Genau wie bei Rand-2-SAT handelt es sich bei dem stochastischen Prozess X0 , X1 , X2 , . . .
nicht um eine Markow-Kette, wir können ihn jedoch pessimistisch durch eine MarkowKette Y0 , Y1 , Y2 , . . . mit
Pr(Yi+1 = 1 | Yi = 0) = 1
und
Pr(Yi+1 = n | Yi = n) = 1
78
4. Markow-Ketten und Random Walks
und für j ∈ {1, . . . , n − 1}
Pr(Yi+1 = j + 1 | Yi = j) =
1
3
und
Pr(Yi+1 = j − 1 | Yi = j) =
2
3
abschätzen. Diese Markow-Kette ist in der folgenden Abbildung dargestellt.
1
3
1
0
2
3
1
1
3
2
3
2
1
3
2
3
3
...
2
3
1
3
1
3
2
3
n−1
n
1
Diese Markow-Kette besitzt eine starke Tendenz nach links zu laufen, weshalb es viel länger
dauert, den Zustand n zu erreichen, als bei der Markow-Kette, die wir zur Analyse von Rand2-SAT betrachtet haben. Startet man beispielsweise bei n/2, so kann man den Zustand n nur
erreichen, wenn es eine Teilsequenz von Schritten gibt, in der die Anzahl an Schritten nach
rechts um n/2 größer ist als die Anzahl an Schritten nach links. Da aber jede Teilsequenz der
Länge ` im Erwartungswert 2`/3 Schritte nach links und nur `/3 Schritte nach rechts enthält,
kann man mit Hilfe einer Chernoff-Schranke leicht zeigen, dass man mindestens exponentiell viele Schritt benötigt, um mit einer signifikanten Wahrscheinlichkeit den Zustand n zu
erreichen. In dem folgenden Lemma geben wir die erwartete Anzahl an Schritten genauer
an.
Lemma 4.4. Ist eine 3-SAT-Formel φ erfüllbar, so erreicht die Markow-Kette, die durch
die Zufallsvariablen Y0 , Y1 , . . . beschrieben wird, von Startzustand j ∈ {0, . . . , n} im Erwartungswert in genau 2n+2 − 2j+2 − 3(n − j) vielen Schritten den Zustand n.
Dieses Lemma folgt mit genau denselben Argumenten wie Lemma 4.2, weshalb wir hier
auf seinen Beweis verzichten. Da durch die zufällige Wahl der initialen Belegung der Wert
von Y0 mit hoher Wahrscheinlichkeit in der Nähe von n/2 liegt, interessiert uns besonders die
erwartete Anzahl an Schritten, um von Zustand n/2 den Zustand n zu erreichen. Diese liegt
in der Größenordnung Θ(2n ). Deshalb müssen wir m = Θ(2n ) wählen, um eine konstante
Erfolgswahrscheinlichkeit zu erreichen. Mit dieser Wahl von m ist der Algorithmus Rand3-SAT aber nicht schneller, als deterministisch alle möglichen Belegungen der Variablen
auszuprobieren.
Wir verbessern den Algorithmus, indem wir alle 3n viele Schritten mit einer neuen uniform
zufälligen Belegung der Variablen starten, anstatt mit der aktuell erreichten Belegung weiter
zu machen. Wir erhalten dann den folgenden modifizierten Algorithmus.
Improved-3-SAT(φ, m)
1. for i = 1 to m do
2.
if Rand-3-SAT(φ, 3n) = „Ja“ then return „Ja“;
3. return „Nein“;
Die häufigen Neuinitialisierungen haben zwei positive Effekte auf die Erfolgswahrscheinlichkeit. Nach einer zufälligen Initialisierung befindet sich die Markow-Kette in der Nähe des
Zustands n/2. Von diesem Zustand aus kann der Zustand n schneller erreicht werden als von
einem Zustand, der sehr weit links liegt. Ist der Zustand n nach 3n Schritten noch immer
nicht erreicht worden, so besteht eine hohe Wahrscheinlichkeit, dass die Markow-Kette vom
Startzustand zu einem Zustand weiter links gelaufen ist. Durch die Neuinitialisierung setzen wir den Prozess neu in der Nähe von n/2 an, ohne darauf warten zu müssen, dass die
Markow-Kette von selbst wieder in die Mitte läuft. Ein anderer positiver Effekt ist, dass bei
4.1. Markow-Ketten
79
den häufigen Neuinitialisierungen die Chance besteht, signifikant rechts von n/2 zu starten.
Dies ist gemäß der Chernoff-Schranke zwar sehr unwahrscheinlich, aber da wir m exponentiell groß wählen werden, besteht durchaus die Chance, dass eine der Initialisierung weit rechts
von n/2 liegt.
Zur formalen Analyse des Algorithmus modifizieren wir die Markow-Kette Y0 , Y1 , Y2 , . . . zunächst so, dass sie links über den Zustand 0 und rechts über den Zustand n hinauslaufen
darf. Konkret betrachten wir eine Markow-Kette Y00 , Y10 , Y20 , . . ., bei der Y00 = X0 und für
alle j ∈ Z
0
Pr(Yi+1
= j + 1 | Yi0 = j) =
1
3
0
Pr(Yi+1
= j − 1 | Yi0 = j) =
und
2
3
gilt. Diese Markow-Kette ist eine pessimistische Abschätzung des stochastischen Prozesses X0 , X1 , X2 , . . . in dem Sinne, dass sie, wenn sie im gleichen Zustand startet, den Zustand n nicht früher erreicht als X0 , X1 , X2 , . . .. Wir definieren qj als die Wahrscheinlichkeit,
dass die Markow-Kette Y00 , Y10 , Y20 , . . . den Zustand n in 3n Schritten erreicht, wenn sie im
Zustand n − j initialisiert wird, und wir möchten für jedes qj eine untere Schranke finden.
Die Wahrscheinlichkeit, den Zustand n ausgehend vom Zustand n − j in genau j Schritten zu
erreichen, beträgt nur (1/3)j . Wenn wir jedoch für ein k ∈ {0, . . . , j} genau 2k + j Schritte
machen, von denen insgesamt k Schritte nach links und k + j Schritte nach rechts gehen, so
erreichen wir den Zustand n ebenfalls. Die Wahrscheinlichkeit hierfür beträgt genau
j + 2k
k
! k j+k
2
3
1
3
.
Bei dieser Formel haben wir ausgenutzt, dass der Binomialkoeffizient der Anzahl an Möglichkeiten entspricht, wie die k Schritte nach links auf die insgesamt 2k+j Schritte aufgeteilt sein
können. Für eine konkrete Aufteilung beträgt die Wahrscheinlichkeit, dass die Markow-Kette
die entsprechenden Zustandsübergänge macht, genau ( 32 )k ( 13 )j+k . Dementsprechend gilt
qj ≥
max
k∈{0,...,j}
j + 2k
k
! k j+k
2
3
1
3
≥
3j
j
! j 2j
2
3
1
3
(3j)!
2
j!(2j)! 27
=
j
,
(4.4)
wobei wir im zweiten Schritt k = j eingesetzt haben.
Um diesen Term abzuschätzen, nutzen wir die Stirling-Formel für Fakultäten, die in folgendem Lemma zusammengefasst ist.
Lemma 4.5. Für m ≥ 1 gilt
√
2πm
m
e
m
m
√
m
≤ m! ≤ 2 2πm
.
e
Zunächst nutzen wir die Stirling-Formel, um für j ≥ 1 die Fakultäten in (4.4) abzuschätzen.
Es gilt
√ j
√
3j j 2j
(3j)!
6πj
3j
e
e
3 27
√
≥ √
= √
.
j!(2j)!
j
2j
4 2πj 4πj e
8 πj 4
Setzen wir c =
√
√
3/(8 π), so erhalten wir für j ≥ 1 insgesamt
c 27
qj ≥ √
j 4
j 2
27
j
c 1
= √ j.
j2
80
4. Markow-Ketten und Random Walks
Außerdem gilt q0 = 1.
Wir wissen, dass eine zufällige Initialisierung mit einer konstanten Wahrscheinlichkeit im
Zustand n/2 oder rechts davon liegt. Die Wahrscheinlichkeit, von dort in 3n Schritten zum
Zustand n zu gelangen, beträgt
1
q =Ω √
n · 2n/2
n
2
1
.
=ω
1,42n
Mit dieser Erkenntnis kann man leicht zeigen, dass der Algorithmus Improved-3-SAT bereits für m = Θ(1,42n ) eine gegen Null gehende Fehlerwahrscheinlichkeit besitzt. Dies ist
eine deutliche Verbesserung gegenüber dem Ausprobieren aller möglichen Belegungen der
Variablen mit einer Laufzeit von Ω(2n ).
Wir nutzen als nächstes in der Analyse noch den Effekt aus, dass eine signifikante Wahrscheinlichkeit besteht, dass eine der Initialisierungen deutlich rechts von n/2 liegt. Dadurch
können wir die Laufzeit weiter verbessern. Sei q die Wahrscheinlichkeit, dass nach 3n Schritten startend von einer uniform zufälligen Initialisierung der Zustand n erreicht wird. Es
gilt
q≥
n
X
Pr(X0 = n − j) · qj
j=0
n
X
1
n
≥ n+
2
j
j=1
! n
1
2
c 1
√ j
j2
!
n X
n
n 1
c 1
≥√
n 2
j=0
j 2j
(1)n−j
n n
c 1
3
=√
n 2
2
n
c 3
=√
.
n 4
Wir haben in der zweiten Zeile ausgenutzt, dass die Wahrscheinlichkeit,
dass sich eine zu
fällige Belegung in genau j Positionen von S unterscheidet, genau nj ( 21 )n beträgt. In der
vorletzten Zeile haben wir den binomischen Lehrsatz ausgenutzt. Damit haben wir das folgende Lemma gezeigt.
Lemma 4.6. Die Wahrscheinlichkeit, dass ein Aufruf von Rand-3-SAT(φ, 3n) erfolgreich
ist, beträgt mindestens
c 3 n
α := √
.
n 4
Wählen wir m = b/α für ein b ≥ 1, so beträgt die Wahrscheinlichkeit, dass keiner der Aufrufe
erfolgreich ist, höchstens
1
(1 − α)b/α ≤ b .
e
Somit haben wir einen randomisierten Algorithmus mit einer beliebig kleinen konstanten Fehlerwahrscheinlichkeit für 3-SAT erhalten, der eine Laufzeit von O(n3/2 ( 43 )n ) = O(1,333334n )
besitzt.
Der hier beschriebene Algorithmus für 3-SAT wurde im Jahre 1999 von Uwe Schöning präsentiert und ist 2002 in einer Zeitschrift erschienen [3]. Seitdem gab es zahlreiche Verbesserungen. Der beste bekannte randomisierte Algorithmus für 3-SAT von Timon Hertli ist aus
4.2. Eigenschaften von Markow-Ketten
81
dem Jahre 2011 und erreicht eine Laufzeit von O(1,30704n ) [1]. Außerdem ist es Robin Moser und Dominik Scheder gelungen, den Algorithmus von Schöning zu derandomisieren, d. h.
einen deterministischen Algorithmus mit derselben Laufzeit von O(1,333334n ) anzugeben.
Dies ist der bisher beste bekannte deterministische Algorithmus für 3-SAT [4].
4.2
Eigenschaften von Markow-Ketten
Wir werden nun Markow-Ketten systematischer betrachten und einige grundlegende Eigenschaften diskutieren.
4.2.1
Klassifikation von Zuständen
Oft interessiert uns bei einer Markow-Kette, welche Verteilung auf den Zuständen sie nach
einer großen Anzahl an Schritten annimmt. Um diese Frage beantworten zu können, definieren wir zunächst verschiedene Attribute für die Zustände einer Markow-Kette. Grundlegend
für die weiteren Betrachtungen ist die folgende Definition.
Definition 4.7. Es seien eine Markow-Kette und zwei beliebige Zustände i und j dieser
Markow-Kette gegeben. Wir sagen, dass j von i erreichbar ist, wenn es ein m ≥ 0 gibt, für
(m)
das pi,j > 0 gilt. Ist sowohl i von j als auch j von i erreichbar, so sagen wir, dass i und j
gegenseitig erreichbar sind, und schreiben dies als i ↔ j.
Man kann leicht nachweisen, dass die durch ↔ definierte Relation auf der Zustandsmenge
reflexiv, symmetrisch und transitiv ist. Damit handelt es sich um eine Äquivalenzrelation, die
die Zustandsmenge in disjunkte Klassen einteilt. Betrachten wir die Markow-Kette wieder
als einen gerichteten Graphen, dessen Knoten den Zuständen entsprechen und dessen Kanten
Übergängen entsprechen, die mit einer positiven Wahrscheinlichkeit erfolgen, dann sind die
starken Zusammenhangskomponenten dieses Graphen identisch mit den Äquivalenzklassen
der Relation ↔.
Wir betrachten den gerichteten Graphen, dessen Knoten die Äquivalenzklassen sind und der
eine Kante von einer Äquivalenzklasse K1 zu einer anderen Äquivalenzklasse K2 genau dann
enthält, wenn es einen Zustand in K1 gibt, von dem aus ein Zustand in K2 erreichbar ist.
Man überlegt sich leicht, dass dieser Graph azyklisch ist. Wir nennen eine Äquivalenzklasse K
final, wenn es in dem Graphen keine Kanten von K zu einer andern Äquivalenzklasse gibt.
Definition 4.8. Eine Markow-Kette heißt nicht reduzierbar, falls alle ihre Zustände in
derselben Äquivalenzklasse bezüglich der Relation ↔ liegen.
t als die Wahrscheinlichkeit, dass die
Für zwei Zustände i und j und t ≥ 1 definieren wir ri,j
Markow-Kette startend in Zustand i nach genau t Schritten zum ersten Mal den Zustand j
erreicht:
t
ri,j
= Pr Xt = j und ∀s ∈ {1, 2, . . . t − 1} : Xs 6= j X0 = i .
Wir lassen die Markow-Kette nun unendlich viele Zustandsübergänge durchführen und interessieren uns dafür, welche Zustände unendlich oft besucht werden und welche nur endlich
oft in der Sequenz der besuchten Zustände vorkommen.
82
4. Markow-Ketten und Random Walks
t = 1
Definition 4.9. Ein Zustand i einer Markow-Kette heißt rekurrent, falls t≥1 ri,i
P
t < 1, so heißt Zustand i transient. Eine Markow-Kette heißt
gilt. Gilt stattdessen t≥1 ri,i
rekurrent, falls alle ihre Zustände rekurrent sind.
P
Startet die Markow-Kette bei einem rekurrenten Zustand i und führt unendlich viele Zustandsübergänge durch, so wird der Zustand i unendlich oft besucht. Startet die MarkowKette hingegen in einem transienten Zustande i, so ist die Anzahl der Besuche von i eine
P
t . Die erwartete Anzahl von Besuchen
geometrische Zufallsvariable mit Parameter 1− t≥1 ri,i
von i (inklusive des ersten) beträgt dann 1 −
t −1
t≥1 ri,i
P
< ∞.
Das folgende Lemma, das wir nicht beweisen, zeigt, dass rekurrent und transient Eigenschaften sind, die sich von den Zuständen auf die Äquivalenzklassen der Relation ↔ erweitern
lassen.
Lemma 4.10. Es seien i und j zwei Zustände einer Markow-Kette mit i ↔ j. Dann ist j
genau dann rekurrent, wenn i rekurrent ist.
In endlichen Markow-Ketten (d. h. Markow-Ketten mit einer endlichen Zustandsmenge) kann
man leicht die Äquivalenzklassen der Relation ↔ charakterisieren, die rekurrent sind. Dies
sind genau die finalen Äquivalenzklassen. Alle nicht finalen Äquivalenzklasse sind transient.
Wir interessieren uns nicht nur dafür, ob ein Zustand j von einem Zustand i erreichbar
ist, sondern auch dafür wie viele Zustandsübergänge die Markow-Kette im Erwartungswert
benötigt, um startend in Zustand i den Zustand j zu erreichen. Diesen Erwartungswert
bezeichnen wir mit hi,j und wir können ihn als
hi,j =
X
t
t · ri,j
t≥1
schreiben. Ist ein Zustand in einer Markow-Kette mit einer unendlichen Zustandsmenge
rekurrent, so bedeutet das nicht unbedingt, dass der Erwartungswert hi,i endlich ist. Deshalb
unterscheiden wir in der folgenden Definition zwei Arten von rekurrenten Zuständen.
Definition 4.11. Ein rekurrenter Zustand i einer Markow-Kette heißt positiv-rekurrent,
falls hi,i < ∞ gilt. Ansonsten heißt der Zustand i null-rekurrent.
Das folgende Beispiel zeigt eine Markow-Kette, in der der Zustand 1 null-rekurrent ist.
1
2
1
1
2
1
3
2
2
3
1
4
3
3
4
1
5
4
4
5
...
i−1
i
1
i+1
i
i
i+1
1
i+2
i+1
i+1
i+2
...
Die Wahrscheinlichkeit, dass startend in Zustand 1 nach t Schritten Zustand 1 kein einziQ
j
1
ges Mal wieder besucht wird, beträgt tj=1 j+1
= t+1
. Diese Wahrscheinlichkeit geht für
wachsendes t gegen Null und somit ist der Zustand 1 rekurrent. Die erwartete Anzahl an
Schritten, um zum Zustand 1 zurückzukehren, beträgt jedoch
h1,1 =
X
t≥1
t
t · r1,1
=
X
t≥1
t·
1
= ∞,
t(t + 1)
4.2. Eigenschaften von Markow-Ketten
83
t = 1/t(t + 1) ausgenutzt haben. Dies folgt, da die Wahrscheinlichkeit, in den
wobei wir r1,1
ersten t − 1 Schritten dem Pfad zu folgen, laut obiger Rechnung 1/t beträgt und da die
Wahrscheinlichkeit, dann von Zustand t zurück zu Zustand 1 zu gehen, 1/(t + 1) beträgt.
Wie dieses Beispiel schon vermuten lässt, kann es nur in unendlichen Markow-Ketten nullrekurrente Zustände geben. In endlichen Markow-Ketten sind alle rekurrenten Zustände auch
positiv-rekurrent. Während es unendliche Markow-Ketten gibt, die ausschließlich aus transienten Zuständen bestehen, enthält jede endliche Markow-Kette mindestens einen rekurrenten
Zustand. Diese Aussagen zu beweisen, überlassen wir dem Leser als Übungsaufgabe.
Uns interessiert nicht nur, wie oft ein Zustand im Laufe der Zeit besucht wird, sondern auch,
zu welchen Zeitpunkten dies geschieht. Betrachten wir beispielsweise eine Markow-Kette,
deren Zustände die ganzen Zahlen sind, die im Zustand 0 startet und von jedem Zustand i mit
einer Wahrscheinlichkeit von jeweils 1/2 zum Zustand i−1 oder i+1 wechselt, so können alle
gerade Zustände nur zu geraden Zeitpunkten erreicht werden und alle ungeraden Zustände
können nur zu ungeraden Zeitpunkten erreicht werden. Zustände mit dieser Eigenschaft
nennen wir periodisch. Dies präzisieren wir in der folgenden Definition.
Definition 4.12. Ein Zustand i heißt periodisch, falls ein ∆ ≥ 2 existiert, sodass die
Markow-Kette startend im Zustand i den Zustand i genau zu Zeitpunkten t mit positiver
Wahrscheinlichkeit erreichen kann, bei denen t ein Vielfaches von ∆ ist, d. h.
Pr(Xt = i | x0 = i) > 0 ⇐⇒ t ist Vielfaches von ∆.
Eine Markow-Kette heißt periodisch, falls mindestens einer ihrer Zustände periodisch ist.
Von besonderem Interesse sind Markow-Ketten, die ausschließlich aus aperiodischen und
positiv-rekurrenten Zuständen bestehen.
Definition 4.13. Ein Zustand einer Markow-Kette, der aperiodisch und positiv-rekurrent
ist, heißt ergodisch. Eine Markow-Kette heißt ergodisch, wenn alle ihre Zustände ergodisch
sind.
Aus den Überlegungen, die wir bisher gemacht haben, folgt leicht, dass eine endliche MarkowKette genau dann ergodisch ist, wenn sie nicht reduzierbar und aperiodisch ist. Besitzt die
Relation ↔ bei einer endlichen Markow-Kette nämlich nur eine Äquivalenzklasse, so sind auf
Grund von Lemma 4.10 und der Tatsache, dass es mindestens einen rekurrenten Zustand
gibt, alle Zustände der Markow-Kette rekurrent. Wegen der endlichen Zustandsmenge ist
dies gleichbedeutend damit, dass alle Zustände positiv-rekurrent sind.
4.2.2
Anwendung: Gambler’s Ruin Problem
Wir nutzen die Definitionen des vorangegangenen Abschnitts, um ein Zufallsexperiment zu
analysieren, das als Gambler’s Ruin Problem bekannt ist. Dabei gibt es zwei Spieler, die mit
einem Startkapital von a ∈ N bzw. b ∈ N Euro beginnen. Sie werfen eine faire Münze und je
nach Ausgang zahlt entweder der erste Spieler einen Euro an den zweiten oder umgekehrt.
Dies wird solange wiederholt, bis einer der beiden Spieler kein Geld mehr besitzt. Dieser
Spieler ist dann der Verlierer. Die Frage ist nun, wie hoch die Wahrscheinlichkeit ist, dass
der erste Spieler verliert. Klar ist zunächst, dass im Falle a = b aus Symmetriegründen beide
Spieler die gleiche Wahrscheinlichkeit besitzen, ihr Vermögen zu verlieren. Der interessante
Fall ist jedoch, wenn beide Spieler mit verschiedenen Beträgen starten.
84
4. Markow-Ketten und Random Walks
Theorem 4.14. In dem oben beschriebenen Spiel beträgt die Wahrscheinlichkeit, dass der
erste Spieler sein Vermögen verliert, b/(a + b). Dementsprechend beträgt die Wahrscheinlichkeit, dass der zweite Spieler sein Vermögen verliert, a/(a + b).
Beweis. Zunächst stellen wir das Spiel als Markow-Kette dar. Die Zustände dieser MarkowKette sind −a, −a + 1, . . . , b − 1, b, wobei Zustand i bedeutet, dass sich durch die bisherigen
Münzwürfe das Vermögen vom ersten Spieler um i Euro erhöht hat. Die Markow-Kette
startet im Zustand 0, der Zustand −a entspricht dem Ereignis, dass der erste Spieler sein
Vermögen verliert, und der Zustand b entspricht dem Ereignis, dass der zweite Spieler sein
Vermögen verliert. Wird einer dieser beiden Zustände erreicht, so ist das Spiel beendet und
der Zustand wird nicht mehr verlassen. Von jedem anderen Zustand i ∈ {−a + 1, . . . , b − 1}
erfolgt mit einer Wahrscheinlichkeit von jeweils 1/2 ein Übergang in den Zustand i − 1 oder
in den Zustand i + 1. Diese Markow-Kette, die in der folgenden Abbildung dargestellt ist,
ähnelt stark der, die wir zur Analyse des Algorithmus Rand-2-SAT eingesetzt haben.
1
1
2
−a
1
2
−a + 2
−a + 1
1
2
1
2
1
2
−a + 3
1
2
...
1
2
1
2
1
2
b−1
b
1
1
2
Die Zustände −a und b sind offensichtlich rekurrent, da sie nicht mehr verlassen werden
können. Andererseits sind alle anderen Zustände i ∈ {−a + 1, . . . , b − 1} transient, da von
jedem solchen Zustand i eine positive Wahrscheinlichkeit besteht, einen der Zustände −a
oder b zu erreichen, in welchem Fall die Markow-Kette nie wieder zu i zurückkehrt. Je mehr
Schritte die Markow-Kette durchführt, desto wahrscheinlicher wird es, dass sie einen der
beiden rekurrenten Zustände erreicht. Man kann leicht argumentieren, dass für alle Zustände i ∈ {−a + 1, . . . , b − 1}
lim Pr(Xt = i) = 0
t→∞
gilt. Es sei
q = lim Pr(Xt = b),
t→∞
die Wahrscheinlichkeit, dass der erste Spieler das Spiel gewinnt. Dann beträgt die Wahrscheinlichkeit, dass der zweite Spieler das Spiel gewinnt dementsprechend
1 − q = lim Pr(Xt = −a).
t→∞
Es gilt
lim E(Xt ) = lim
t→∞
t→∞
b X
i · Pr(Xt = i) = bq − a(1 − q).
(4.5)
i=−a
Falls wir den Grenzwert auf der linken Seite bestimmen können, so können wir daraus direkt
die Wahrscheinlichkeiten q und 1 − q bestimmen, mit denen der erste und zweite Spieler
gewinnen.
Es gilt X0 = 0 und damit insbesondere E(X0 ) = 0. Die Zufallsvariable X1 nimmt mit einer
Wahrscheinlichkeit von jeweils 1/2 entweder den Wert −1 oder den Wert +1 an. Demzufolge
gilt auch E(X1 ) = 0. Man kann nun mit Hilfe von vollständiger Induktion nachweisen,
dass E(Xt ) = 0 für jedes feste t ≥ 0 gilt. Insbesondere gilt
lim E(Xt ) = 0,
t→∞
4.3. Random Walks auf Graphen
85
woraus mit (4.5)
0 = bq − a(1 − q) = (b + a)q − a
folgt. Löst man diese Gleichung nach q bzw. nach 1 − q auf, so erhält man genau die im
Theorem angegebenen Gewinnwahrscheinlichkeiten.
4.2.3
Stationäre Verteilung
Es sei eine Markow-Kette mit einer Übergangsmatrix P gegeben. Wir haben gesehen, dass
sich mit Hilfe von P für eine gegebene Verteilung zum Zeitpunkt 0 für jeden Zeitpunkt eine
Wahrscheinlichkeitsverteilung auf der Zustandsmenge bestimmen lässt. Ist π die Verteilung
zu einem Zeitpunkt t, so ist πP die Verteilung zum Zeitpunkt t+1. Von besonderem Interesse
sind Verteilungen, die sich nicht mehr ändern, wenn sie einmal erreicht sind.
Definition 4.15. Eine Wahrscheinlichkeitsverteilung π auf der Menge der Zustände einer
Markow-Kette mit Übergangsmatrix P heißt stationär, wenn π = πP gilt.
Das folgende Theorem, welches wir nicht beweisen, wird auch als Fundamentalsatz über
Markow-Ketten bezeichnet.
Theorem 4.16. Jede endliche, nicht reduzierbare und aperiodische Markow-Kette besitzt die
folgenden Eigenschaften.
a) Alle Zustände sind ergodisch.
b) Es gibt eine eindeutige stationäre Verteilung π mit π = πP .
(t)
c) Für alle Zustände i und j der Markow-Kette existiert der Grenzwert limt→∞ pj,i und
er ist unabhängig von j. Des Weiteren gilt
πi =
1
(t)
= lim pj,i .
hi,i t→∞
d) Für einen Zustand i und ein t ≥ 1 bezeichne N (i, t) wie oft Zustand i in t Schritten
besucht wird. Unabhängig vom Startzustand gilt
N (i, t)
= πi .
t→∞
t
lim
Die wesentliche Erkenntnis von Theorem 4.16 ist, dass endliche, nicht reduzierbare und aperiodische Markow-Ketten eine eindeutige stationäre Verteilung besitzen, der sich die MarkowKette unabhängig von der Initialisierung nach einer hinreichend großen Anzahl an Schritten
annähert. Die stationäre Verteilung ist also deswegen interessant, da sie das Verhalten der
Markow-Kette nach einer großen Anzahl an Schritten beschreibt.
4.3
Random Walks auf Graphen
Wir betrachten nun spezielle Markow-Ketten, die durch ungerichtete Graphen beschrieben
werden, in denen sich ein Partikel zufällig entlang der Kanten von Knoten zu Knoten bewegt.
Sei G = (V, E) in diesem Abschnitt stets ein ungerichteter, zusammenhängender Graph mit n
86
4. Markow-Ketten und Random Walks
Knoten und m Kanten. Der Graph G induziert eine Markow-Kette mit Zustandsmenge V
und den Übergangswahrscheinlichkeiten
pu,v =

 1
falls (u, v) ∈ E
0
sonst
d(u)
für jedes Paar von Knoten u, v ∈ V , wobei d(u) den Grad des Knotens u bezeichnet. Die
Übergangswahrscheinlichkeiten sind so gewählt, dass das Partikel zu jedem Zeitpunkt zu
einem uniform zufälligen Nachbarn des aktuellen Knotens wechselt. Diese Markow-Kette
nennen wir auch Random Walk auf G.
Lemma 4.17. Der Random Walk auf G ist genau dann periodisch, wenn G bipartit ist.
Beweis. Ist G bipartit und startet der Random Walk bei einem Knoten v, so kann nur zu den
geraden Zeitpunkten eine positive Wahrscheinlichkeit bestehen, dass sich der Random Walk
bei v befindet. Des Weiteren besteht zu jedem geraden Zeitpunkt 2t auch tatsächlich eine
positive Wahrscheinlichkeit, da der Random Walk t mal eine von v ausgehende Kante hin
und zurück benutzt haben kann. Somit sind der Knoten v und der Random Walk periodisch.
Ein Graph ist genau dann bipartit, wenn er keinen Kreis ungerader Länge enthält. Ist G nicht
bipartit, so gibt es also einen Kreis C ungerader Länge. Sei v ∈ V ein beliebiger Knoten des
Graphen. Da der Graph G laut Annahme zusammenhängend ist, gibt es einen Weg P von v
zu einem Knoten u des Kreises C. Besteht dieser Weg aus `1 Kanten und der Kreis aus `2
Kanten, so gibt es einen Weg der Länge 2`1 + `2 von v zu sich selbst. Dieser Weg besteht
aus dem Pfad P von v nach u, konkateniert mit dem Kreis C und anschließend wieder
dem Pfad P von u nach v. Erweitert man diesen Pfad dadurch, dass eine von v ausgehende
Kante hin und zurück benutzt wird, so erhält man auch für jede ungerade Länge größer
als 2`1 + `2 einen Weg von v zu sich selbst. Ebenso gibt es für jede gerade Länge einen
(`)
solchen Weg. Demzufolge ist v nicht periodisch, da pv,v > 0 für jedes ` ≥ 2`1 + `2 gilt. Da
der Knoten v beliebig gewählt wurde, zeigt dieses Argument, dass die Markow-Kette nicht
periodisch ist.
Wir gehen ab jetzt davon aus, dass G zusammenhängend und nicht bipartit ist.
Theorem 4.18. Der Random Walk auf G konvergiert gegen die stationäre Verteilung π
d(v)
mit πv = 2|E|
für alle v ∈ V .
Beweis. Da G endlich, zusammenhängend und nicht bipartit ist, ist der Random Walk auf G
endlich, nicht reduzierbar und gemäß Lemma 4.17 aperiodisch. Gemäß Theorem 4.16 besitzt
der Random Walk auf G eine eindeutige stationäre Verteilung, gegen die er konvergiert.
Somit genügt es, nachzuweisen, dass die im Theorem angegebene Verteilung stationär ist.
Zunächst zeigen wir, dass es sich bei π tatsächlich um eine Wahrscheinlichkeitsverteilung
handelt. Offensichtlich sind alle πv nicht negativ und es gilt
X
v∈V
πv =
X d(v)
v∈V
2|E|
=
1 X
2|E|
d(v) =
= 1.
2|E| v∈V
2|E|
Nun betrachten wir die Wahrscheinlichkeit, dass sich die Markow-Kette nach einem Schritt
in einem Knoten v ∈ V befindet, wenn sie mit der Verteilung π startet. Diese Wahrscheinlichkeit können wir angeben, indem wir über alle Nachbarn u von v die Wahrscheinlichkeit
aufsummieren, dass der Random-Walk bei u startet und dann der Kante von u nach v folgt.
4.3. Random Walks auf Graphen
87
Die Wahrscheinlichkeit, dass sich der Random Walk nach einem Schritt in Knoten v befindet,
beträgt also
X
u∈N (v)
πu · pu,v =
X
d(u)
1
1
d(v)
·
=
=
= πv ,
2|E| d(u) u∈N (v) 2|E|
2|E|
u∈N (v)
X
wobei N (v) ⊆ V die Menge der zu v adjazenten Knoten bezeichnet. Damit ist gezeigt, dass π
eine stationäre Verteilung ist.
Wir führen nun einige Begriffe ein, die in der Analyse von Random Walks eine große Rolle
spielen.
Definition 4.19. Es seien u, v ∈ V .
a) Die erwartete Zeit hu,v , um von u zu v zu gelangen, bezeichnen wir als Hitting-Time.
b) Die erwartete Zeit Cu,v = hu,v + hv,u , um von u zu v und wieder zurück zu u zu
gelangen, bezeichnen wir als Commute-Time.
c) Wir bezeichnen mit Cu (G) die erwartete Zeit, um von u startend alle Knoten von G
mindestens einmal zu erreichen.
d) Wir bezeichnen mit C(G) = maxu∈V Cu (G) die Cover-Time von G.
Aus den Theoremen 4.16 und 4.18 folgt direkt das folgende Korollar über Hitting-Time.
Korollar 4.20. Für alle v ∈ V gilt
hv,v =
1
2|E|
=
.
πv
d(v)
Insbesondere die Cover-Time eines Graphen G ist für viele Anwendungen von Interesse. Um
eine bessere Intuition zu bekommen, betrachten wir die Cover-Time für einige Beispielgraphen.
• Als erstes betrachten wir den Fall, dass G eine Clique auf n Knoten ist. Befindet
sich der Random Walk dann an einem Knoten v ∈ V , so wechselt er zu einem uniform
zufälligen Knoten aus V \{v}. Dieser Prozess ähnelt stark dem Coupon Collector’s Problem, bei dem in jedem Schritt eines von n Sammelbildern uniform zufällig gewählt
wird. Wenn wir die Knoten mit den Sammelbildern identifizieren, so besteht der einzige
Unterschied darin, dass es im Gegensatz zum Coupon Collector’s Problem nicht vorkommen kann, dass dasselbe Sammelbild zweimal direkt hintereinander gezogen wird.
Intuitiv sieht man leicht ein, dass dies bei hinreichend großem n keine gravierende
Änderung des Modells ist und dass sich die erwartete Zeit, bis jedes Bild mindestens
einmal gezogen wurde, asymptotisch dadurch nicht ändert. Dies legt die Vermutung
nahe, dass die Cover-Time des vollständigen Graphen mit n Knoten genauso wie im
Coupon Collector’s Problem Θ(n log n) beträgt.
• Als nächstes betrachten wir einen Graphen Pn , der aus einem Pfad mit n Knoten besteht. Der Random Walk auf Pn entspricht nahezu der Markow-Kette, die wir zur Analyse des Algorithmus Rand-2-SAT eingesetzt haben. Der einzige Unterschied besteht
darin, dass der Random Walk auf Pn , wenn er eines der Enden erreicht hat, mit Wahrscheinlichkeit 1 im nächsten Schritt wieder das Ende verlässt. Für alle inneren Knoten
88
4. Markow-Ketten und Random Walks
sind die Übergangswahrscheinlichkeiten in beiden Markow-Ketten identisch. Auch hier
liegt die Vermutung nahe, dass diese kleine Änderung für hinreichend große n keine
Konsequenz für das asymptotische Verhalten der Cover-Time hat. Wir überlassen es
dem Leser, formal zu beweisen, dass die Cover-Time des Pfades mit n Knoten genauso
wie bei der Markow-Kette aus der Analyse von Rand-2-SAT Θ(n2 ) beträgt.
• Als letztes Beispiel betrachten wir den sogenannten Lollipop-Graphen Ln mit n Knoten.
Wir nehmen der Einfachheit halber an, dass n gerade ist. Der Graph Ln besteht aus
einer Clique mit n/2 Knoten und einem Pfad mit n/2 Knoten, der an einen beliebigen
Knoten u der Clique angehängt ist. Den Knoten am anderen Ende des Pfades nennen
wir v. Der Lollipop-Graph ist in der folgenden Abbildung dargestellt.
Clique mit
n/2 Knoten
... u
...
v
n/2 Knoten
Die erwartete Zeit hv,u , um von Knoten v zu Knoten u zu gelangen, beträgt gemäß des
vorangegangenen Beispiels Θ(n2 ). Andererseits beträgt die erwartete Zeit hu,v , um von
Knoten u zu Knoten v zu gelangen Θ(n3 ). Wir werden dies später formal nachweisen,
begnügen uns hier aber mit einer anschaulichen Erklärung. Startet der Random Walk
im Knoten u, so ist es sehr wahrscheinlich, dass er zunächst zu einem anderen Knoten
der Clique läuft. Solange sich der Random Walk innerhalb der Clique befindet, ist die
Verteilung auf den Knoten der Clique nahezu uniform. Das bedeutet, dass sich der
Random Walk im Erwartungswert alle Θ(n) Schritte an Knoten u befindet. Die Wahrscheinlichkeit, von dort auf den Pfad und nicht zu einem anderen Knoten der Clique zu
laufen, beträgt 1/Θ(n). Also muss der Knoten u im Erwartungswert Θ(n) oft besucht
werden, bis der Knoten u0 auf dem Pfad neben u erreicht wird. Wie wahrscheinlich ist
es, dass der Random Walk von u0 zuerst Knoten v erreicht, bevor er zurück in die Clique läuft? Dies entspricht dem Gambler’s Ruin Problem, bei dem die Spieler mit einem
und mit n/2 − 1 Euro Startkapital starten. Demzufolge beträgt die Wahrscheinlichkeit
nur 1/Θ(n) und somit benötigt man im Erwartungswert Θ(n) Versuche. Fassen wir
alles zusammen (erwartete Zeit Θ(n) um zu u zu gelangen, erwartete Anzahl Θ(n) an
Versuchen, um von dort zu u0 zu gelangen, erwartete Anzahl Θ(n) an Versuchen, um
von dort zu v zu gelangen), so kommen wir auf hu,v = Θ(n3 ). Insbesondere zeigt dies,
dass C(Ln ) = Ω(n3 ) gilt.
An diesem Beispiel sieht man, dass die Hitting-Times hu,v und hv,u im Allgemeinen
nicht identisch sind und sich sogar stark unterscheiden können. Außerdem sieht man,
dass das Einfügen von Kanten in einen Graphen die Cover-Time erhöhen kann, denn
ein Pfad der Länge n hat im Gegensatz zu dem Lollipop-Graphen eine Cover-Time von
nur Θ(n2 ).
Wir kommen nun zur allgemeinen Analyse der Cover-Time. Dazu beweisen wir zunächst das
folgende Lemma.
4.3. Random Walks auf Graphen
89
Lemma 4.21. Es sei G = (V, E) ein zusammenhängender, nicht bipartiter Graph und es
sei (u, v) ∈ E eine beliebige Kante. Dann gilt hv,u ≤ 2|E|.
Beweis. Es gilt
X
2|E|
1
= hu,u =
(1 + hw,u ),
d(u)
d(u) w∈N (u)
dabei ergibt sich die erste Gleichung aus Theorem 4.18 und die zweite folgt, indem man
über alle Möglichkeiten für den ersten Schritt summiert. Multipliziert man diese Gleichung
mit d(u), so erhält man
X
2|E| =
(1 + hw,u ),
w∈N (u)
woraus wegen v ∈ N (u) direkt die Behauptung folgt.
Mit Hilfe dieses Lemmas können wir nun eine obere Schranke für die Cover-Time beliebiger
Graphen angeben.
Theorem 4.22. Es sei G = (V, E) ein zusammenhängender, nicht bipartiter Graph. Dann
gilt C(G) < 4|V ||E|.
Beweis. Da G zusammenhängend ist, existiert ein Spannbaum T von G. Wir betrachten den
Multigraphen, der dieselbe Knotenmenge V wie G enthält und der nur die Kanten aus T
enthält, aber jeweils zweimal. In diesem Multigraphen hat jeder Knoten geraden Grad und
somit existiert ein Eulerkreis, also ein Kreis, der jede Kante genau einmal enthält (dem Leser
mag dieses Argument bei dem Entwurf von Approximationsalgorithmen für das metrische
TSP bereits begegnet sein). Da der Spannbaum T aus |V | − 1 Kanten besteht, besteht der
Eulerkreis aus 2|V | − 2 Kanten. Es sei v0 , v1 , v2 , . . . , v2|V |−2 = v0 die Sequenz der besuchten
Knoten. Es gilt
2|V |−3
C(G) ≤
X
hvi ,vi+1 ,
i=0
denn egal, wo der Random Walk startet, dauert es höchstens so lange, alle Knoten zu besuchen, wie es dauert, die Knoten in genau der Reihenfolge zu besuchen, die durch den
Eulerkreis vorgegeben ist. Mit Hilfe von Lemma 4.21 folgt
2|V |−3
C(G) ≤
X
hvi ,vi+1 ≤ (2|V | − 2)2|E| < 4|V ||E|.
i=0
4.3.1
Anwendung: Zusammenhangstest
Als eine algorithmische Anwendung betrachten wir ein einfaches Problem. Gegeben seien
ein ungerichteter nicht bipartiter Graph G = (V, E) und zwei Knoten s, t ∈ V , und es soll
entschieden werden, ob es in G einen Weg zwischen s und t gibt. Selbstverständlich kann
dieses Problem mit Hilfe einer Tiefen- oder Breitensuche in linearer Zeit O(|V | + |E|) gelöst
werden. Da bei einer solchen Suche aber für jeden Knoten gespeichert werden muss, ob
er bereits besucht wurde, beträgt der Speicherplatzbedarf dieser Algorithmen Θ(|V |). Bei
großen Graphen kann dies zu groß sein, so dass man an Algorithmen interessiert ist, die mit
weniger Speicherplatz auskommen. Der folgende randomisierte Algorithmus liegt nach der
obigen Diskussion nahe.
90
4. Markow-Ketten und Random Walks
Zusammenhangstest(G, s, t)
1. Führe einen Random Walk auf G startend bei s für 4|V |3 Schritte durch.
2. return „Ja“, falls zu einem Zeitpunkt Knoten t erreicht wurde, und „Nein“ sonst.
Theorem 4.23. Gibt es im Graphen G keinen Weg zwischen s und t, dann gibt der obige Algorithmus stets das richtige Ergebnis zurück. Ansonsten gibt er mit einer Wahrscheinlichkeit
von mindestens 1/2 das richtige Ergebnis zurück. Der Speicherplatzbedarf des Algorithmus
beträgt O(log |V |).
Beweis. Die erste Aussage des Theorems ist klar. Liegen s und t in verschiedenen Zusammenhangskomponenten des Graphen, so kann der Random Walk den Knoten t niemals erreichen,
wenn er von s startet. Ansonsten besagt Theorem 4.22, dass
hs,t ≤ C(G) < 4|V ||E| ≤ 2|V |3
gilt. Die Wahrscheinlichkeit, dass die tatsächliche Anzahl an Schritten, um von s nach t zu
kommen, doppelt so groß ist, wie ihr Erwartungswert, beträgt wegen der Markow-Ungleichung höchstens 1/2.
Der Speicherplatzbedarf des Algorithmus beträgt O(log |V |), da der Algorithmus zu jedem
Zeitpunkt nur den aktuellen Knoten speichern muss, an dem sich der Random Walk befindet.
Hat jeder Knoten eine eindeutige Nummer, so genügen O(log |V |) Bits, um diese zu speichern.
4.3.2
Elektrische Schaltungen
Wir werden nun ein Hilfsmittel kennenlernen, mit dem man die Cover-Time von Graphen
genauer analysieren kann. Bislang kennen wir nur eine obere Schranke, die für alle Graphen gültig ist. Wie aber das Beispiel der Clique zeigt, ist diese Schranke im Allgemeinen
nicht optimal. Zunächst betrachten wir elektrische Schaltungen und erinnern uns an einige
Eigenschaften über Stromstärken, Widerstände und Spannungen aus dem Physikunterricht.
Wir betrachten elektrische Schaltungen, die ausschließlich aus Widerständen bestehen. Eine
solche Schaltung können wir als ungerichteten Graphen darstellen, an dem jede Kante mit
einem gewissen Widerstand beschriftet ist. Die folgende Abbildung stellt eine Schaltung mit
drei Knoten dar. Die direkte Verbindung zwischen den Knoten a und b hat beispielsweise
einen Widerstand von einem Ohm.
1
b
a
2
1
c
Wir interessieren uns im Folgenden dafür, was passiert, wenn in einige Knoten der Schaltung
Strom hineinfließt, der an anderen Knoten wieder herausfließt. Dabei sind zwei physikalische
Gesetze zu beachten.
• Das kirchhoffsche Gesetz besagt, dass in jeden Knoten genauso viel Strom hineinfließt
wie aus dem Knoten Strom herausfließt.
• Das ohmsche Gesetz besagt, dass die Spannung zwischen den Enden eines Widerstandes
genau dem Produkt aus der durch den Widerstand fließenden Stromstärke und dem
Widerstand entspricht.
4.3. Random Walks auf Graphen
91
Mit Hilfe dieser beiden Gesetze kann man die Spannungen und Stromstärken in einer beliebigen Schaltung bestimmen. Fließt in obiger Schaltung beispielsweise 1 Ampere Strom von
außen in den Knoten b, der am Knoten c wieder aus der Schaltung herausfließt, so ergibt
sich, dass die Spannung zwischen den Knoten b und c 1 Volt beträgt und dass auf jeder
Kante der Schaltung ein halbes Ampere fließt.
Wir definieren den Gesamtwiderstand Ru,v zwischen zwei Knoten u und v der Schaltung als
die Spannung, die zwischen u und v anliegt, wenn von außen 1 Ampere Strom in u hineinfließt,
der am Knoten v wieder aus der Schaltung herausfließt. Ferner definieren wir R(G) für einen
Graphen G als den größten Gesamtwiderstand, der zwischen zwei Knoten der Schaltung
besteht, also
R(G) = max Ru,v .
u,v∈V
Der Leser erinnert sich aus dem Physikunterricht sicherlich noch daran, dass eine Reihenschaltung von Widerständen der Größen R1 , R2 , . . . , Rn einen Gesamtwiderstand R von R1 +
. . . + Rn erzeugt, während bei einer Parallelschaltung 1/R = 1/R1 + . . . + 1/Rn gilt. Beide
Aussagen lassen sich auch aus dem ohmschen und kirchhoffschen Gesetz ableiten.
Kommen wir nun zu dem Zusammenhang zu Random Walks. Dazu fassen wir den gegebenen
Graphen G = (V, E), auf dem der Random Walk erfolgt, als elektrische Schaltung auf, in der
jede Kante einem Widerstand mit einem Ohm entspricht. Wie vorhin gehen wir davon aus,
dass der Graph G zusammenhängend und nicht bipartit ist. Für Knoten u, v ∈ V des Graphen
setzen wir die Hitting-Time hu,v in Beziehung zu Eigenschaften der elektrischen Schaltung.
Dazu betrachten wir das folgende Szenario A für einen ausgezeichneten Knoten v ∈ V :
• In jeden Knoten x ∈ V fließen d(x) Ampere, wobei d(x) den Grad von x bezeichne.
• In Knoten v fließen 2|E| Ampere nach außen ab.
Für zwei Knoten x, y ∈ V bezeichnen wir mit φA
x,y die Spannung, die zwischen x und y in
diesem Szenario anliegt.
Lemma 4.24. Für alle Knoten u ∈ V \ {v} gilt
hu,v = φA
u,v ≤ 2mR(G).
Beweis. Wir bezeichnen mit Ix,y die Stromstärke auf der Kante (x, y). Dann gilt für jeden
Knoten u ∈ V \ {v}
d(u) =
X
Iu,x
x∈N (u)
=
X
φA
u,x
x∈N (u)
=
X A
φA
u,v − φx,v .
x∈N (u)
Dabei folgt die erste Gleichung aus dem kirchhoffschen Gesetz und die zweite folgt aus dem
ohmschen Gesetz. Die dritte Gleichung folgt, wenn man die Spannung zwischen zwei Knoten
explizit als die Potentialdifferenz zwischen diesen beiden Knoten ausdrückt. Dann kürzt sich
das Potential von v in der dritten Zeile. Diese Gleichung ist äquivalent zu
φA
u,v = 1 +
φA
x,v
.
d(u)
x∈N (u)
X
92
4. Markow-Ketten und Random Walks
Setzt man zusätzlich φA
v,v = 0, so erhält man ein lineares Gleichungssystem dessen eindeutige
Lösung die Spannungen φA
u,v für u ∈ V sind. Den Nachweis, dass das Gleichungssystem eine
eindeutige Lösung besitzt, überlassen wir dem Leser.
Betrachten wir nun die Hitting-Times hu,v . Auch diese lassen sich durch ein Gleichungssystem
beschreiben. Für jeden Knoten u ∈ V \ {v} gilt wegen der Linearität des Erwartungswertes
hu,v = 1 +
hx,v
.
d(u)
x∈N (u)
X
Hierbei haben wir über allen Möglichkeiten für den ersten Zustandsübergang summiert.
Entgegen der ursprünglichen Definition der Hitting-Time, ist diese Formel aber nur korrekt,
wenn man hv,v = 0 definiert. Mit dieser Definition erhalten wir für die Variablen hu,v exakt
das gleiche Gleichungssystem wie für die Variablen φA
u,v . Da die Lösung eindeutig ist, folgt
A
hiermit direkt, dass hu,v = φu,v für alle u ∈ V gilt. Damit ist das Theorem bewiesen, denn
die Ungleichung φA
u,v ≤ 2mR(G) folgt direkt aus dem ohmschen Gesetz.
Nun betrachten wir die Commute-Time Cu,v = hu,v + hv,u genauer. Dazu interessiert uns
das folgende Szenario B für einen ausgezeichneten Knoten u ∈ V :
• In jeden Knoten x ∈ V fließen d(x) Ampere, wobei d(x) den Grad von x bezeichne.
• In Knoten u fließen 2|E| Ampere nach außen ab.
Szenario B ist also identisch mit Szenario A, nur dass der Strom an einem anderen Knoten
nach außen fließt. Für zwei Knoten x, y ∈ V bezeichnen wir mit φB
x,y die Spannung, die
zwischen x und y in diesem Szenario anliegt.
Szenario C entspricht Szenario B mit invertierter Stromrichtung, d. h. aus jedem Knoten x ∈
V fließen d(x) Ampere und in Knoten u fließen von außen 2|E| Ampere. Szenario D ist die
Überlagerung von den Szenarien A und C. In Szenario D löschen sich an allen Knoten x ∈
V \ {u, v} die Ströme aus. Lediglich in den Knoten u fließen 2|E| Ampere, die von Knoten v
nach außen fließen. Die Spannungen zwischen zwei Knoten x, y ∈ V in den Szenarien C
und D bezeichnen wir entsprechend mit φC (x, y) und φD (x, y). Die folgenden Abbildungen
illustrieren die einzelnen Szenarien.
d(x)
d(x)
x
d(u)
d(v)
u
v
x
d(u)
2|E|
2|E|
d(v)
u
v
y
y
d(y)
d(y)
Szenario A
Szenario B
d(x)
x
d(u)
2|E|
d(v)
u
x
v
2|E|
u
v
y
d(y)
Szenario C
y
Szenario D
2|E|
4.3. Random Walks auf Graphen
93
Lemma 4.25. Für alle Knoten u, v ∈ V gilt
Cu,v = hu,v + hv,u = 2|E|Ru,v
B
Beweis. Gemäß Lemma 4.24 gilt hu,v = φA
u,v . Außerdem besagt das Lemma, dass hv,u = φv,u
B
gilt. Dementsprechend gilt φC
v,u = −φv,u = −hv,u , da sich beim Umkehren der Stromrichtung
lediglich die Vorzeichen der Spannungen ändern. Da sich bei einer Addition von Stromstärken
gemäß dem Superpositionsprinzip auch die Spannungen addieren, gilt, wie gewünscht,
A
C
A
C
A
B
φD
u,v = φu,v + φu,v = φu,v − φv,u = φu,v + φv,u = hu,v + hv,u .
Da in Szenario D ein Strom von 2|E| Ampere von u nach v fließt, folgt außerdem mit dem
ohmschen Gesetz
φD
u,v = 2|E|Ru,v ,
womit insgesamt das Lemma bewiesen ist.
Mit Hilfe des vorangegangenen Lemmas können wir die Analyse des Lollipop-Graphen formalisieren. Es sei wieder u der Knoten in der Clique, der mit dem Pfad verbunden ist,
und v der Endknoten des Pfades. Dann gilt, wie man leicht sehen kann, Ru,v = n/2. Demzufolge besagt Lemma 4.25, dass die Commute-Time Cu,v zwischen den Knoten u und v
genau n|E| = Θ(n3 ) beträgt. Da wir aus der Analyse des Algorithmus Rand-2-SAT wissen,
dass hv,u = Θ(n2 ) gilt, impliziert dies hu,v = Θ(n3 ).
Wir erhalten nun das folgende allgemeine Ergebnis über die Cover-Time eines Graphen G.
Theorem 4.26. Es sei G = (V, E) ein beliebiger zusammenhängender, nicht bipartiter
Graph. Dann gilt für die Cover-Time
mR(G) ≤ C(G) ≤ 2e3 mR(G) ln(n) + 2n.
Beweis. Die untere Schranke folgt aus Lemma 4.25, da für zwei Knoten u, v ∈ V mit R(G) =
Ru,v gilt
1
C(G) ≥ max{hu,v , hv,u } ≥ (hu,v + hv,u ) = mRu,v = mR(G).
2
Für die obere Schranke zeigen wir zunächst, dass die Wahrscheinlichkeit nach 2e3 mR(G) ln(n)
Schritten noch nicht alle Knoten besucht zu haben, höchsten 1/n2 beträgt. Dazu teilen
wir den Random Walk in ln(n) viele Epochen der Länge jeweils 2e3 mR(G) ein. Für jeden
Knoten v ∈ V gilt hu,v ≤ 2mR(G) gemäß Lemma 4.25 für alle Knoten u ∈ V \ {v}. Unabhängig vom Startknoten u einer Epoche besagt die Markow-Ungleichung also, dass die
Wahrscheinlichkeit, Knoten v in der Epoche nicht zu besuchen, höchstens 1/e3 beträgt. Die
Wahrscheinlichkeit, dass ein Knoten v in keiner der ln(n) Phasen besucht wird, beträgt somit
höchstens (1/e3 )ln(n) = 1/n3 . Eine Union-Bound über alle n Knoten liefert nun, dass höchstens mit einer Wahrscheinlichkeit von 1/n2 ein Knoten existiert, der in keiner der Epochen
besucht wird. Dieses Ereignis bezeichnen wir mit F.
Tritt das Ereignis F ein, so lassen wir den Random Walk nach Abschluss der ln(n) Epochen
solange weiter laufen, bis er alle Knoten besucht hat. Im Erwartungswert dauert dies, unabhängig von dem Knoten, an dem der Random Walk nach den ln(n) Epochen startet, gemäß
Theorem 4.22 weniger als 4|V ||E| ≤ 2n3 viele Schritte. Es gilt insgesamt
C(G) ≤ 2e3 mR(G) ln(n) + Pr(F) · 2n3 ≤ 2e3 mR(G) ln(n) + 2n.
94
4. Markow-Ketten und Random Walks
Im Allgemeinen lässt sich Theorem 4.26 asymptotisch nicht verbessern, da man sowohl Graphen angeben kann, für die die untere Schranke asymptotisch scharf ist, als auch Beispiele,
für die die obere Schranke asymptotisch scharf ist. Für die obere Schranke genügt es, sich
eine Clique G mit n Knoten anzuschauen. Für diesen Graphen gilt m = Θ(n2 ) und man
rechnet leicht nach, dass R(G) = Θ(1/n) gilt. Demzufolge ergibt Theorem 4.26 eine obere
Schranke von Θ(n ln(n)). Wir haben uns bereits weiter oben überlegt, dass diese Schranke
in der richtigen Größenordnung liegt.
Für die untere Schranke betrachten wir einen Pfad Pn mit n Knoten. Es gilt dann m = n − 1
und R(G) = n − 1. Demzufolge liefert Theorem 4.26 eine untere Schranke von Θ(n2 ). Auch
diese Schranke liegt laut unseren Vorüberlegungen in der richtigen Größenordnung.
Weiterhin überlegt man sich leicht, dass keines der Theoreme 4.22 und 4.26 das andere dominiert. Während Theorem 4.26 für den Lollipop-Graphen Ln wegen m = Θ(n2 )
und R(G) = Θ(n) eine obere Schranke von Θ(n3 ln(n)) liefert, liefert Theorem 4.22 eine
bessere und asymptotisch korrekte Schranke von Θ(n3 ). Auf der anderen Seite liefert Theorem 4.22 für eine Clique mit n Knoten ebenfalls nur eine Schranke von Θ(n3 ), wohingegen
Theorem 4.26 eine bessere und asymptotisch korrekte Schranke von Θ(n ln(n)) liefert.
Literaturverzeichnis
[1] Timon Hertli. 3-SAT faster and simpler - unique-SAT bounds for PPSZ hold in general.
CoRR, abs/1103.2165, 2011.
[2] Ulrich Krengel. Einführung in die Wahrscheinlichkeitstheorie und Statistik.
eg+Teubner Verlag, 2005.
View-
[3] Uwe Schöning. A probabilistic algorithm for k-SAT based on limited local search and
restart. Algorithmica, 32(4):615–623, 2002.
[4] Robin A. Moser und Dominik Scheder. A full derandomization of schoening’s k-SAT
algorithm. CoRR, abs/1008.4067, 2010.
[5] Michael Mitzenmacher und Eli Upfal. Probability and Computing. Cambridge University
Press, 2005.
[6] Rajeev Motwani und Prabhakar Raghavan. Randomized Algorithms. Cambridge University Press, 1995.
[7] Berthold Vöcking.
Berechenbarkeit und Komplexität, Wintersemester 2011/12.
http://algo.rwth-aachen.de/Lehre/WS1112/VBuK/BuK.pdf.
95
Herunterladen