Einführung: Randomisierte Algorithmen Oscar Salvador Morillo Victoria 30.04.2013 1 Las Vegas und Monte Carlo Beispiel habe ich einen randomisierten Algorithmus für das Min-Cut Problem vorgestellt, Für viele Probleme sind randomisierte Algorith- welcher im Gegensatz zu deterministischen Anmen eine gute Alternative zu deterministischen sätzen wie z.B. Netzwerkfluss sehr einfach ist. Bei Algorithmen, da sie teilweise performanter sind Monte Carlo Algorithmen gibt es einen Tradeund/oder sich leichter beschreiben und imple- Off zwischen der Fehlerwahrscheinlichkeit und mentieren lassen als deterministische Algorith- der Laufzeit. Eine Verringerung der Fehlermen mit vergleichbarer Performanz. Las Vegas wahrscheinlichkeit geht mit einer Erhöhung der stellen eine Klasse randomisierter Algorithmen Laufzeit einher. dar, die immer das richtige Ergebnis liefern, deren Algorithm 1 Min Cut Laufzeit jedoch von Ausführung zu Ausführung bei gleicher Eingabe variieren. Ein Las Vegas Al- Eingabe: ungerichteter, zusammenhängender gorithmus gilt als effizient, wenn seine erwartete Multigraph ohne Schleifen Laufzeit für beliebige Eingaben durch eine poly- Ausgabe: potentieller Min-Cut (Schnitt) nomielle Funktion der Eingabegröße beschränkt Solange mehr als 2 Knoten übrig sind: ist. Als Beispiel habe ich RandQS vorgestellt, • Wähle zufällig gleichverteilt eine Kante aus welche eine erwartete Laufzeit von O(n·logn) hat. der Kantenmenge E des Graphen und verIm Gegensatz zu den Las Vegas Algorithmen, können Monte Carlo auch falsche Ergebnisse liefern. Letztere Algorithmen beschreiben randomisierte Algorithmen, deren Fehlerwahrscheinlichkeit sich durch wiederholte Ausführung stetig verringern lassen. Bei Entscheidungsproblemen unterscheidet man zwei Arten von Monte Carlo Algorithmen - solche mit einseitigem Fehler und solche mit zweiseitigem Fehler. Einseitig gibt an, dass für eines der beiden Antworten - Ja oder Nein - die Wahrscheinkeit größer 0 ist, dass es sich bei der Antwort, um eine falsche Antwort handelt. Analog dazu gibt zweiseitiger Fehler an, dass sowohl die Bejahung als auch die Verneinung mit einer gewissen Wahrscheinlichkeit falsch sein kann. Ein Monte Carlo Algorithmus gilt als effizient, wenn seine Worst-Case Laufzeit für beliebige Eingaben durch eine polynomielle Funktion der Eingabegröße beschränkt ist. Als schmelze deren beiden Endknoten (Kontraktion) • Alle Kanten zwischen diesen Knoten werden entfernt Die Kanten zwischen den übrig gebliebenen Knotenpaar ist ein Cut in G und wird als potentieller Min-Cut ausgegeben 1.1 Analyse der Fehlerwahrscheinlichkeit Sei G ein ungerichteter, zusammenhängender Multigraph ohne Schleifen und C ein Min-Schnitt in G mit |C|=k. Sei ei das Ereignis, dass keine Kante aus C im i-tem Schritt gewählt wird für alle 1 i n 2. Wir berechnen die Wahrscheinlichkeit für das Komplement ec1 , dass 1 2.1.1 eine Kante aus C im 1.Schritt gewählt wird. k Pr(ec1 ) e(G) . Wir können e(G), die Anzahl aller Kanten, mit Hilfe des Handschlag-Lemmas von unten abschätzen: Sei (G) der Minimalgrad von G. Jeder Knoten hat demnach mindestens Grad (G). Da jede Kante jedoch inzident zu zwei Knoten ist, würden wir jede Kante doppelt zählen, daher müssen wir durch 2 teilen. Somit ·n gibt es mindestens (G) Kanten. Da C die 2 Kardinalität k besitzt, ist (G) = k, denn andernfalls könnten wir die inzidenten Kanten zu einem Knoten mit Grad < k abschneiden und C wäre dann kein Min-Schnitt. Daraus ergibt (G) ·n sich: e(G) = k 2· n . Somit gilt Pr(ec1 ) 2 k 2 e(G) = n . Daraus können wir die Wahrscheinlichkeit für das Ereignis e1 ableiten: P r(e1 ) = 1 P r(ec1 ) 1 n2 . Wir nehmen an das Ereignis e1 ist eingetreten. Im 2. Schritt sind noch k(n 1) Kanten in der Kantenmenge E vorhan2 den. Daraus folgt: P r(ec2 ) n 2 1 und somit gilt 2 P r(e2 |e1 ) 1 n 1 . Im i-ten Schritt bleiben Binäre Partition der Ebene Wir suchen eine Partitionierung der Ebene für n disjunkte Strecken, so dass auf jedem Bereich sich höchstens eine (Teil-)Strecke befindet. Mit Hilfe des RandAuto Algorithmus können wir eine Binäre Partition der Ebene konstruieren, die diese Bedingungen erfüllt. Eine binäre Partition der Ebene besteht aus einem vollständigem Binärbaum und zusätzlichen Informationen. Zu jedem Knoten v gehört ein Gebiet r(v) auf der Ebene. Der Wurzel ist die gesamte Ebene zugeordnet. Zusätzlich wird in jedem inneren Knoten v des Baums eine Gerade l(v) gespeichert, welche das inr(v) gespeicherte Gebiet schneidet und in zwei Teilgebiete r1 (v) und r2 (v) zerlegt, welche in den Kinderknoten von v gespeichert werden. Mit l(si ) wird die Gerade bezeichnet, die durch Verlängerung der Strecke si auf beiden Seiten entsteht. Eine Autopartition ist eine Partition, welche nur Geraden aus L = {l(s1 ), l(s2 ), ..., l(sn) } verwendet. noch k(n 2i+1) Kanten in der Kantenmenge E. Algorithm 2 RandAuto Somit ist die Wahrscheinlichkeit,⇣für das Ereig⌘ Tn 2 Qn 2 2 nis ei : P r(ei | i=1 ei ) = Eingabe: Eine Menge S = {s1 , s2,..., sn } sich nicht i=1 1 n i+1 schneidender Strecken. 2 n(n 1) . Die Wahrscheinlichkeit, dass ein Min-Cut Ausgabe: Eine binäre Autopartition P⇧ von S. gefunden wird, ist demnach > n22 . Wenn wir aber 1. Wähle zufällig gleichverteilt eine Permuta2 den Algorithmus n2 Mal ausführten, könnten wir tion ⇧ der Zahlenmenge {1, 2, . . . , n} aus den n! n2 möglichen Permutationen. die Fehlerwahrscheinlichkeit auf (1 n22 ) 2 < 1e 2. Solange eine Region mehr als eine Strecke enverringern. thält, schneide diese mit der Gerade l (si ), wobei i die erste Zahl in der Permutation ⇧ ist, so dass die Strecke si diese Region schneidet 2 2.1 Binäre Partition der Ebene Sichtbarkeitsproblem Beim Rendern in der Computergrafik ist die Fragestellung, welche Teile von Oberflächen in einer 3D-Szene bei der Projektion auf zweidimensionalen Flächen sichtbar und welche verdeckt sind. In diesem Beispiel gehen wir von einer Szene Figure 1: aus, die sich vollständig auf der Ebene befindet und wir schauen von einem Punkt auf der Ebene Zur Lösung des Sichbarkeitsproblems wird nun auf die restlichen Objekte. die resultierende Autopartition dem Maleralgo2 rithmus als Eingabe übergeben. Dabei werden, von Schnitten. Somit ist sein Erwartungswert: P P die entfernten Objekte einer Szene zuerst geze- n + E[ u v Cu,v ]. ichnet und dann durch näher gelegene Objekte Nach Linearität des Erwartungswert gilt: übermalt. n+ XX u v6=u P r[u a v] = n+ XX u v6=u 1 index(u, v) + 1 (1) Da die Verlängerung der Strecke u in die eine/andere Richtung eine andere Strecke höch2.2 Wieviele Partitionen werden stens einmal treffen wird, gilt, dass für jede durch RandAuto konstruiert? Strecke u und jede endliche positive Ganzzahl i, höchstens zwei Knoten v und w existieren, so dass Theorem. Die erwartete Größe der AutoParti- index(u, v)=index(u, w)= i gilt. Somit gibt es in tion, die vom Algorithmus erstellt wird, liegt in jedes der beiden Richtungen eine totale AnordO(n log n). nung der Schnittpunkte mit andere Strecken und Proof. Seien u, v zwei Strecken und index(u,v) die Indexwerte steigen monoton. Das impliziert, eine Zufallsvariable, die i liefert, falls die Gerade dass: l(u) i-1 andere Strecken schneidet, bevor es auf Strecke v trifft und 1, falls l(u) v nie trifft. Da n X X1 2 u in zwei Richtung verlängert werden kann, kann 1 es passieren, dass für zwei unterschiedliche Gerindex(u, v) + 1 i+1 i=1 v6=u aden v und w gilt: index(u, v) = index(u, w) = i. (siehe Bsp für index(u,v)=index(u,w)=2 in Fig- Kombiniert man dieses mit (1) folgt daraus, dass die erwartete Größe von P⇡ von oben beschränkt ure 3) ist durch: Figure 2: n+2 X nX1 u i=1 1 n + 2nHn i+1 was O(n·logn) entspricht. Figure 3: 3 Sei mit u a v, das Ereignis bezeichnet, dass die Gerade l(u) v in der konstruierten Partition schneidet. Sei index(u, v) = i und sei u1 , u2 , ..., ui 1 die Strecken, die l(u) schneidet, bevor es v trifft. Das Ereignis u a v tritt nur dann ein, wenn Strecke u vor allen Strecken {u1 , u2 , ..., ui 1 , v} in der zufällig ausgewählten Permutation ⇡ auftritt. Die Wahrscheinlichkeit 1 . Sei Cu,v eine Zufallsvariable, die dafür ist: i+1 1 liefert, falls u a v eintritt und 0 sonst. 1 Es gilt: E[Cu,v ] = P r[u a v] = index(u,v)+1 . Die Größe von P⇡ = n + #Schnittpunkte aufgrund Probabilistische Turing Maschine und die Komplexitätsklassen PP, RP, Co-RP, BPP, ZPP Eine Probabilistische Turing Maschine is eine Turing Maschine, die um die Fähigkeit erweitert ist, Zufallsbits in einem Schritt zu schreiben. Es entspricht einem randomisierten Algorithmus. Bei jeder Eingabe x, akzeptiert eine probabilistische Turing Maschine die Eingabe mit einer gewissen Wahrscheinlichkeit. 3 Definition. Eine Sprache L liegt in der Klasse RP / Co-RP / BPP / PP, wenn eine probabilistische Turing Maschine M existiert, für die gilt: – M läuft in polynomieller Zeit für alle Eingaben – x✏L => P r[M (x) akzeptiert] > • Klasse RP (randomized polynomial time) – x2 / L => P r[M (x) akzeptiert] < – M läuft für alle Eingaben in polynomieller Zeit – x✏L => P r[M (x) akzeptiert] (1 bei Co-RP) 1 2 1 2 • Klasse ZPP (Zero error probabilistic polynomial time) 1 2 – L liegt in ZPP genau dann, wenn ein Las Vegas Algorithmus existiert, der in erwarteter polynomieller Zeit läuft – x 2 / L => P r[M (x) akzeptiert] = 0 ( 12 bei Co-RP) – darunter fallen Monte Carlo Algorithmen mit einseitigem Fehler, der nur fehlerhafte Ergebnisse liefert, wenn x✏L (x 2 / L bei Co-RP) • Klasse BPP (Bounded-error Probabilistic Polynomial time) – M läuft für alle Eingaben in polynomieller Zeit – x✏L => P r[M (x) akzeptiert] Figure 4: 3 4 – x2 / L => P r[M (x) aktzeptiert ] 1 4 – Monte Carlo zweiseitig, 34 und 14 kön1 1 4 Quellenangabe nen durch 12 + p(n) und 12 p(n) , für polynomiell beschränkte Funktion p(n) http://de.wikipedia.org/wiki/Maleralgorithmus ersetzt werden 28.04.2013 Randomized Algorithms, Rajeev Motwani • Klasse PP (Probabilitic Polynomial time) 4