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