Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

WS 2006-07 Algorithmentheorie 03 – Randomisierung (Closest Pair) Prof. Dr. Th. Ottmann.

Ähnliche Präsentationen


Präsentation zum Thema: "WS 2006-07 Algorithmentheorie 03 – Randomisierung (Closest Pair) Prof. Dr. Th. Ottmann."—  Präsentation transkript:

1 WS Algorithmentheorie 03 – Randomisierung (Closest Pair) Prof. Dr. Th. Ottmann

2 2WS Randomisierung Klassen von randomisierten Algorithmen Randomisierter Quicksort Randomisierter Algorithmus für Closest Pair Randomisierter Primzahltest Exkurs: Kryptographie

3 3WS Klassen von randomisierten Algorithmen Las Vegas Algorithmen immer korrekt; erwartete Laufzeit Beispiel: randomisierter Quicksort Monte Carlo Algorithmen (mostly correct): wahrscheinlich korrekt; garantierte Laufzeit Beispiel: randomisierter Primzahltest

4 4WS Das Closest Pair Problem Gegeben: Menge von n Punkten in der Ebene Gesucht: die zwei Punkte mit geringstem Abstand zueinander

5 5WS Ansätze Naiver Ansatz: Berechne für jedes Paar von Punkten den jeweiligen Abstand und wähle das Paar mit minimalem Abstand. Laufzeit: O(n 2 ) Divide-and-Conquer Ansatz: vgl. frühere Vorlesung Laufzeit: O(n log n)

6 6WS Zielsetzung Entwerfe Las-Vegas-Typ Algorithmus mit erwarteter Laufzeit O(n). Idee: Verbessere Laufzeit mit Hilfe von Input Randomisierung und Implementation von Dictionaries durch universelles Hashing. Unterscheide zwischen Operationen an Dictionaries und anderen. Konstruiere Algorithmus, der O(n) Distanzberechnungen und Lookup Operationen ausführt und zusätzlich eine erwartete Anzahl von O(n) MakeDictionary- und Einfüge-Operationen. Also: Zweifache Verwendung von Randomisierung: 1.Reihenfolge der Punkte 2.Universelles Hashing

7 7WS Notationen Menge der Punkte: P = {p 1,..., p n }, wobei p i = (x i, y i ) euklidischer Abstand: d (p i, p j ) OBdA: alle Punkte liegen im Einheitsquadrat, d.h. i = 1,..., n : 0 x i, y i < 1

8 8WS Die Idee betrachte die n Punkte in zufälliger Reihenfolge p 1,..., p n und merke jeweils = min{d(p i, p j )}, d.h. beginne mit = d(p 1, p 2 ) für jeden neuen Punkt p i prüfe, ob in der Nähe von p i einer der bereits betrachteten Punkte p 1,..., p i-1 in einer geringeren Entfernung als von p i entfernt liegt falls ja, muss aktualisiert werden Problem: Was heißt in der Nähe von p i ?

9 9WS Inkrementeller Algorithmus Ordne Punkte in zufälliger Reihenfolge p 1,..., p n. Algorithmus geht stufenweise (mit jeweils festem δ) vor: Beginne mit dem closest pair (p 1, p 2 ) und = d(p 1, p 2 ). Ziel in jeder Stufe ist es, entweder zu verifizieren, dass tatsächlich der kleinste Abstand ist, oder ein neues Paar (p i, p j ) mit d(p i, p j ) < zu finden. In jeder Stufe werden Punkte der Reihenfolge nach betrachtet. Sobald ein Punkt p i erreicht wird, so dass für ein j < i d(p i, p j ) < gilt, springe zur nächsten Stufe. Setze = min j :j

10 10WS Überlegungen Offensichtlich terminiert der Algorithmus. Die Anzahl der benötigten Schritte hängt stark von der Reihenfolge der Punkte ab: Im besten Fall, wenn p 1 und p 2 bereits das closest pair sind, wird nur eine Stufe benötigt. Im schlimmsten Fall wird für jeden Punkt geändert und man benötigt n - 2 Stufen. Wir werden sehen, dass die erwartete Laufzeit des Algorithmus (für eine zufällig gewählte Reihenfolge der n Punkte) nur um einen konstanten Faktor von der Laufzeit im besten Fall abweicht.

