Theoretische Informatik Probabilistische Algorithmen

Werbung
Theoretische Informatik
Probabilistische Algorithmen
Rainer Schrader
Institut für Informatik
26. Mai 2009
2 / 77
1 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• in vielen Algorithmen kommen Schritte vor, in denen “gewürfelt” wird:
• universelles Hashing
Gliederung
• zufällige Wahl des Pivotelements in Quicksort
• Kollisionsauflösung in Betriebssystemen
• Einführung
• Polynomtest und perfekte Matchings
• Simulated annealing
• Random walks für 2-SAT
• zufälliges Runden für Max2-SAT
• Monte Carlo
• Primzahltest
• Primzahltests
• Random walk
• wir wollen im Folgenden einige Beispiele von probabilistischen
Verfahren betrachten
3 / 77
4 / 77
probabilistische Algorithmen
probabilistische Algorithmen
eine Veranschaulichung probabilistischer Algorithmen
• wir betrachten Algorithmen, die
• in Abhängigkeit vom Ergebnis entscheiden, wie sie weiter arbeiten
• die Ergebnisse “akzeptieren”, “verwerfen”, “weiß nicht” liefern
• gegeben ein konkretes Entscheidungsproblem P
• seien A1 , . . . , Am deterministische Algorithmen für P
• zu einer Eingabe x wähle ein i ∈ {1, . . . , m} zufällig
• nicht notwendigerweise korrekte Antworten geben müssen
• rufe Algorithmus Ai mit Eingabe x auf
• an einigen Stellen würfeln
• das Ergebnis bei Eingabe x ist eine Zufallsvariable f (x ) mit Werten
typische Fragestellungen
8
< 1 akzeptieren
0 verwerfen
f (x ) =
:
? weiß nicht
• was ist die erwartete Güte der Antwort für ein x ?
• was ist die erwartete Laufzeit für ein x ?
• was ist die maximale erwartete Laufzeit für ein x der Länge n?
5 / 77
probabilistische Algorithmen
6 / 77
probabilistische Algorithmen
• wir unterscheiden verschiedene Typen von probabilistischen
Beispiel: randomisierter Quicksort
Algorithmen A
• wähle das Pivotelement zufällig
• teile das Problem in zwei Teilprobleme auf
(i) MC (Monte Carlo):
• Verfahren, die mit Wahrscheinlichkeit größer als
Lösung liefern
• verfahre rekursiv
1
2
die richtige
• sie sind damit (etwas) besser als einfaches Raten
• das Verfahren liefert immer eine korrekte Sortierung
(ii) BMC (MC mit beschränktem Fehler)
• die worst-case-Laufzeit ist O(n 2 )
• es existiert ein ε > 0, so dass
• die erwartete Laufzeit ist O(n log n) (ohne Beweis)
• das Verfahren die richtige Lösung mit Wahrscheinlichkeit größer
als 12 + ε liefert
7 / 77
8 / 77
probabilistische Algorithmen
probabilistische Algorithmen
(iii) EMC (einseitig MC)
• Verfahren, die mit Wahrscheinlichkeit größer als
Eingaben akzeptieren,
1
2
• Veranschaulichung:
richtige
• MC geben mit größerer Wahrscheinlichkeit die richtige Antwort als die
falsche
• und falsche sicher verwerfen
• BMC analog mit noch größerer Wahrscheinlichkeit
(iv) LV (Las Vegas)
• EMC zusätzlich werden Eingaben x ∈
/ L sicher erkannt
• LV wird nie falsche Antworten geben, nur sagen “weiß nicht”
• Verfahren, die nie falsche Antworten geben,
• mit Wahrscheinlichkeit größer als
1
2
richtig antworten
• und ansonsten nur sagen “weiß nicht”
9 / 77
10 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• sei p(x1 , . . . , xn ) ein Polynom in n Variablen
• der Grad von p ist der größte Exponent einer der Variablen
Gliederung
• Einführung
• Polynomtest und perfekte Matchings
Beispiel:
p(x1 , x2 ) = x13 x22 + x1 x22 + x12 − 7
• Random walks für 2-SAT
• zufälliges Runden für Max2-SAT
Polynomtest
• Primzahltests
• gegeben ein Polynom p in n Variablen vom Grad d
• ist p ≡ 0 ?
11 / 77
12 / 77
probabilistische Algorithmen
probabilistische Algorithmen
Lemma
Sei p ein Polynom in n Variablen von Grad d . Ist p 6≡ 0, so hat p für alle
M ∈ N im Intervall [0, M − 1]n höchstens ndM n−1 ganzzahlige Nullstellen.
• liegt p in standardisierter Form vor, so müssen wir lediglich die
Koeffizienten auf Null testen
Beweis: Induktion über n.
• liegt p nicht so vor (etwa als Funktionsorakel), so ist nicht klar, wie wir
• jedes Polynom von Grad d in n = 1 Variablen hat höchstens
• das Beispiel p(x , y ) = (x + y )n zeigt, dass eine Umwandlung in
• wir nehmen an, dass die Aussage für alle Polynome in höchstens
• wir werden im Folgenden einen probabilistischen Algorithmus
• sei p ein Polynom in n Variablen von Grad d
d Nullstellen
dieses Problem lösen sollen
n − 1 Variablen gilt
Standardform die Darstellung exponentiell aufblähen würde
beschreiben
• wir können p als ein Polynom in x1 auffassen, dessen Koeffizienten
wiederum Polynome in x2 , . . . , xn sind:
p = pd (x2 , . . . , xn )x1d + pd −1 (x2 , . . . , xn )x1d −1 + . . . + p0 (x2 , . . . , xn )
13 / 77
probabilistische Algorithmen
14 / 77
probabilistische Algorithmen
p = pd (x2 , . . . , xn )x1d + pd −1 (x2 , . . . , xn )x1d −1 + . . . + p0 (x2 , . . . , xn )
(a) pi (a2 , . . . , an ) = 0 für alle 0 ≤ i ≤ d
• sei p 0 (x2 , . . . , xn ) eines der Koeffizientenpolynome mit höchstem Grad
• für jedes a = (a1 , . . . , an ) ∈ [0, M − 1]n ∩ Zn mit p(a) = 0 gilt:
• nach Voraussetzung ist der Grad von p 0 höchstens d
(a) pi (a2 , . . . , an ) = 0 für alle 0 ≤ i ≤ d oder
• per Induktion hat dann p 0 höchstens (n − 1)dM n−2 Nullstellen in
[0, M − 1]n−1 ∩ Zn−1
(b) pj (a2 , . . . , an ) 6= 0 für ein 0 ≤ j ≤ d und a1 ist Nullstelle des
Polynoms
• x1 darf jeden Wert [0, M − 1] ∩ Z annehmen
• daher ist die Anzahl der Nullstellen im Fall (a) höchstens
p(x1 ) = pd (a2 , . . . , an )x1d +pd −1 (a2 , . . . , an )x1d −1 +. . .+p0 (a2 , . . . , an )
M (n − 1)dM n−2 = (n − 1)dM n−1 .
• wir schätzen die Anzahl der Nullstellen in beiden Fällen ab
15 / 77
16 / 77
probabilistische Algorithmen
probabilistische Algorithmen
(b) pj (a2 , . . . , an ) 6= 0 für ein 0 ≤ j ≤ d und a1 ist Nullstelle des Polynoms
Satz
p(x1 ) = pd (a2 , . . . , an )x1d + pd −1 (a2 , . . . , an )x1d −1 + . . . + p0 (a2 , . . . , an )
Sei p ein Polynom vom Grad d in n Variablen. Dann gibt es einen
EMC-Algorithmus, der p ≡ 0 testet.
Beweis:
• p(x1 ) ist ein Polynom vom Grad höchstens d in einer Variablen
• wähle einen beliebigen Vektor (a1 , . . . , an ) mit ai ∈ [0, 2nd ] ∩ Z
• ist p(a1 , . . . , an ) 6= 0, so ist p 6≡ 0,
• andernfalls entscheide p ≡ 0
• per Induktion hat p(x1 ) höchstens d Nullstellen in [0, M − 1] ∩ Z
• daher ist die Anzahl der Nullstellen im Fall (b) höchstens
dM n−1 .
• nach vorigem Lemma ist die Wahrscheinlichkeit, dass die zweite
Antwort falsch ist:
• somit ist die Anzahl der Nullstellen von p höchstens
M (n − 1)dM
n−2
+ dM
n−1
= ndM
n−1
ndM n−1
nd
1
<
=
Mn
2nd + 1
2
.
18 / 77
17 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• wann liegt ein Polynom nicht in Standardform vor?
• als Beispiel betrachten wir Graphen G = (V , E ) und fragen, ob G ein
Satz
perfektes Matching hat
• sei G = (V , E ) ein Graph mit Knotenmenge V = {1, . . . , n}.
• sei A = (aij ) die Matrix aus n 2 Elementen mit
• ein Matching ist eine Teilmenge M ⊆ E der Kanten, so dass keine
zwei Kanten in M einen gemeinsamen Endpunkt haben
e
aij =
c
a
b
d
8
>
<
>
:
xij
für (i , j ) ∈ E , i < j
−xji
für (i , j ) ∈ E , i > j
0
sonst.
• Dann hat G ein perfektes Matching genau dann, wenn det A 6≡ 0.
f
• ein Matching heißt perfekt, falls jedes v ∈ V Endknoten einer Kante
Bemerkung:
aus M ist
Die Determinante ist ein Polynom in den Variablen xij .
• offensichtlich besitzt nicht jeder Graph ein perfektes Matching
19 / 77
20 / 77
probabilistische Algorithmen
probabilistische Algorithmen
Beispiel:
Beispiel:
Sei G der folgende Graph:
1
Sei G der folgende Graph:
2
1
4
0
0
B −x12
A=B
@ −x13
0
x12
0
−x23
0
2
3
x13
x23
0
−x34
3
1
0
0 C
C
x34 A
0
0
0
A = @ −x12
−x13
x12
0
−x23
1
x13
x23 A
0
det A = −x12 ((−x12 ) · 0) − ((−x13 ) · x23 ) + x13 · (−x12 ) · x23 ≡ 0.
2
2
det A = −x12 det A12 + x13 det A13 = x12
x34
Dieses Polynom entspricht dem perfekten Matching {(1, 2), (3, 4)} in G.
21 / 77
22 / 77
probabilistische Algorithmen
probabilistische Algorithmen
Beweis:
• es gilt
• per Definition ist
det A =
X
σπ
π
n
Y
ai π(i ) ,
• jeder solchen Permutation entspricht ein Teilgraph Gπ , für den gilt:
• er besteht aus einer disjunkten Vereinigung von “Kreisen”,
• hierbei ist σπ ∈ {−1, 1} in Abhängigkeit davon, ob π Produkt von
ungeraden bzw. geraden vielen Transpositionen (Austausch von 2
Elementen)
• es reicht, sich auf Permutationen mit
• es gilt
i =1
ai π(i ) 6= 0 ⇐⇒ (i , π(i )) ∈ E für alle 1 ≤ i ≤ n
i =1
i =1
Qn
n
Y
• die V überdecken
• hierbei sind “Kreise” gewöhnliche Kreise und entartete Kreise der
Form (i , j ), (j , i ) mit π(i ) = j
ai π(i ) 6= 0 zu beschränken
• π heiße
n
Y

