Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Ähnliche Dokumente
Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

Lineare Programmierung

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Voronoi-Diagramme INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Algorithmische Geometrie: Schnittpunkte von Strecken

Liniensegmentschnitt. Doppelt verkettete Kantenliste. Überlagerung von 2 ebenen Graphen. Boolsche Operatoren für einfache Polygone (LEDA)

2.7.1 Inside-Test Konvexe Hülle Nachbarschaften Schnittprobleme

Algorithmische Geometrie 3. Schnitte von Liniensegmenten

Polygontriangulierung

Punktlokalisierung. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Geradenarrangements und Dualität von Punkten und Geraden

Geradenarrangements und Dualität von Punkten und Geraden

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Voronoi-Diagramme und Delaunay-Triangulierungen

Quadtrees und Meshing

Sichtbarkeitsgraphen. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Algorithmen und Datenstrukturen

Sichtbarkeitsgraph. Andreas Gemsa Übung Algorithmische Geometrie

Polygontriangulierung

Quadtrees und Meshing

Quadtrees und Meshing

Einführung & Konvexe Hülle

Voronoi Diagrams. Christian Wellenbrock. December 1, 2009

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Einführung & Konvexe Hülle

Geometrische Algorithmen Segmentschnitt

Geometrische Algorithmen Segmentschnitt

13. Binäre Suchbäume

Vorlesung Algorithmische Geometrie Konvexe Hülle im R 3

Bereichsabfragen. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Punkt-in-Polygon-Suche Übersicht

Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1

Geometrische Algorithmen Segmentschnitt. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Segmentschnitt

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Visualisierung von Graphen

Algorithmen II Vorlesung am

Dualität + Quad-trees

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min

Geometrische Algorithmen Punkt-in-Polygon-Suche. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

Algorithmen und Datenstrukturen

3. Übungsblatt zu Algorithmen I im SoSe 2017

Maximale s t-flüsse in Planaren Graphen

Lernmodul 7 Algorithmus von Dijkstra

Lineares Programmieren

Informatik II, SS 2014

Kap. 4.7 Skiplisten. 14./15. VO DAP2 SS /16. Juni 2009

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Algorithmische Geometrie 4. Schnitte planarer Unterteilungen

Quad-trees. Benjamin Niedermann Übung Algorithmische Geometrie

Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen

Sortieren II / HeapSort Heaps

Informatik II, SS 2014

Triangulierung von Polygonen und das Museumsproblem

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

NAME, VORNAME: Studiennummer: Matrikel:

Informatik II, SS 2018

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Konvexe Hülle im R 3 + WSPD

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2017/18. Pro f. Dr. Sán do r Fe k e te

Grundlagen: Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Beschriftung in Dynamischen Karten

Sortierte Folgen 250

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Uberblick 1. Problemstellung 2. Kongurationsraum 3. Bewegungsplanung fur einen Punktroboter 4. Minkowski Summen 5. Pseudo-Scheiben 6. Bewegungsplanung

durch Einfügen von Knoten konstruiert werden kann.

Informatik II, SS 2014

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Algorithmen und Datenstrukturen. Organisatorisches. Christian Komusiewicz Ernst-Abbe-Platz 2, R3315

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Flussmethoden: orthogonales Graphenzeichnen

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Hallo Welt für Fortgeschrittene

5. Bäume und Minimalgerüste

6. Algorithmen der Computer-Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Informatik II, SS 2016

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

Rolf Wanka Sommersemester Vorlesung

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Übung Algorithmen und Datenstrukturen

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Vorlesung Datenstrukturen

Geometrische Algorithmen Voronoi-Diagramme. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Voronoi-Diagramme

11. Elementare Datenstrukturen

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben

Suchen in linearen Feldern. Datenstrukturen & Algorithmen. Laufzeitverhalten der Suchverfahren. Anzahl der Vergleiche für 10 9 Elemente

Punktbeschriftung in Dynamischen Karten