11 11WS Der Trick (1) Hauptteil des Algorithmus ist der Test, ob ein closest pair erhalten bleibt, wenn ein neuer Punkt hinzugefügt wird. Dazu müssen Abstände zwischen dem neuen Punkt und den bereits vorhandenen berechnet werden, für welche? Hilfsmittel: Unterteile das Einheitsquadrat in kleinere Quadrate der Seitenlänge /2. N 2 Teilquadrate mit N = Für 0 s N-1 und 1 t N-1 definieren wir das Teilquadrat S st := {(x,y ) : s /2 x < (s+1) /2; t /2 y < (t+1) /2}

12 12WS Rasterung

13 13WS Der Trick (2) 2 Vorteile: 1.Für zwei Punkte p, q im gleichen Teilquadrat gilt: d (p, q) < δ 2.Gilt für zwei Punkte d (p, q) < δ, so liegen sienahe beisammen, d.h. höchstens 2 Quadrate entfernt.

14 14WS Der Trick (3) Beweis: (1) Jeweils die x- als auch die y-Koordinaten der beiden Punkte unterscheiden sich um höchstens δ /2. (2) Seien p und q in Quadraten, die nicht nahe beisammen liegen, p S st und q S s ' t ' mit || s - s' || > 2 oder || t - t' || > 2. in der x- oder y-Koordinate unterscheiden sich p und q um mindestens δ, also kann nicht d(p, q) δ sein.

15 15WS Für einen beliebigen Punkt p liegen also alle Punkte q mit d (p, q) < in einem 5 mal 5 Felder großen Gitter um das Quadrat S st, in dem p liegt. in der Nähe von p

16 16WS closest pair-Test Idee: Merke zu jedem Punkt das Quadrat S st, in dem er sich befindet. (Speichere dazu alle Punkte in einem von δ abhängigen Dictionary.) Für jeden neuen Punkt p i : Bestimme das Quadrat, in dem er sich befindet. Überprüfe die höchsten 25 nahen Quadrate auf andere Punkte. Dabei kann man wegen Vorteil 2 höchstens 25 Punkte finden. Zu jedem solchen Punkt: Berechne den Abstand zu p i. Falls kein Abstand kleiner als ist, bleibt unverändert und p i wird gespeichert (zusammen mit S st ).

17 17WS δ-abhängiges Dictionary zur Speicherung von Punkten Anfragemöglichkeiten: Gegeben s, t: Finde S st und stelle fest, ob überhaupt und ggfs. welchen Punkt S st enthält. Gegeben p = (p x, p y ): Finde das Feld S st, das p enthält.

18 18WS Hash-Tabellen Wie kann p i - zusammen mit S st - effizient gespeichert werden? Verwende Wörterbuch (Dictionary, z.B. als Hash-Tabelle implementiert). Benutze s, t als 2-dimensionalen Index (Schlüssel) zur Bestimmung des Quadrate S st. Wird geändert, so werden die Hash-Tabelle und alle δ- abhängigen Quadrate S st nutzlos und wir brauchen eine neue Hash-Tabelle für neue Quadrate der Kantenlänge /2. Für jeden Punkt, der bisher betrachtet wurde, wird sein neues Quadrat berechnet und in die neue Hash-Tabelle eingefügt. Danach wird mit dem nächsten Punkt in der zufälligen Reihenfolge fortgefahren.

19 19WS Kosten von MakeDictionary für ein gegebenes δ und Einfügen einer Menge von i Punkten in das Dictionary: MakeDictionary - Operation

20 20WS Zusammenfassung des Algorithmus ordne die Punkte in einer zufälligen Reihenfolge p 1,...,p n sei = minimale (bisher gefundene) Distanz initialisiere = d(p 1, p 2 ) MakeDictionary für Quadrate der Kantenlänge /2 for i = 1, 2,..., n : finde das Quadrat S st im aktuellen Dictionary, das p i enthält; finde die 25 nahen Quadrate von p i ; berechne die Abstände von p i zu jedem Punkt in diesen Quadraten; if ein Punkt p j mit (j < i) und ´ = d(p j, p i ) < existiert, dann: lösche aktuelles Dictionary (die aktuelle hash-table) MakeDictionary für Quadrate der Kantenlänge ´/2 for jeden Punkt p {p 1,..., p i} : finde das Quadrat der Kantenlänge ´/2, das den Punkt p enthält füge p in das Quadrat im Dictionary (in die neue hash-table) ein endfor else füge p i ( zusammen mit S st ) in aktuelles Dictionary (die aktuelle hash-table) ein endif endfor

