Kap. 13 Sweep-Line Algorithmen Kap Schnittprobleme

Slides:



Advertisements
Ähnliche Präsentationen
Punkt-in-Polygon-Verfahren III (R/R+-Baum)
Advertisements

Eine dynamische Menge, die diese Operationen unterstützt,
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Christian Schindelhauer
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – B-Bäume)
B-Bäume.
Kapitel 6: Klassifizierung von Sortiertechniken
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Marco Barz Seminar über Algorithmen SoSe2007
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Algorithmentheorie 04 –Hashing
Suche in Texten: Suffix-Bäume
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Union-Find-Strukturen
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
Geometrisches Divide and Conquer
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 4.1.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Peer-to-Peer- Netzwerke Christian Schindelhauer Sommersemester.
1 Kap. 2 Graphen Kap. 2.1 Netze Beispiele: MVV, Autobahnen, WIN, E/R, LH-Flüge, Stützgraphen, Petri-Netze, SIPs, ISA-Hierarchien, Operator-Graphen, Wartegraphen.
Operationen auf verketteten Listen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung In welcher Masche liegt der Punkt p?
Koordinatengeometrie 3 Mathematik Jahrgangsstufe 11 Übersicht Strecke – Streckenlänge – Mittelpunkt und Abstände Wie beschreibe ich eine Strecke? Wie bestimme.
Wir suchen ‘ mit m = m    ‘ c  ‘ mod 26
Minimum Spanning Tree: MST
Theorie und Praxis geometrischer Algorithmen
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
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
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Effiziente Algorithmen
Geoinformation II Vorlesung 4 SS 2001 Voronoi-Diagramme.
Konstruktion der Voronoi-Diagramme II
Geoinformation II (6. Semester)
Diskrete Mathematik II
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
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Konstruktion der Voronoi-Diagramme I
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms 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.
Landkarten Landkarten sind Tesselationen mit folgenden Eigenschaften:
Analyse der Laufzeit von Algorithmen
Algorithmische Probleme in Funknetzwerken IV
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
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.
Delauny Triangulierung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung 4 4. Mai 2000 Voronoi-Diagramm.
Vorlesung April 2000 Polygon Overlay
Diskrete Mathematik II
 Präsentation transkript:

Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme Y X 2 8 1 9 7 3 6 5 4 a b c Menge von Linien-Segmenten der Form (a, 1, 9) oder L: (a, (x1, y1), (x9, y9))

X-Struktur: Anfangspunkte Endpunkte manche Schnittpunkte sortiert nach aufsteigenden X-Koordinaten Y-Struktur: Status an Sweep-Line (SL), i.e. Linien die SL schneiden sortiert nach Y-Koordinaten des Schnittpunktes mit SL. (Y-Koord. selbst nicht benötigt)

Interessante Vorgänge bei nächstem Punkt bzgl. X-Struktur; Vorstellung: SL wird bis zum nächsten Punkt in X-Struktur verschoben: - Anfangspunkt von Linie d: nehme d in Y-Struktur, i.e. einsortieren - Endpunkt von Linie e: entferne e aus Y-Struktur - Schnittpunkt von f,g: vertausche f, g in Y-struktur Schnittpunkte in X-Struktur: Nur Schnittpunkte von benachbarten Linien bzgl. Y-Struktur, die rechts von SL liegen

Lemma: Wenn kleinster “interessanter” Punkt rechts von SL ein Schnittpunkt ist, dann ist er ein Schnittpunkt benachbarter Linien, also in X-Struktur. Bew: interessante Vorgänge: Linie a muß erst Nachbar b schneiden, bevor a c schneiden kann! bei 3 müssen Linien schon in Y-Struktur sein! 1 2 3 a b c

X-Struktur enthält: Punkte rechts von SL, wenn sie: 1. Anfangspunkt einer Linie 2. Endpunkt einer Linie 3. Schnittpunkt zweier benachbater Linien bzgl. Y-Struktur sind.  X-Struktur enthält “interessante” Punkte sortiert nach X-Koordinate plus Zusatzinfo über Linien, zu denen Punkt gehört

Allg. Struktur des Algorithmus: Nächster Punkt in X-Struktur 1. Anfangspunkt p von c: p c b SL a a p c b SL - entferne p aus X-Struktur - füge Linie c in Y-Struktur ein zwischen a und b, d.h. ändere Nachbarschaften in Y-Struktur - ersetze Schnittpunkte in X-Struktur, z.B. entferne ab aus X, weil (a,b) nicht mehr benachbart, füge ca und cb ein (liegen rechts von SL, falls existent)

