Polygontriangulierung

Ähnliche Dokumente
Polygontriangulierung

Polygontriangulierung

Polygontriangulierung

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

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

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

Lineare Programmierung

2.4. Triangulierung von Polygonen

Algorithmische Geometrie 5. Triangulierung von Polygonen

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

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

Übersicht. Begriffserklärung Motivation / Anwendungen Drei Algorithmen Zusammenfassung Fragen Quellen. Triangulierung von Steffen Ernst 2

Polygon Triangulation. robot.scr. "Art Gallery Problem" Sichtbarkeitspolygon. Algorithmische Geometrie - SS 99 - Th. Ottmann

Triangulierung von einfachen Polygonen

Voronoi-Diagramme und Delaunay-Triangulierungen

Quadtrees und Meshing

Quadtrees und Meshing

Quadtrees und Meshing

Vorlesung Algorithmische Geometrie Konvexe Hülle in R 3

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

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

Quadtrees und Meshing

Vorlesung Algorithmische Geometrie Konvexe Hülle im R 3

Breitensuche BFS (Breadth First Search)

Vorlesung Geometrische Algorithmen Generierung von Nicht-uniformen Netzen Sven Schuierer

Bereichsabfragen. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Geradenarrangements und Dualität von Punkten und Geraden

Triangulierung von Polygonen und das Museumsproblem

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

Es sei P ein einfaches Polygon in der Ebene; P habe n Ecken. Hilfssatz: Zu jedem einfachen Polygon mit mehr als 3 Ecken existiert eine Diagonale.

Lineares Programmieren

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

Algorithmische Geometrie 3. Schnitte von Liniensegmenten

Schematisierung von Karten

Informatik II, SS 2014

Algorithmische Geometrie: Delaunay Triangulierung (Teil 1)

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

6. Triangulation von Polygonen

Punktlokalisierung. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Algorithmische Geometrie: Schnittpunkte von Strecken

Algorithmische Methoden zur Netzwerkanalyse

Algorithmen II Vorlesung am

Triangulierung von einfachen Polygonen

Algorithmen II Vorlesung am

Vorlesung Datenstrukturen

Kombinatorische Optimierung

Algorithmen II Vorlesung am

Durchschnitte und Sichtbarkeit

Informatik II, SS 2016

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

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

Das Heiratsproblem. Definition Matching

2.2. Schnitte von Liniensegmenten

Algorithmische Geometrie: Delaunay Triangulierung (Teil 2)

Algorithmische Geometrie: Voronoi Diagramme (Teil 2)

Hallo Welt für Fortgeschrittene

Algorithmen und Datenstrukturen 2

Maximale s t-flüsse in Planaren Graphen

Punkt-in-Polygon-Suche Übersicht

Klausur. 18. Juli 2008, 10:15-12:15 Uhr. Name:... Matrikelnummer:... Anzahl beschriebener Blätter (ohne Aufgabenblatt):... D(p) : Y = p x X + p y

Algorithmen I - Tutorium 28 Nr. 3

Informatik II, SS 2016

Sichtbarkeitsgraphen. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Proportional Symbol Maps

Algorithmische Methoden zur Netzwerkanalyse

Informatik II, SS 2014

Algorithmische Methoden zur Netzwerkanalyse

Kap. 4.7 Skiplisten. 15./16. VO DAP2 SS /10. Juni 2008

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

Graphalgorithmen Minimale Spannbäume. Kruskal: Minimaler Spannbaum

Übung zur Vorlesung Algorithmische Geometrie

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016

Ausleuchtung/Überwachung von polygonalen Flächen

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.

Beschriftung in Dynamischen Karten

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 2

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

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

21. Greedy Algorithmen. Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3

Algorithmen I. Tutorium 1-6. Sitzung. Dennis Felsing

Informatik II, SS 2018

Beschriftung in Dynamischen Karten

Algorithmen und Datenstrukturen

Delaunay-Triangulierungen

Dualität + Quad-trees

Zweizusammenhang und starker Zusammenhang

2. Triangulation ebener Punktmengen. 3. Definition und Eigenschaften der Delaunay Triangulation

Algorithmen und Datenstrukturen

Algorithmische Geometrie: Lineare Optimierung (I)

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Transkript:

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

Das Kunstgalerie-Problem Aufgabe: Installiere ein Kamerasystem zur Überwachung einer Kunstgalerie, so dass jede Stelle der Galerie gesehen wird. 7 X P Annahme: Beobachtung: Definition: Ziel: Galerie ist ein einfaches Polygon P mit n Ecken (keine Schnitte, keine Löcher) jede Kamera sieht sternförmiges Gebiet Punkt p 2 P ist sichtbar on c 2 P wenn cp 2 P Nutze möglichst wenige Kameras! NP-schwer!! Anzahl hängt on der Komplexität n und der Form on P ab

