Geometrisches Divide and Conquer

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Kap. 13 Sweep-Line Algorithmen Kap Schnittprobleme
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Kapitel 6: Klassifizierung von Sortiertechniken
G.Heyer Algorithmen und Datenstrukturen II 1 Algorithmen und Datenstrukturen II Wintersemester 2000 / 2001 Prof. Dr. Gerhard Heyer Institut für Informatik.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Algorithmentheorie 04 –Hashing
Algorithmentheorie 6 – Greedy-Verfahren
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Prof.Dr.S. Albers Prof. Dr. Th. Ottmann
WS 03/04 Algorithmentheorie 03 - Randomisierung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
Algorithmentheorie 02 – Polynomprodukt und Fast Fourier Transformation
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (04 – Entwurfsverfahren) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (3) Konstruktion optimaler Suchbäume Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmentheorie 03 – Randomisierung (Closest Pair)
Algorithmen und Datenstrukturen
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Union-Find-Strukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung In welcher Masche liegt der Punkt p?
Punktbeschriftung mit vier Rechtecken gleicher Höhe (Anzahlmaximierung) Julia Löcherbach.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Diskrete Mathe 9 Vorlesung 9 SS 2001
Merge-Sort und Binäres Suchen /10D. Haehn Populäres algorithmisches Lösungsverfahren Populäres algorithmisches Lösungsverfahren Divide: Problem.
Geoinformation II Vorlesung 4 SS 2001 Voronoi-Diagramme.
Konstruktion der Voronoi-Diagramme II
Geoinformation II (6. Semester)
Diskrete Mathematik II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 5 SS 2001 Segmentschnitt II (n Segmente)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 7 SS 2000 Punkt-in-Polygon-Verfahren I (Trapezkarte)
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets.
Polynome und schnelle Fourier-Transformation
Konstruktion der Voronoi-Diagramme I
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Auslegung eines Vorschubantriebes
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 1 WS 2001/02 Punkt-in-Landkarte I (Streifenkarte)
Diskrete Mathematik II
Diskrete Mathematik II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Analyse der Laufzeit von Algorithmen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Diskrete Mathe II Übung IKG - Übung Diskrete Mathe II – Jörg Schmittwilken 2 Übung5 Prüft, ob sich folgende Segmente schneiden: –P1(1/7) P2(3/1)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Voronoi-Diagramme.
Geoinformation II 6. Sem. Vorlesung April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.
Institut für Kartographie und Geoinformation Dipl.-Ing. J. Schmittwilken Diskrete Mathe II Übung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung 4 4. Mai 2000 Voronoi-Diagramm.
Diskrete Mathematik II
 Präsentation transkript:

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 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 n1,...,nk 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 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, n1 = n2 = n/2 Divide- und Mergeaufwand : DM(n) T(1) = a T(n) = 2T(n/2) + DM(n) 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 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann

Divide- and Conquer Ansatz (1) Divide : Teile S in zwei gleichgroße Mengen Sl und Sr Conquer: dl = mindist(Sl ) dr = mindist(Sr ) Merge: dlr = min { d(pl, pr) | pl ∈ Sl, pr ∈ Sr } return min { dl, dr, dlr } S dl dr dlr Sl Sr Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann

Divide – and – Conquer Ansatz (2) Divide : Teile S in zwei gleichgroße Mengen Sl und Sr Conquer: dl = mindist(Sl ) dr = mindist(Sr ) Merge: dlr = min { d(pl, pr )Ⅰ pl ∈ Sl, pr ∈ Sr } return min {dl, dr, dlr } Berechnung von dlr : S p d Sr Sl d = min {dl, dr } Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann

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

Computational Geometry Merge – Schritt (2) p4 S p3 p2 p1 d Sl Sr p d d d d = min { dl , dr } Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann

Computational Geometry Implementierung Sortiere Eingabepunkte anfangs einmal gemäß steigenden x-Koordinaten O(n log n) Sind Teilprobleme Sl , Sr gelöst, so erzeuge Liste der Punkte in S gemäß steigenden y-Koordinaten (Mergesort) 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) 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 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann

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

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

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

Computational Geometry 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 S1 (links von G) und S2 (rechts von G) else S enthält keine Schnitte Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann

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

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

Computational Geometry ReportCuts Fall 2: nur ein Endpunkt von h in S1 2 a) rechter Endpunkt in S1 h S1 S2 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann

Computational Geometry ReportCuts 2 b) linker Endpunkt von h in S1 rechter Endpunkt in S2 h S2 S1 rechter Endpunkt nicht in S2 h S1 S2 Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann

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

Computational Geometry 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 V(S): y-Intervalle der vertikalen Segmente in S Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann

Computational Geometry 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,y1,y2) ist ein vertikales Segment L(S) = ∅ R(S) = ∅ V(S) = { [ y1, y2 ] } Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann

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

Ausgabe der Schnittpunkte V(S2) h3 h2 h1 L(S1) Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann

Computational Geometry 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 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 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 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) Geometrisches Divide and Conquer Computational Geometry Prof. Dr. Th. Ottmann