2. Endpunkt: q von c - entferne c aus Y - enferne q aus X - ab in X eintragen, falls rechts von SL Hinw: Nachbarschaften in Y-Struktur ändern sich automatisch, da Linien nach Y-Koord. sortiert sind neue SL SL b a q c 3. Schnittpunkt: ab - entferne ab aus X - vertausche a, b in Y - neue Schnittpunkt ac und bd mit neuen Nachbarn c, d falls existent und rechts von SL SL b a

Sweep-Line Alg: initialisiere X-Struktur mit Anfangs und Endpunkten; initialisiere Y-Struktur = ; while X-Struktur   do begin P:= Min (X-Struktur); {P ist Anfang, Ende oder Schnittpunkt} transformiere X-Struktur und Y-Struktur abhänging von P end schlafend tot aktiv SL Y-Struktur repräsentiert nur aktive Linien

Operationen auf Y: fallen an, wenn nächster Punkt in X-Struktur bearbeitet wird: Find (P): Finde SL-Intervall, in dem P liegt Insert (L): Einfüge Linie L in Y-Struktur Delete (L): Entferne Linie L aus Y-Struktur Pred (L), Succ (L): beide Nachbarn von L Interchange (L,L´): vertausche Nachbarn L,L´ Datenstruktur für Y: balanzierter Baum, AVL oder B-Baum Ordnungsrelation für Linien: wobei: y-Koordinate des Schnittpunktes von Li mit SL ≺ ≻

Hinw: muß bei Suche in Y-Struktur ausgewertet werden. SL: X = c y-koordinate des Punktes P ist bekant y(P) y(LiSL) Analyse: n Linien, s Schnittp. In Y-Struktur: sind O(n) Linien, deshalb Einzeloperationen erfordert: suchen einfügen je O(log n) Kosten löschen vertauschen Ingesamt 2n+s Einzeloperationen (Durchläufe durch while – Schleife)  O ((n+s) log n) Kosten

In X-Struktur: sind jeweils höchstens: 2n + n-1 Anfangs – n Schnittpunkte Endpunkte benachbarter Linien, weil: 1 12 2 23 3 34  O(log n) pro ... ... Einzeloperation: Min, einfügen, löschen n n-1n Insgesamt auch 2n+s Einzeloperationen  O ((n+s) log n) Kosten

Verwandtes Problem: Zerlegung eines geschlossenen Polygonzuges in zusammenhängende Polyangebiete Schnittpunkte nach vorherigen Schema X-Struktur wie bisher Y-Struktur erweitert um Namen für Gebiet zwischen 2 benachbarten Linien und begrenzendem Polygonzug X1 R0 X3 X4 P1 R2 X0 X2 R1

Fall 1: neue Punktfolge für R´ starten Fall 2: Punkt in Folgen aufnehmen Fall 3: R1  R3 Punktfolgen für R1, R3 konkatenieren Folge für R3 “umkehren”, z.B. durch dopellte Verkettung beider Listen. Details? Gebiet liegt links bw. rechts von Streckenzug? R R´ R1 R2 R3 R1 R2

Fall 4: R1 R1 R2 R4 R3 R3 Gesamtkosten: O ((n+s) log n) Details für Wartung der Punktfolgen?

Kap. 13.2 Sweep-Line für Nearest Neighbour Begriffe H(p, q) b(p, q) H(q, p) p q b(p, q) : Bisektor für p, q teilt Ebene in b(p, q) = b(q, p) 2 Halbebenen H(p, q) : Halbebene, die p enthält H(q, p) : “ “ q “ H(p, q)  H(q, p)

. r die Mittelsenkrechten im Dreieck schneiden sich im einem Punkt = Umkreis Mittelpunkt 1. Teil des Alg: Bestimmung des nächsten Nachbarn nach links: Voronoi Diagramme für Punktmengen, z.B. für Einzugsbereich von Funktürmen bei Mobilfunk konvexe Polygone für einzelne Punkte

Sweep-Line Invariante: Schnitt von SL mit Voronoi-Diagramm der Punkte links von SL  Unterteilung von SL in Intervalle, die zu Voronoi-Polygonen von Punkten links von SL gehören Interessante Ereignisse: E1 neuer Punkt p E2 Schnittpunkt von aktiven Bisektoren

Aufgabe bei E1 : 1. Bestimme nächsten linken Nachbarn von p, i.e. das q, in dessen Voronoi-Polygon p liegt. 2. Schreibe Voronoi-Polygon fort, wobei p zu Punktmenge links von SL hinzugenommen wird. Aktiviere und deaktiviere Bisektoren 3. Berechne Unterteilung von SL neu, aber inkrementell. Aufgabe bei E2 : 1. Aktiviere neuen Bisektor 2. Deaktiviere alte Bisektoren 3. Berechne Unterteilung von SL neu. p q r neu