Vereinfachung des Problems Beobachtung: Idee: Dreiecke sind leicht zu überwachen zerlege P in Dreiecke und überwache die Dreiecke Satz 1: Jedes einfache Polygon mit n Ecken besitzt eine Triangulierung; jede Triangulierung besteht aus n 2 Dreiecken. Beweis liefert rekursien O(n 2 )-Algorithmus!

Vereinfachung des Problems Beobachtung: Dreiecke sind leicht zu überwachen Idee: zerlege P in Dreiecke und überwache die Dreiecke Satz 1: Jedes einfache Polygon mit n Ecken besitzt eine Triangulierung; jede Triangulierung besteht aus n 2 Dreiecken. P lässt sich mit n 2 Kameras in den Dreiecken überwachen P lässt sich mit n/2 Kameras auf den Diagonalen überwachen P lässt sich mit noch weniger Kameras auf den Ecken überwachen

Das Art-Gallery-Theorem [Chátal 75] Satz 2:Für ein einfaches Polygon P mit n Ecken sind manchmal bn/3c Kameras nötig, aber immer ausreichend um P zu überwachen. Beweis: Finde einfaches Polygon für beliebiges n, das n/3 Kameras braucht! Teil 2 an der Tafel. 7 X Fazit: Hat man eine Triangulierung, lassen sich bn/3c Kameras in O(n) Zeit platzieren.

Triangulierung: Überblick Dreistufiges Verfahren: Schritt 1: Zerlege P in y-monotone Teilpolygone Definition: Ein Polygon P ist y-monoton, falls der Schnitt ` \ P für jede horizontale Gerade ` zusammenhängend ist. ` X 7 Schritt 2: Trianguliere y-monotone Teilpolygone Schritt 3: benutze DFS um Triangulierung zu färben

Zerlegen in y-monotone Teile Idee: Unterscheide fünf erschiedene Knotenarten Wendeknoten: ertikale Laufrichtung wechselt Startknoten falls <180 Splitknoten falls >180 Endknoten falls <180 Mergeknoten falls >180 reguläre Knoten

Charakterisierung Lemma 1: Ein Polygon ist y-monoton, wenn es keine Splitoder Mergeknoten besitzt. Beweis: an der Tafel ) Wir müssen alle Split- und Mergeknoten durch Einfügen on Diagonalen entfernen Vorsicht: Diagonalen dürfen weder Kanten on P noch andere Diagonalen schneiden

In Richtung Sweep-Line-Algorithmus 1) Diagonalen für Splitknoten betrachte für jeden Knoten linke Nachbarkante left() bzgl. horizontaler sweep line ` left() erbinde Splitknoten zu niedrigstem Knoten w oberhalb mit left(w) =left() w speichere für jede Kante e den untersten Knoten w mit left(w) =e als helper(e) tri t ` auf Splitknoten : erbinde mit helper(left()) ` e helper(e)