21 21WS Laufzeitanalyse (1) Für jeden neuen Punkt p i werden nur konstant viele Suche Operationen benötigt, ebenso nur konstant viele Abstandsberechnungen. Insgesamt höchstens O(n) viele MakeDictionary-Operationen. Satz: Der randomisierte Closest-Pair Algorithmus liefert das korrekte Ergebnis und führt für eine Menge von n Punkten höchstens O(n) Distanzberechnungen, O(n) Finde-Operationen und O(n) MakeDictionary Operationen aus. Es fehlt noch: Erwartungswert der Gesamtlaufzeit des Algorithmus unter Berücksichtigung der Einfügungen in neue Dictionaries, wenn das closest pair geändert wird.

22 22WS Laufzeitanalyse (2) Behauptung: Die erwartete Anzahl für alle benötigten Einfüge-Operationen ist in O(n) Beweis: Sei X = Zufallsvariable für Anzahl der Einfüge-Operationen gesucht: E(X ) Sei X i Zufallsvariable mit Wert 1, wenn der i -te Punkt in der zufälligen Reihenfolge ein Update von d erzwingt, 0 sonst. Lemma 1: Die Gesamtanzahl von Einfüge-Operationen ist höchstens

23 23WS Laufzeitanalyse (3) Lemma 2: P[X i = 1] 2/i Beweis: Betrachte die i ersten Punkte p 1,..., p i in der zufälligen Reihenfolge. Sei = d(p, q) der minimale Abstand unter diesen Punkten. p i kann nur dann eine Änderung des minimalen Abstands erzwingen, wenn p i = p oder p i = q da die ersten i Punkte in zufälliger Reihenfolge angeordnet sind, ist jeder von ihnen mit gleicher Wahrscheinlichkeit der letzte die Wahrscheinlichkeit, dass entweder p oder q letzter Punkt ist, ist demnach also 2/i

24 24WS Laufzeitanalyse (4) Lemma 1: Die Gesamtanzahl von Einfüge-Operationen ist höchstens Lemma 2: P[X i = 1] 2/i Folgerung: Der Erwartungwert für die Gesamtzahl aller Einfüge Operationen in Dictionaries ist in O(n).

25 25WS Zusammenfassung der Laufzeitanalyse des randomisierten inkrementellen Algorithmus Für eine zufällig gewählte Folge von n Punkten kann man erwarten, dass der Algorithmus ausführt: O(n) Finde-Operationen O(n) Distanzberechnungen O(n) MakeDictionary-Operationen O(n) Einfüge-Operationen Gesamtlaufzeit hängt ab von der Implementation der Dictionaries, Möglichkeiten: Hashtabellen, Universal Hashing: Erwartete Gesamtlaufzteit O(n) Dynamische Tabellen, balanzierte Bäume: O(n log n) (im worst case!)

26 26WS Zusammenfassung Mittels Randomisierung lässt sich zur Lösung des Closetst-Pair- Problems eine erwartete Laufzeit von O(n) erreichen. Wichtigste Ideen: Inkrementeller Algorithmus mit Input Randomisierung Gitteraufteilung des Universums, aus dem die Punkte stammen Universelles Hashing

27 27WS Kleinberg, Jon M.; Tardos, Éva: Algorithm Design, Addison Wesley, 2005 Ottmann, Thomas; Widmayer, Peter: Algorithmen und Datenstrukturen, Spektrum, 2002 Smid, Michiel: Closest-Point Problems in Computational Geometry, Universität Magdeburg, Kirkpatrick, David: Fundamentals of Algorithm Design and Analysis, Universitiy of British Columbia, romanh/courses/cpsc500/lectures/L pdf Literatur


Herunterladen ppt "WS 2006-07 Algorithmentheorie 03 – Randomisierung (Closest Pair) Prof. Dr. Th. Ottmann."

Ähnliche Präsentationen


Google-Anzeigen