Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Geometrisches Divide and Conquer Formulierung des D&C-Prinzips Beispiel.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Geometrisches Divide and Conquer Formulierung des D&C-Prinzips Beispiel."—  Präsentation transkript:

1 1 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Geometrisches Divide and Conquer Formulierung des D&C-Prinzips Beispiel 1: Closest Pair –Variante: Sweep-line-Lösung Beispiel 2: Segmentschnitt Beispiel 3: Rechteckschnitt Beispiel 4: Voronoi Diagramm

2 2 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Formulierung des D&C Prinzips Divide-and-Conquer Verfahren zur Lösung eines Problems der Größe n 1.Divide: n > c: Teile das Problem in k Teilprobleme der Größe n 1,...,n k auf (k 2) n c: Löse das Problem direkt 2.Conquer: Löse die k Teilprobleme auf dieselbe Art (rekursiv) 3.Merge : Füge die berechneten Teillösungen zu einer Gesamtlösung zusammen

3 3 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Laufzeit eines D&C-Algorithmus T(n) – Maximale Anzahl von Schritten, um ein Problem der Größe n zu lösen T(n) = Spezialfall: k = 2, n 1 = n 2 = n/2 Divide- und Mergeaufwand : DM(n) T(1) = a T(n) = 2T(n/2) + DM(n)

4 4 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Geometrisches Divide - and - Conquer Closest Pair Problem: Bestimme für eine Menge S von n Punkten ein Paar mit minimaler Distanz

5 5 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Divide- and Conquer Ansatz (1) 1.Divide : Teile S in zwei gleichgroße Mengen S l und S r 2.Conquer: d l = mindist(S l ) d r = mindist(S r ) 3.Merge: d lr = min { d(p l, p r ) | p l S l, p r S r } return min { d l, d r, d lr } SrSr SlSl S dldl d lr d r

6 6 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Divide – and – Conquer Ansatz (2) 1.Divide : Teile S in zwei gleichgroße Mengen S l und S r 2.Conquer: d l = mindist(S l ) d r = mindist(S r ) 3.Merge: d lr = min { d(p l, p r ) p l S l, p r S r } return min {d l, d r, d lr } Berechnung von d lr : SrSr SlSl S p d d = min {d l, d r }

7 7 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Merge - Schritt 1.Betrachte nur Punkte im Abstand d von der Mittellinie, gemäß aufsteigenden y-Koordinaten 2.Betrachte zu jedem Punkt p alle Punkte q mit y-Abstand höchstens d; es gibt maximal 7 solcher Punkte.

8 8 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Merge – Schritt (2) d d dd d = min { d l, d r } p S SlSl SrSr p1p1 p3p3 p4p4 p2p2

9 9 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Implementierung Sortiere Eingabepunkte anfangs einmal gemäß steigenden x-Koordinaten O(n log n) Sind Teilprobleme S l, S r gelöst, so erzeuge Liste der Punkte in S gemäß steigenden y-Koordinaten (Mergesort)

10 10 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Laufzeit (Divide-and-Conquer) Rate Lösung durch wiederholtes Einsetzen Verifiziere durch Induktion Lösung: O(n log n)

11 11 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Rate durch wiederholtes Einsetzen T(n) = 2T(n/2) + an = 2(2T(n/4) + an/2) + an = 4T(n/4) + 2an = 4(2T(n/8) + an/4) + 2an = 8T(n/8) + 3an

12 12 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Verifiziere durch Induktion

13 13 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Segmentschnittproblem Bestimme alle Paare sich schneidender Segmente

14 14 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Segmentschnittproblem Bestimme alle Paare sich schneidender Segmente A B C D E A. B. C. D. E..A.D.B.C.E Die getrennte Repräsentation der Segmente erlaubt eine Aufteilung