In Richtung Sweep-Line-Algorithmus 2) Diagonalen für Mergeknoten erreicht man Mergeknoten wird helper(left()) = ` 0 erreicht man Splitknoten 0 mit left( 0 )=left() wird Diagonale (, 0 ) eingefügt ersetzt man helper(left()) durch 0 wird Diagonale (, 0 ) eingefügt ` 0 erreicht man das Ende 0 on left() wird Diagonale (, 0 ) eingefügt 0 `

Algorithmus MakeMonotone(P) MakeMonotone(Polygon P ) D doppelt-erkettete Kantenliste für (V (P ),E(P)) Q priority queue für V (P ) lexikographisch sortiert T ; (binärer Suchbaum für Sweep-Line Status) while Q6= ; do Q.nextVertex() Q.deleteVertex() handlevertex() return D handlestartvertex(ertex ) T füge linke Kante e ein helper(e) e = helper(e) e handleendvertex(ertex ) e linke Kante if ismergevertex(helper(e)) then D füge (helper(e),) ein lösche e aus T helper(e)

Algorithmus MakeMonotone(P) MakeMonotone(Polygon P ) D doppelt-erkettete Kantenliste für (V (P ),E(P)) Q priority queue für V (P ) lexikographisch sortiert T ; (binärer Suchbaum für Sweep-Line Status) while Q6= ; do Q.nextVertex() Q.deleteVertex() handlevertex() return D handlesplitvertex(ertex ) e Kante links on in T D füge (helper(e),) ein helper(e) T füge rechte Kante e 0 on ein helper(e 0 ) e e 0 helper(e)

Algorithmus MakeMonotone(P) MakeMonotone(Polygon P ) D doppelt-erkettete Kantenliste für (V (P ),E(P)) Q priority queue für V (P ) lexikographisch sortiert T ; (binärer Suchbaum für Sweep-Line Status) while Q6= ; do Q.nextVertex() Q.deleteVertex() handlemergevertex(ertex ) handlevertex() e rechte Kante return D if ismergevertex(helper(e)) then D füge (helper(e),) ein helper(e 0 ) lösche e aus T e helper(e) e 0 Kante links on in T if ismergevertex(helper(e 0 )) then D füge (helper(e 0 ),) ein e 0 helper(e 0 )

Algorithmus MakeMonotone(P) MakeMonotone(Polygon P ) D doppelt-erkettete Kantenliste für (V (P ),E(P)) Q priority queue für V (P ) lexikographisch sortiert T ; (binärer Suchbaum für Sweep-Line Status) while Q6= ; do handleregularvertex(ertex ) Q.nextVertex() Q.deleteVertex() if P liegt lokal rechts on then handlevertex() e, e 0 obere, untere Kante if ismergevertex(helper(e)) then return D D füge (helper(e),)ein e e 0 helper(e) helper(e) e lösche e aus T T füge e 0 ein; helper(e 0 ) else e Kante links on in T if ismergevertex(helper(e)) then D füge (helper(e),)ein helper(e)

Analyse Lemma 2: Algorithmus MakeMonotone fügt eine Menge on kreuzungsfreien Diagonalen in P ein, die P in y-monotone Teilpolygone zerlegen. Satz 3: Ein einfaches Polygon mit n Knoten kann in O(n log n) Zeit und O(n) Platz in y-monotone Teilpolygone zerlegt werden. priority queue Q erzeugen: O(n) Zeit Sweep-Line Status T initialisieren: O(1) Zeit Eentbehandlung pro Eent: O(log n) Zeit Q.deleteMax: O(log n) Zeit Element aus T suchen, löschen, einfügen: O(log n) Zeit apple 2 Diagonalen in D einfügen: O(1) Zeit Platz: o ensichtlich O(n)

Triangulierung: Überblick Dreistufiges Verfahren: Schritt 1: Zerlege P in y-monotone Teilpolygone Definition: Ein Polygon P ist y-monoton, falls der Schnitt ` \ P für jede horizontale Gerade ` zusammenhängend ist. ` X X 7 Schritt 2: Trianguliere y-monotone Teilpolygone ToDo! Schritt 3: benutze DFS um Triangulierung zu färben X

Triangulieren on y-monotone Polygonen Erinnerung: linker und rechter Grenzpfad sind absteigend Ansatz: Winkel in P > 180 konka greedy, auf beiden Seiten on oben nach unten Inariante? Der besuchte, aber noch nicht triangulierte Teil on P ist trichterförmig. Kette konkaer Knoten konex genauer hinschauen: nur 1 Kette! einfacher Fall

Algorithmus TriangulateMonotonePolygon TriangulateMonotonePolygon(Polygon P als doppelt-erk. Kantenliste) erschmelze linken und rechten Pfad! absteigende Folge u 1,...,u n Stack S ;; S.push(u 1 ); S.push(u 2 ) for j 3 to n 1 do if u j und S.top() auf erschiedenen Pfaden then while not S.empty() do S.pop() if not S.empty() then zeichne (u j,) S.push(u j 1 ); S.push(u j ) u j else S.pop() while not S.empty() and u j sieht S.top() do S.pop() zeichne Diagonale (u j,) S.push(); S.push(u j ) erbinde u n zu allen Knoten in S (außer erstem und letztem) u j u j 1

Zusammenfassung Satz 4: Ein y-monotones Polygon mit n Knoten lässt sich in O(n) Zeit triangulieren. Satz 3: Ein einfaches Polygon mit n Knoten kann in (alt) O(n log n) Zeit und O(n) Platz in y-monotone Teilpolygone zerlegt werden. + Satz 5: Ein einfaches Polygon mit n Knoten kann in O(n log n) Zeit und O(n) Platz trianguliert werden.

Triangulierung: Überblick Dreistufiges Verfahren: Schritt 1: Zerlege P in y-monotone Teilpolygone X Definition: Ein Polygon P ist y-monoton, falls der Schnitt ` \ P für jede horizontale Gerade ` zusammenhängend ist. ` X 7 Schritt 2: Trianguliere y-monotone Teilpolygone Schritt 3: benutze DFS um Triangulierung zu färben X X

Diskussion Lässt sich der Triangulierungs-Algorithmus auch auf Polygone mit Löchern erweitern? Triangulierung: ja Aber reichen weiterhin bn/3c Kameras aus? Nein, eine Verallgemeinerung des Art-Gallery-Theorems besagt, dass manchmal b(n + h)/3c Kameras nötig, aber immer ausreichend sind, wobei h die Anzahl der Löcher ist. [Ho mann et al., 91] Geht es für allgemeine einfache Polygone noch schneller? Ja. Nachdem das Problem lange o en war, und Ende der 1980er Jahre nach und nach schnellere (z.t. randomisierte) Algorithmen orgestelt wurden, beschrieb Chazelle [1990] einen (komplizierten) deterministischen Linearzeit-Algorithmus.