Algorithmische Methoden zur Netzwerkanalyse

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Beschriftung in Dynamischen Karten

Geometrische Datenstrukturen

4.2 Fibonacci-Heaps Aufbau Potenzialfunktion. Knoten v hat folgende Felder:

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Suchbäume balancieren

Transkript:

Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 24.04.2011

Überlagern von Kartenebenen Beispiel: Gegeben zwei verschiedene Kartenebenen, bestimme deren Schnitt. + = Regionen sind Polygone Polygone sind Streckenmengen berechne alle Streckenschnittpunkte berechne induzierte Regionen Flächennutzung Niederschlag Kombination beider Themen

Problemstellung Geg: Ges: Def: Menge S = {s 1,..., s n } von Strecken in der Ebene alle Schnittpunkte von zwei oder mehr Strecken für jeden Schnittpunkt die beteiligten Strecken Strecken sind abgeschlossene Mengen Diskussion: Wie kann man das Problem naiv lösen? Ist das evtl. schon optimal? Sehen Sie Verbesserungsansätze?

Das Sweep-Line Verfahren: Beispiel

Datenstrukturen 1.) Event Queue Q definiere p q def. y p > y q (y p = y q x p < x q ) l speichere Events sortiert nach in balanciertem binärem Suchbaum AVL-Baum, Rot-Schwarz-Baum,... Operationen insert, delete und nextevent in O(log Q ) Zeit p q 2.) Sweep-Line Status T l speichere von l geschnittene Strecken geordnet von links nach rechts benötigte Operationen insert, delete, findneighbor ebenfalls balancierter binärer Suchbaum mit Strecken in den Blättern!

Algorithmus FindIntersections(S) Input: Menge S von Strecken Output: Menge aller Schnittpunkte mit zugeh. Strecken Q ; T foreach s S do Q.insert(upperEndPoint(s)) Q.insert(lowerEndPoint(s)) Was passiert mit Duplikaten? while Q do p Q.nextEvent() Q.deleteEvent(p) handleevent(p) Hier versteckt sich der Kern des Algorithmus!

Algorithmus handleevent(p) U(p) Strecken mit p oberer Endpunkt L(p) Strecken mit p unterer Endpunkt C(p) Strecken mit p innerer Punkt if U(p) L(p) C(p) 2 then gebe p und U(p) L(p) C(p) aus entferne L(p) C(p) aus T füge U(p) C(p) in T ein if U(p) C(p) = then mit p in Q gespeichert Nachbarn in T Entfernen und Einfügen dreht C(p) um //s l und s r Nachbarn von p in T Q prüfe s l und s r auf Schnitt unterhalb p else //s und s linkeste und rechteste Strecke in U(p) C(p) Q prüfe s l und s auf Schnitt unterhalb p Q prüfe s r und s auf Schnitt unterhalb p

Was passiert genau? S s 6 s 4 s 5 s 1 p p s 3 T s 1 s 5 s 3 s 6 s 4 s 3 s 7 s 7 s 6 s 5 s 4 s 1 s 2 s 2 U(p) = {s 2 } L(p) = {s 4, s 5 } C(p) = {s 1, s 3 } Füge Event p = s 1 s 7 in Q ein s 6 s l s 3 s 6 s 3 s 2 s 1 s 1 s 7 s s s r

Korrektheit Lemma 1: Algorithmus FindIntersections findet alle Schnittpunkte und die beteiligten Strecken. Beweis: Induktion über die Reihenfolge der Events. Sei p ein Schnittpunkt und alle Schnittpunkte q p seien bereits korrekt berechnet. Fall 1: p ist Streckenendpunkt p wurde am Anfang in Q eingefügt U(p) an p gespeichert L(p) und C(p) in T vorhanden Fall 2: p ist kein Streckenendpunkt Überlegen Sie warum p in Q sein muss!