ai π(i ) 6= 0 ⇐⇒ (i , π(i )) ∈ E für alle 1 ≤ i ≤ n
i =1
23 / 77
ungerade,
gerade,
wenn Gπ einen ungeraden Kreis enthält;
sonst.
24 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• sei π eine ungerade Permutation mit ungeradem Kreis C
π : (1, 2, 3, . . . , k − 2, k − 1, k )
• nach Umbenennen können wir annehmen, dass C = 1, 2, . . . , k , 1
0
π : (1, 2, 3, . . . , k − 2, k − 1, k )
7→
(2, 3, . . . , k − 2, k − 1, k , 1)
7→
(k , 1, 2, 3, . . . , k − 2, k − 1)
3
2
Die Umkehrung können wir durch 2(k − 2) Transpositionen erreichen:
1
k
• d.h. 1 7→ π(1) = 2 7→
...
(2, 3, . . . , k − 2, k − 1, k , 1)
k ↔k −1
(2, 3, . . . , k − 2, k , k − 1, 1)
k ↔k −2
..
.
k−1
7→ π(k − 1) = k 7→ π(k ) = 1
• sei π die Permutation, in der C umgekehrt orientiert ist
(k , 2, 3, . . . , k − 2, k − 1, 1)
k ↔2
(k , 2, 3, . . . , k − 2, 1, k − 1)
1↔k −1
0
• d.h. 1 7→ π(1) = k 7→
...
..
.
7→ π(3) = 2 7→ π(2) = 1
..
.
(k , 1, 2, 3, . . . , k − 2, k − 1)
..
.
1↔2
25 / 77
26 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• sei π eine gerade Permutation
• somit σπ = σπ0
• sei π 0 die gerade Permutation, in der alle Kreise umorientiert sind
• jedes ai π(i ) entspricht einem Eintrag xi π(i ) oder −xi π(i )
• ist π = π 0 , so gilt:
• alle Kreise haben Länge 2 (π(i ) = j , π(j ) = i )
• da sich entlang C die Vorzeichen umkehren, folgt weiter
n
Y
i =1
ai π(i ) = −
n
Y
• π entspricht einem perfekten Matching
ai π0 (i )
M = {(i , π(i )) ∈ E : 1 ≤ i ≤ n}
i =1
• d.h. ungerade Permutationen heben sich gegenseitig auf
• bezeichne XM =
• wir brauchen also nur noch gerade Permutationen π zu betrachten
• dann ist
Q
e∈M
xe
n
Y
ai π(i ) = (XM )2
i =1
27 / 77
28 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• ist π 6= π 0 , so gilt:
• allgemein gilt für die Determinante von A
• wähle aus jedem Kreis jede zweite Kante
det A = (XM1 + XM2 + . . . + XMk )2
• diese Kantenmenge bildet ein perfektes Matching M
• die anderen Kanten bilden ebenfalls ein perfektes Matching M 0
• π und π 0 entsprechen der Vereinigung von M 0 und M 0
• dann ist
n
Y
i =1
ai π(i ) +
n
Y
• hierbei sind XM1 , . . . , XMk die perfekten Matchings von G
• somit det A ≡ 0 ⇐⇒ G hat kein perfektes Matching.
ai π0 (i ) = 2XM XM 0
i =1
30 / 77
29 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• das Polynom hat |E | Variablen xij und Grad höchstens 2
ˆ
Gliederung
˜
• nach dem letzten Lemma reicht es daher, ein a ∈ 0, 4|E | ∩ Z zufällig
• Polynomtest und perfekte Matchings
• Random walks für 2-SAT
zu ziehen
• die entstehende Determinante kann in O(n 3 ) durch LU-Zerlegung
• zufälliges Runden für Max2-SAT
• Primzahltests
berechnet werden
• dies liefert einen EMC-Algorithmus zum Testen der Existenz eines
perfekten Matchings.
31 / 77
32 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• das Verfahren generiert eine Folge von maximal r
V
Wahrheitsbelegungen
• sei f = Ci eine KNF
• betrachte folgende Vorgehen für das SAT-Problem:
• jede Belegung unterscheidet sich von der vorigen in einer Variable
• damit wird ein zufälliger Weg im Raum der Belegungen durchlaufen
(random walk)
wähle eine Wahrheitsbelegung T
repeat r times
sind alle Klauseln erfüllt, stop: “erfüllbar”.
andernfalls wähle eine nicht-erfüllte Klausel Ci
(in der alle Literale falsch sind)
wähle ein Literal in Ci und invertiere die Variable (flip)
end repeat
• für das 3-SAT-Problem kann man zeigen, dass der Algorithmus ein sehr
schlechtes Verhalten zeigt
• jedoch gilt:
nach r erfolglosen Versuchen: “nicht erfüllbar”
Satz
Der random-walk-Algorithmus mit r = 2n 2 Schritten ist ein EMC-Verfahren
für erfüllbare 2-SAT-Formeln in KNF.
34 / 77
33 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• anstelle der Ungleichung betrachten wir
Beweis:
• sei T eine Startbelegung und T ∗ eine erfüllende Belegung
x (0) = 0
• sei t (i ) die erwartete Anzahl von flips, wenn sich T und T ∗ in genau
1
[x (i − 1) + x (i + 1)] + 1
2
x (n) = x (n − 1) + 1
i Werten unterscheiden
x (i ) =
• offensichtlich ist t (0) = 0
• wenn wir flippen, wählen wir eines von zwei nicht-erfüllten Literalen
• es ist stets x (i ) ≥ t (i ), und es gilt
• in T ∗ ist mindestens eines dieser Literale wahr
• d.h. wir rücken mit Wahrscheinlichkeit mindestens
• somit
1
2
n−1
X
näher an T ∗ heran
x (i ) =
i =1
˜
1ˆ
t (i ) ≤
t (i − 1) + t (i + 1) + 1 für 0 < i < n
2
i =0
=
(“+1” für den ausgeführten Flip)
• und da wir im Fall i = n den Wert von i nur verringern können:
=
t (n) ≤ t (n − 1) + 1.
• somit:
35 / 77
1
x (1)
2
n−2
n
1X
1X
x (i ) +
x (i ) + (n − 1)
2
2
=n−
i =2
1
x (1) +
2
n−2
X
1
x (1) +
2
n−1
X
1
2
x (i ) +
i =2
1
1
x (n − 1) + x (n) + (n − 1)
2
2
x (i ) + n −
i =2
oder äquivalent
1
2
x (1) = 2n − 1
36 / 77
probabilistische Algorithmen
probabilistische Algorithmen
Lemma
Sei x eine Zufallsvariable mit Werten in N und E (x ) der Erwartungswert
von x . Dann gilt für jedes k > 0
• x (1) = 2n − 1
• mittels Induktion folgt: x (i ) = 2in − i 2 , denn
Pr (x > k · E (x )) <
x (i + i ) = 2x (i ) − x (i − 1) − 2
= 4in − 2i 2 − 2(i − 1)n + (i − 1)2 − 2
Beweis:
2
• sei pi die Wahrscheinlichkeit, dass x = i .
P
• ist i >kE (x ) pi = 0, so folgt die Behauptung unmittelbar
• andernfalls gilt:
= 2in + 2n − i − 2i − 1
= 2(i + 1)n − (i + 1)
1
.
k
2
• somit t (i ) ≤ x (i ) ≤ x (n) = n 2
E (x ) =
• d.h. von welcher Belegung wir auch starten, die erwartete Anzahl von
X
ipi
i
Schritten beträgt höchstens n 2
=
• der Rest der Aussage folgt aus dem folgenden Lemma mit k = 2.
X
i ≤kE (x )
ipi +
X
ipi
i >kE (x )
> k · E (x ) · Pr (x > k · E (x ))
38 / 77
37 / 77
probabilistische Algorithmen
probabilistische Algorithmen
wir betrachten die folgende Optimierungsvariante von 2-SAT:
Max2-SAT
Gliederung
• Polynomtest und perfekte Matchings
• Random walks für 2-SAT
• sei f = K1 ∧ K2 ∧ . . . ∧ Kj eine 2-SAT-Formel in KNF
• zufälliges Runden für Max2-SAT
• Primzahltests
• dass die Anzahl der erfüllten Klauseln maximal ist
• bestimme eine Belegung der Variablen so,
• Max2-SAT ist NP-vollständig (Reduktion von 3-SAT)
• wir beschreiben im folgenden einen probabilistischen Algorithmus
39 / 77
40 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• sei K1 = x1 ∨ x2 eine Klausel
• etwas allgemeiner:
• K1 ist genau dann erfüllbar, wenn die folgende Ungleichung lösbar ist:
• sei f = (x1 ∨ x2 ) ∧ (x 2 ∨ x 3 ) ∧ (x 1 ∨ x3 ) eine 2-KNF
• f ist genau dann erfüllbar, wenn das folgende Ungleichungssystem
x1 + x2 ≥ 1 mit x1 , x2 ∈ {0, 1}
lösbar ist:
• entsprechend: ist K2 = x3 ∨ x 4 eine Klausel
• K2 ist genau dann erfüllbar, wenn die folgende Ungleichung lösbar ist:
x3 + (1 − x4 ) ≥ 1 mit x3 , x4 ∈ {0, 1}
x1 + x2
≥
1
(1 − x2 ) + (1 − x3 )
≥
1
(1 − x1 ) + x3
≥
1
x1 , x2 , x3
∈
{0, 1}
41 / 77
probabilistische Algorithmen
42 / 77
probabilistische Algorithmen
• allgemein seien x1 , x2 , . . . xn Boolesche Variable
• die Optimierungsvariante kann wie folgt formuliert werden:
• sei f = K1 ∧ K2 ∧ . . . ∧ Km eine 2-KNF über den Variablen
• sei f = (x1 ∨ x2 ) ∧ (x 2 ∨ x 3 ) ∧ (x 1 ∨ x3 ) eine 2-KNF
• Ki entspricht eine Ungleichung ai x + ci =
• eine maximale Anzahl von erfüllbaren Klauseln in f ist gegeben durch:
• das Max2-SAT-Problem für f ist äquivalent zu:
max
max y1 + y2 + y3
x1 + x2
≥
y1
(1 − x2 ) + (1 − x3 )
≥
y2
(1 − x1 ) + x3
≥
y3
x1 , x2 , x3 , y1 , y2 , y3
∈
{0, 1}
m
X
Pm
j =1
aij xj + ci ≥ yi
yj
j =1
(IPf )
a1 x + c1 ≥ y1
..
.
am x + cm ≥ ym
43 / 77
xi ∈ {0, 1},
i = 1, . . . , n
yj ∈ {0, 1},
j = 1, . . . , m
44 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• dieses ganzzahlige Optimierungsproblem (IPf ) ist äquivalent zu
• (LPf ) lässt sich effizient lösen
Max2-Sat
• daher ist es auch nicht einfacher zu lösen als Max2-Sat
• sei x1∗ , . . . , xn∗ , y1∗ , . . . , ym∗ eine Optimallösung
• wir vernachlässigen die Ganzzahligkeit
• durch zufälliges Runden erzeugen wir daraus eine Lösung von
Max2-Sat:
• und erhalten ein (spezielles) lineares Programm:
max
m
X
wähle α1 , . . . , αn zufällig und gleichverteilt aus [0, 1]
yj
for i = 1 to n do
if αi ≤ xi∗ then
xi = 1
else
xi = 0
end if
end do
j =1
(LPf )
a1 x + c1 ≥ y1
..
.
am x + cm ≥ ym
0 ≤ xi ≤ 1,
i = 1, . . . , n
0 ≤ yj ≤ 1,
j = 1, . . . , m
45 / 77
probabilistische Algorithmen
Beweis:
•
•
•
•
•
Lemma
• sei x1∗ , . . . , xn∗ , y1∗ , . . . , ym∗ eine Optimallösung von (LPf )
• sei x = x1 , . . . , xn die gerundete Lösung
• die Wahrscheinlichkeit, dass x die j -te Klausel Kj erfüllt, beträgt
mindestens
46 / 77
probabilistische Algorithmen
nach Umbenennen können wir annehmen, dass Kj = x1 ∨ x2
Kj wird nicht erfüllt ⇐⇒ x1 = x2 = 0
die Wahrscheinlichkeit, dass Kj nicht erfüllt wird, ist (1 − x1∗ ) · (1 − x2∗ )
die Wahrscheinlichkeit, dass Kj erfüllt wird, ist 1 − (1 − x1∗ ) · (1 − x2∗ )
diese Wahrscheinlichkeit ist minimal für
min {1 − (1 − x1 ) · (1 − x2 ) : x1 + x2 ≥ yj∗ }
• das Minimum wird angenommen in x1 = x2 = 12 yj∗
• damit ist die Wahrscheinlichkeit, dass Kj erfüllt wird, mindestens
3 ∗
y
4 j
1 − (1 −
47 / 77
1 ∗ ˙
1
1
yj )(1 − yj∗ ) = 1 − (1 − yj∗ )2
2
2
2
`
1 ´
≥ 1 − (1 − )2 · yj∗
2
3 ∗
= yj
4
48 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• wir wollen versuchen, die Approximationsgüte abzuschätzen
• da der Algorithmus randomisiert ist, werden wir die erwartete
• da zj eine Indikatorvariable ist, ist E (zj ) die Wahrscheinlichkeit, dass
x die Klausel Kj erfüllt
Approximationsgüte untersuchen
• d.h. E (zj ) = 43 yj∗
• sei z die Zufallsvariable mit z = z1 + z2 + . . . + zm
• wegen der Linearität des Erwartungswerts gilt:
Satz
Die erwartete Approximationsgüte des zufälligen Rundens für Max2-Sat ist
3
.
4
E (z )
Beweis:
=
• für eine 2-KNF f sei x die erzeugte Lösung
• sei zj = zj (x ) eine Zufallsvariable mit

zj =
1,
0,
=
E (z1 ) + E (z2 ) + . . . + E (zm )
´
3` ∗
y1 + y2∗ + . . . + ym∗
4
• für die Optimallösung von Max2-Sat gilt: Opt ≤ y1∗ + y2∗ + . . . + ym∗
• damit folgt für die erwartete Approximationsgüte:
falls x die Klausel Kj erfüllt
andernfalls.
E (Güte) =
• da zj eine Indikatorvariable ist, ist E (zj ) die Wahrscheinlichkeit, dass
E (z )
3
≥
Opt
4
x die Klausel Kj erfüllt
50 / 77
49 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• allgemein: wir lassen KNF’s mit höchstens k Klauseln zu
• und betrachten Maxk -Sat
Gliederung
• mit dem gleichen Ansatz lässt sich zeigen:
• Polynomtest und perfekte Matchings
• Random walks für 2-SAT
• zufälliges Runden für Max2-SAT
• Primzahltests
Satz
Die erwartete Approximationsgüte des zufälligen Rundens für Maxk -Sat ist
“
1 ”
1 − (1 − )k .
k
51 / 77
52 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• das Verschüsselungsverfahren RSA beruht auf der folgenden
Beobachtung:
• Verschlüsselungsverfahren bilden mittels einer Funktion f Texte auf
ihre Chiffre ab
• die Multiplikation zweier Zahlen p und q ist einfach
• die Faktorisierung einer Zahl ist (anscheinend) schwierig
• sie beruhen oft auf der Idee von Einwegfunktionen f :
• etwas schwächer als die Faktorisierung einer Zahl ist der folgende:
• f ist effizient zu berechnen
• f −1 ist nicht effizient zu berechnen
• mit einer (geheimen) Zusatzinformation ist f −1 effizient zu
berechnen
Primzahltest
Gegeben n ∈ N, ist n prim?
• wobei „effizient“ im Sinne der Komplexitätstheorie zu verstehen ist
• ist die Antwort „ja “ , so lässt sich n nicht faktorisieren
• ist die Antwort „nein “ , so existiert eine Faktorisierung (ohne, dass sie
auch schon bekannt sein muss)
53 / 77
54 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• es war lange Zeit offen, ob der Primzahltest in P liegt
• wird der Input akzeptiert, so ist n nicht prim,
• es ist leicht zu sehen, dass das Problem in coNP liegt:
• rate eine Zerlegung von n als Produkt zweier Zahlen, prüfe nach
• wird er jedoch verworfen, so ist n nicht notwendigerweise prim
• ist etwa n das Produkt zweier Primzahlen, so wird der Algorithmus mit
• dies führt zu folgendem Algorithmus:
hoher Wahrscheinlichkeit n als prim klassifizieren
• der Ansatz liefert somit keinen MC-Algorithmus
Input n > 2
ist n gerade, so akzeptiere
andernfalls wähle a ∈ {1, . . . , n − 1} zufällig
ist a Teiler von n, so akzeptiere
andernfalls verwerfe
end
• wir erweitern daher den Test, nicht prim zu sein
• dazu bedarf es einiger Voraussetzungen aus der (elementaren)
Zahlentheorie
• um triviale Fälle zu vermeiden, setzen wir im folgenden stets
n, p ≥ 3 voraus
55 / 77
56 / 77
probabilistische Algorithmen
probabilistische Algorithmen
Seien a, b ∈ N mit a ≥ b und c = a mod b. Dann ist ggT(a, b) = ggT(b, c).
Als Folgerung ergibt sich der Euklidische Algorithmus zur Berechnung des
größten gemeinsamen Teilers zweier Zahlen
Beweis:
Euklidischer Algorithmus
Lemma
• sei a = k · b + c und g ein gemeinsamer Teiler von b und c
Input a, b ∈ N mit a ≥ b
• dann ist a = k αg + βg = (k α + β)g
function ggT(a, b)
begin
if b = 0 then ggT = a
else ggT = ggT(b, a mod b)
end
• d.h. g ist auch Teiler von a
• sei umgekehrt g gemeinsamer Teiler von a und b
• dann ist αg = k βg + c
• da a ≥ b, ergibt sich c = (α − k β)g mit α − k β ≥ 0
• d.h. g teilt auch c.
Dazu zwei Beobachtungen:
57 / 77
58 / 77
probabilistische Algorithmen
probabilistische Algorithmen
Korollar
Seien a, b ∈ N mit a ≥ b. Dann ist ggT(a, b) = q ⇔ es existieren
r , s ∈ Z mit ra + sb = q.
Lemma
Beweis:
Beweis:
Der Euklidische Algorithmus hält nach spätestens log b rekursiven Aufrufen.
• seien (ak −1 , bk −1 ), (ak , bk ), (ak +1 , bk +1 ) die Parameter dreier
• sei a = αb + c
aufeinander folgender Aufrufe in ggT
• da nach dem letzten Satz ggT(b, c) = q, existieren per Induktion
• dann ist bk +1 = ak mod bk und ak = bk −1
Zahlen u, v ∈ Z mit ub + vc = q
• d.h. ak = αbk + bk +1 mit α ≥ 1 und ak = bk −1
• somit
• somit bk −1 = ak ≥ bk + bk +1
q = ub + vc
• in umgekehrter Reihenfolge wachsen die Zahlen bk +1 , bk , bk −1 also
= v αb + vc + (u − v α)b
schneller als die Fibonacci-Zahlen
= va + (u − v α)b
• somit ist nach spätestens k = log b Schritten bk = 0.
= ra + sb.
59 / 77
60 / 77
probabilistische Algorithmen
probabilistische Algorithmen
Lemma (Fermat)
Primzahlen haben keine Zeugen.
• zurück zu den Primzahlen
Beweis:
• sei p eine Primzahl
• betrachte ein a mit 1 ≤ a < p
• sei n ∈ N keine Primzahl und a mit 1 ≤ a < n
• setze mi = ia für 1 ≤ i ≤ p − 1
• angenommen mi ≡ mj mod p für i 6= j , wobei ohne Einschränkung i > j
• dann folgt
• a ist ein Zeuge dafür, dass n nicht prim ist, falls
a n−1 6≡ 1 mod n
• der Begriff wird durch folgendes Lemma gerechtfertigt:
mi = αp + r
mj = βp + r
Lemma (Fermat)
• somit mi − mj = (i − j )a = (α − β)p
• d.h. p wäre Teiler von (i − j )a
Primzahlen haben keine Zeugen.
• dann wäre p aber auch Teiler einer der beiden Faktoren, im Widerspruch zu
i − j < p und a < p
• somit mi 6≡ mj mod p
61 / 77
62 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• wir wollen zeigen, dass Fermat’s Lemma auch hinreichend ist, um
• somit mi 6≡ mj mod p
Primzahlen zu charakterisieren
• analog folgt mi 6≡ 0 mod p.
• das hieße: Zahlen, die nicht prim sind, haben einen Zeugen
• d.h. die Zahlen m1 , m2 , . . . , mp−1 sind äquivalent modulo p zu den Zahlen
• dazu ein vorbereitendes Lemma
1, . . . , p − 1
• somit
a p−1
p−1
Y
i =
i =1
p−1
Y
mi ≡
i =1
⇒ (a p−1 − 1)
p−1
Y
Lemma
i mod p
i =1
p−1
Y
Seien a, n ∈ N. Dann gilt: ggT(a, n) = 1 ⇐⇒ es existiert ein r ∈ Z mit
ra ≡ 1 mod n.
i ≡ 0 mod p
Beweis:
i =1
• da p offensichtlich nicht den Faktor
Qp−1
i =1
aus früherem Korollar folgt: ggT(a, n) = 1
i teilen kann, teilt p a p−1 − 1
⇐⇒ es existieren r , s ∈ Z mit ra + sn = 1
• mit anderen Worten ap−1 ≡ 1 mod p
⇐⇒ es existiert r ∈ Z, so dass ra ≡ 1 mod n.
• d.h. a ist kein Zeuge.
63 / 77
64 / 77
probabilistische Algorithmen
probabilistische Algorithmen
Daraus ergibt sich:
Damit ist das Lemma von Fermat auch hinreichend, um Primzahlen zu
charakterisieren:
Lemma
Ist ggT(a, n) 6= 1, so ist a Zeuge für n.
Korollar
Beweis:
n > 2 ist prim ⇐⇒ n hat keinen Zeugen.
• sei ggT(a, n) 6= 1
• ist a ist kein Zeuge, so gilt a
• dann folgt a
• für r = a
n−2
n−2
Beweis:
n−1
≡ 1 mod n
• wir wissen bereits, dass Primzahlen keine Zeugen haben
· a ≡ 1 mod n
• umgekehrt ist jeder Teiler von n ein Zeuge.
folgt somit r · a ≡ 1 mod n
• nach dem letzten Lemma ist dies äquivalent zu ggT(a, n) = 1
Genauer ist jede zu n nicht teilerfremde Zahl Zeuge.
• im Widerspruch zur Annahme.
65 / 77
probabilistische Algorithmen
66 / 77
probabilistische Algorithmen
• wir haben damit Zeugen von “Teiler” zu “nicht teilerfremd” vergrößert
• daraus ergibt sich unmittelbar eine Verallgemeinerung unseres ersten
• wir könnten daraus einen randomisierten Algorithmus machen
Ansatzes:
• dies führt jedoch immer noch nicht zu einem MC-Algorithmus
Lemma
• wir wissen lediglich zu einer Zahl n, die nicht prim ist:
Primzahl ∈ coNP.
• jede nicht teilerfremde Zahl ist Zeuge
Beweis:
• unter den Teilerfremden sind möglicherweise auch Zeugen
• rate eine Zahl 1 ≤ a < n
• wir wissen somit, dass es Zeugen gibt,
• ist a kein Zeuge (an−1 ≡ 1 mod n), so verwerfe n
• nicht aber, dass mehr als die Hälfte aller a’s Zeugen sind
• andernfalls akzeptiere n
• nach früherem Lemma akzeptiert das Verfahren genau die Zahlen, die
nicht prim sind.
67 / 77
68 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• zu n ∈ N sei
• überprüft man dies für die ersten Nicht-Primzahlen, so sind die
TF(n) = {a : 1 ≤ a < n, ggT(a, n) = 1}
(teilerfremd)
TF(n) = {1, . . . , n − 1} r TF(n)
(nicht teilerfremd)
Bedingungen stets erfüllt
• für n = 561 = 3 · 11 · 17 jedoch gilt:
|TF(n)| = 320, |TF(n)| <
• die Welt wäre in Ordnung, wenn:
• |TF(n)| >
n−1
2
oder
n−1
2
|Zeugen in TF(n)| = 0
• |TF(n)| groß, aber die Anzahl der Zeugen in TF(n) ist groß
• (n − 1, da wir nur Zahlen aus dem Interval [1, n − 1] ziehen)
• ähnliches gilt für 1105 = 5 · 13 · 17, 1729 = 7 · 13 · 19
69 / 77
70 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• sei n ∈ N nicht prim
• ist n keine Carmichael-Zahl, so kann dieser Fall nicht auftreten
• n heißt Carmichael-Zahl, falls gilt:
• es gilt (ohne Beweis):
ggT(a, n) = 1 =⇒ a n−1 ≡ 1 mod n.
Satz
Ist n nicht prim und keine Carmichael-Zahl, so ist die Anzahl der Zeugen
größer als 12 (n − 1).
• anschaulich: für eine Carmichael-Zahl gilt:
• nur die nicht teilerfremden sind Zeugen
• für Nicht-Carmichael-Zahlen gibt es somit hinreichend viele Zeugen
• unter den Teilerfremden gibt es keine Zeugen
• wir müssen also noch die Carmichael-Zahlen behandeln
71 / 77
72 / 77
probabilistische Algorithmen
probabilistische Algorithmen
• Für Carmichael-Zahlen vergrößern wir die Zeugenschaft wie folgt:
Für Carmichael-Zahlen lässt sich zeigen (ohne Beweis):
Satz
• eine Zahl 1 ≤ a < n heißt weiterer Zeuge für die Eigenschaft von
Ist n eine Carmichael-Zahl, so ist die Anzahl der weiteren Zeugen in
TF(n) größer als 34 |TF(n)|.
n nicht prim zu sein, falls
(i) a ist Zeuge oder
Als Folgerung aus den letzten beiden Resultaten ergibt sich:
(ii) es existiert ein i ∈ N, so dass gilt:
a) 2i ist Teiler von n − 1 und
Korollar
i
b) 1 < ggT(a n−1/2 − 1, n) < n
Ist n nicht prim und ungerade, so ist die Anzahl der weiteren Zeugen größer
als 12 (n − 1).
• aus b) folgt insbesondere, dass n nicht prim ist
73 / 77
probabilistische Algorithmen
74 / 77
probabilistische Algorithmen
abschließende Bemerkungen
Damit haben wir den folgenden probabilistischen Algorithmus:
• einige der vorgestellten randomisierten Verfahren (perfektes Matching,
Input n > 2
ist n gerade, so akzeptiere
andernfalls wähle a ∈ {1, . . . , n − 1} zufällig
ist a ein weiterer Zeuge für n, nicht prim zu sein, so akzeptiere
andernfalls verwirf
end
2-SAT) bringen keine Laufzeitvorteile gegenüber exakten Verfahren
• 2-SAT lässt sich in linearer Zeit exakt lösen
• im anderen Fall muss getestet werden, ob die Determinante an einer
bestimmten Stelle verschwindet
• eine Standard-Gauss-Elimination würde dafür O(n 3 ) Schritte benötigen
√
• exakte Matching-Verfahren brauchen O(nm log n) bzw. O( nm)
• die erweiterte Zeugenschaft kann in polynomieller Zeit überprüft werden
Schritte brauchen
• wird der Input akzeptiert, so ist n nicht prim
• seit 1975 ist bekannt, dass Primzahltest in NP ∩ coNP liegt
• wird er verworfen, so ist die Wahrscheinlichkeit, dass n keine Primzahl
ist, höchstens
• seit 2002 ist bekannt, dass Primzahltest in P liegt
1
2
• damit erhalten wir einen EMC-Algorithmus.
• das Faktorisierungsproblem ist nach wie vor offen.
75 / 77
76 / 77
probabilistische Algorithmen
• zu Max2-SAT
• einfaches Raten einer Belegung hat die gleiche erwartete Güte:
• sei x1 ∨ x2 eine Klausel
• in drei von vier Fällen wird eine zufällige Belegung diese Klausel wahr
machen
• wie vorher ergibt sich daraus eine erwartet Güte von
3
4
• für k ≥ 3 liefert zufälliges Raten eine bessere Lösung als Runden:
•
2k −1
2k
gegen
“
1 − (1 − k1 )k
”
für Maxk -Sat
77 / 77
Herunterladen