15 15 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann ReportCuts Input: Menge S bestehend aus vertikalen Segmenten und Endpunkten von horizontalen Segmenten. Output: Alle Schnittpunkte von vertikalen Segmenten mit horizontalen Segmenten, von denen mindestens ein Endpunkt in S ist. 1. Divide if |S| > 1 then teile S mittels einer vertikalen Geraden G in zwei gleichgroße Mengen S 1 (links von G) und S 2 (rechts von G) else S enthält keine Schnitte

16 16 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann ReportCuts A B C D E A D B C E S S1S1 S2S2 1. Divide-Schritt 2. Conquer ReportCuts(S 1 ); ReportCuts(S 2 )

17 17 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann ReportCuts 3. Merge: ??? Mögliche Schnitte für ein horizontales Segment in S 1 Fall 1: beide Endpunkte in S 1 h S1S1 S2S2

18 18 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann ReportCuts Fall 2: nur ein Endpunkt von h in S 1 2 a) rechter Endpunkt in S 1 h S1S1 S2S2

19 19 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann ReportCuts 2 b) linker Endpunkt von h in S 1 h S1S1 rechter Endpunkt in S 2 h S1S1 rechter Endpunkt nicht in S 2 S2S2 S2S2

20 20 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Verfahren: ReportCuts(S) 3. Merge: Gib Schnitte aus zwischen vertikalen Segmenten in S 2 und horizontalen Segmenten in S 1, bei denen linker Endpunkt in S 1 und rechter Endpunkt weder in S 1 noch S 2 Analog für S 1 S1S1 S2S2

21 21 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Implementierung Menge S L(S): y-Koordinaten aller linken Endpunkte in S, deren rechter Partner nicht in S R(S): y-Koordinaten aller rechten Endpunkte in S, deren linker Partner nicht in S V(S): y-Intervalle der vertikalen Segmente in S

22 22 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Basisfälle S enthält nur ein Element Fall 1: s = (x,y) ist ein linker Endpunkt L(S) = {y} R(S) = V(S) = Fall 2: s = (x,y) ist ein rechter Endpunkt L (S)= R(S) = {y} V(S) = Fall 3: s = (x,y 1,y 2 ) ist ein vertikales Segment L(S) = R(S) = V(S) = { [ y 1, y 2 ] }

23 23 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Merge-Schritt L(S i ), R(S i ), V(S i ) i=1,2 seien berechnet S = S 1 S 2 L(S) = (L(S 1 ) \ R(S 2 )) L(S 2 ) R(S) = (R(S 2 ) \ L(S 1 )) R(S 1 ) V(S) = V(S 1 ) V(S 2 ) L,R : sortierte, nach steigenden y-Koordinaten verkettete Listen V : sortierte, nach steigenden unteren Endpunkten verkettete Liste

24 24 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Ausgabe der Schnittpunkte V(S 2 ) h3h3 h2h2 h1h1 L(S 1 )

25 25 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Laufzeit Eingabe (vertikale Seg., linke/rechte Endpunkte horizontaler Seg.) wird anfangs einmal sortiert; abgespeichert in Array. Divide-and-Conquer: T(n) = 2T(n/2) + an + Größe der Ausgabe T(1) = O(1) O(n log n + k) k = #Schnittpunkte

26 26 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Berechnung des Voronoi-Diagramms Gegeben: Eine Menge von Orten (sites) Gesucht: Eine Unterteilung der Ebene in Regionen gleicher nächster Nachbarn Divide : Einteilung der Menge der Orte in zwei Hälften

27 27 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Berechnung des Voronoi-Diagramms Conquer: Rekursive Berechnung der beiden kleineren Voronoi-Diagramme Abbruchbedingung: Voronoi-Diagramm eines einzelnen Ortes ist die gesamte Ebene Merge: Verbindung der Diagramme durch einen Kantenzug

28 28 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Berechnung des Voronoi-Diagramms Ergebnis: Das fertige Voronoi-Diagramm Laufzeit: Bei n gegebenen Orten O(n log n)


Herunterladen ppt "1 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann Geometrisches Divide and Conquer Formulierung des D&C-Prinzips Beispiel."

Ähnliche Präsentationen


Google-Anzeigen