Laufzeitanalyse FindIntersections(S) Input: Menge S von Strecken Output: Menge aller Schnittpunkte mit zugeh. Strecken Q ; T O(1) foreach s S do Q.insert(upperEndPoint(s)) O(n log n) Q.insert(lowerEndPoint(s)) while Q do p Q.nextEvent() Q.deleteEvent(p) handleevent(p) O(log Q )?

Laufzeitanalyse handleevent(p) U(p) Strecken mit p oberer Endpunkt L(p) Strecken mit p unterer Endpunkt C(p) Strecken mit p innerer Punkt if U(p) L(p) C(p) 2 then gebe p und U(p) L(p) C(p) aus entferne L(p) C(p) aus T füge U(p) C(p) in T ein if U(p) C(p) = then //s l und s r Nachbarn von p in T Q prüfe s l und s r auf Schnitt unterhalb p else //s und s linkeste und rechteste Strecke in U(p) C(p) Q prüfe s l und s auf Schnitt unterhalb p Q prüfe s r und s auf Schnitt unterhalb p Lemma 2:Algorithmus FindIntersections hat eine Laufzeit von O(n log n + I log n), wobei I die Anzahl der Schnittpunkte ist.

Zusammenfassung Satz 1: Sei S eine Menge von n Strecken in der Ebene. Dann können alle Schnittpunkte in S zusammen mit den beteiligten Strecken in O((n + I) log n) Zeit und O(n) Platz ausgegeben werden. Beweis: Korrektheit Laufzeit Speicherplatz Überlegen Sie wie viel Platz die Datenstrukturen benötigen! T maximal n Elemente Q maximal O(n + I) Elemente Reduktion von Q auf O(n) Platz: s. Übung

Diskussion Ist der Sweep-Line Algorithmus immer besser als der naive? Nein, denn falls I Ω(n 2 ) hat der Algorithmus eine Laufzeit von O(n 2 log n). Geht es noch besser? Ja, in Θ(n log n + I) Zeit und Θ(n) Platz [Balaban, 1995]. Wie löst man damit das Kartenüberlagerungs-Problem? Unter Verwendung einer geeigneten Datenstruktur (doppelt-verkettete Kantenliste) für planare Graphen lässt sich in ebenfalls O((n + I) log n) Zeit die überlagerte Unterteilung der Karte berechnen. (Details s. Kap. 2.3 im Buch)

Datenstruktur für Landkarten (politische) Landkarte entspricht Unterteilung der Ebene in Polygone Unterteilung entspricht Einbettung eines planaren Graphen mit Knoten Kanten Facetten Welche Operationen sollte eine Datenstruktur für Unterteilungen der Ebene unterstützen? Kanten einer Facette ablaufen via Kante von Facette zu Facette wechseln Nachbarknoten in zyklischer Reihenfolge besuchen

Doppelt verkettete Kantenliste (DCEL) Zutaten: Knoten Koordinaten (x(v), y(v)) (erste) ausgehende Kante edge(v) twin(e) e Kanten = zwei Halbkanten next(e) prev(e) face(e) Knoten origin(e) Gegenkante twin(e) Vorgänger prev(e) & Nachfolger next(e) inzidente Facette face(e) Facetten Randkante edge(f) outer(f) Kantenliste inner(f) für evtl. Löcher

Aufgaben Welche Gleichheiten stimmen immer? 1. twin(twin(e)) = e 2. next(prev(e)) = e 3. twin(prev(twin(e))) = next(e) 4. face(e) = face(next(e)) Geben Sie einen Algorithmus an zum 1. Aufzählen aller Nachbarknoten eines Knotens v. 2. Aufzählen aller Nachbarfacetten einer Facette f. 3. Aufzählen aller Facetten mit Knoten auf der äußeren Umrandung.

Ankündigung Nächste Woche Dienstag (1. Mai) keine Vorlesung. Nächste Vorlesung Donnerstag 3. Mai um 9:45 Uhr in SR131.