Geometrische Algorithmen

Ähnliche Dokumente
Das Voronoi Diagramm. 1. Definition. 2. Eigenschaften. 3. Größe und Speicherung. 4. Konstruktion. 5. Verwendung

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

Algorithmische Techniken für Geometrische Probleme

Geometrische Algorithmen Einige einfache Definitionen: Ist ein Punkt in einem Polygon? Punkt-in-Polygon-Problem. Das Punkt-in-Polygon-Problem

Hallo Welt für Fortgeschrittene

Geradenarrangements und Dualität von Punkten und Geraden

Übungsblatt 7 - Voronoi Diagramme

Geradenarrangements und Dualität von Punkten und Geraden

Seminar. Algorithmische Geometrie

Grundlagen zur Delaunay-Triangulierung und zur konvexen Hülle. zum Begriff des Voronoi-Diagramms (vgl. auch Vorlesung "Algorithmische Geometrie"):

Konvexe Hülle. Konvexe Hülle. Mathematik. Konvexe Hülle: Definition. Mathematik. Konvexe Hülle: Eigenschaften. AK der Algorithmik 5, SS 2005 Hu Bin

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

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

Hallo Welt! für Fortgeschrittene. Geometrie I. Philipp Erhardt. 19. Juli Philipp Erhardt Geometrie I 19. Juli / 27

Geometrische Algorithmen

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

Algorithmische Geometrie

Geometrie I. Sebastian Redinger Informatik 2 Programmiersysteme Martensstraße Erlangen

Kapitel 6: Algorithmen der Computer-Geometrie

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

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

Zusammenfassung Voronoi Diagramme

Hallo Welt für Fortgeschrittene

Algorithmische Geometrie: Schnittpunkte von Strecken

Das Divide - and - Conquer Prinzip. Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide and Conquer - Closest-Pair - Segmentschnitt

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

Algorithmische Geometrie 3. Schnitte von Liniensegmenten

12. Flächenrekonstruktion aus 3D-Punktwolken und generalisierte Voronoi-Diagramme

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

Vorlesung Datenstrukturen

Algorithmische Geometrie: Delaunay Triangulierung (Teil 1)

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Voronoi Diagrams. Christian Wellenbrock. December 1, 2009

Übungen zur Vorlesung Algorithmische Geometrie

Geometrie 1. Christian Bay Christian Bay Geometrie / 46

6. Algorithmen der Computer-Geometrie

Algorithmische Geometrie: Delaunay Triangulierung (Teil 2)

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

Geometrische Algorithmen Segmentschnitt

Geometrische Algorithmen Segmentschnitt

Algorithmische Geometrie Thema: Konvexe Hüllen

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

Geometrie I. Polygone. Dominik Huber Hallo Welt! für Fortgeschrittene. Informatik 2 Programmiersysteme Martensstraße Erlangen

Punktlokalisation 1. Trapez-Zerlegungen. 2. Eine Suchstruktur. 3. Randomisierter, inkrementeller Algorithmus zur Konstruktion der Trapez-Zerlegung

Manipulation von Mengen

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

Geometrie 1. Roman Sommer. Informatik 2 Programmiersysteme Martensstraße Erlangen

Polygontriangulierung

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.

Algorithmische Geometrie: Arrangements und

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

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

2.4. Triangulierung von Polygonen

Füllen von Primitiven

2.1. Konvexe Hülle in 2D

7. Sortieren Lernziele. 7. Sortieren

M. Pester 29. Ein konvexes d-polytop ist eine begrenzte d-dimensionale polyedrale Menge. (d = 3 Polyeder, d = 2 Polygon)

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

1 Rotating Calipers. 2 Antipodal und Copodal. 3 Distanzen Rechtecke Eigenschaften

Algorithmische Anwendungen. Algorithmen zur Berechnung konvexer Hüllen von Punkten

für n-elementige Punktmenge jedenfalls Ω(n log n), da mit VD die konvexe Hülle in linearer Zeit bestimmbar.

Dualität + Quad-trees

Vorlesung Algorithmische Geometrie Konvexe Hülle in R 3

Übung Computergrafik 3

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

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

Übung zur Vorlesung Algorithmische Geometrie

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Aufgabensammlung zur algorithmischen Geometrie

Algorithmen und Datenstrukturen

Anwendungsbeispiel MinHeap

Algorithmische Geometrie: Rest Lokalisierung von Punkten; Voronoi Diagramme (1/2)

Geometrische Grundkonstruktionen

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

Voronoi Diagramme und Delaunay Triangulation

Transkript:

Geometrische Algorithmen Thomas Röfer Motivation Scan-line-Prinzip Konvexe Hülle Distanzprobleme Voronoi-Diagramm

Rückblick Manipulation von Mengen Vorrangwarteschlange Heap HeapSort swap(a, 0, 4) 1 5 2 3 7 8 siftdown(a, 0, 3) 5 3 2 1 7 8 Pfadkompression Allgemeiner Rahmen Union-Find-Strukturen 2

Motivation Anwendungen für Algorithmische Geometrie Bildverarbeitung Computer-Grafik Geographie Kartographie Robotik Simulation Chip-Design 3

Scan-Line-Prinzip Motivation Probleme im zweidimensionalen Raum wie welche Strecke schneidet welche andere Strecke oder welche Strecke sieht welche andere Strecke lassen sich naiv nur mit einem Aufwand von O(N²) oder höher lösen Mit dem Scan-Line-Prinzip lässt sich der Aufwand aber auf O(N log N) drücken Ansatz Die (End-)Punkte der Strecken werden nach der x-koordinate sortiert Dann wandert die Scan-Line von Punkt zu Punkt (links nach rechts) und verwaltet einen nach y-koordinaten sortierten Puffer der offenen Strecken Algorithmus Q ist objekt- und problemabhängige Folge von Haltepunkten in aufsteigender x-reihenfolge Setze L = Solange Q nicht leer wähle nächsten Haltepunkt aus Q und entferne ihn aus Q update(l) und gib (problemabhängige) Teilantwort aus Beispiel: Sichtbarkeitsproblem 4

Scan-Line-Prinzip Sichtbarkeit Q ist Folge der 2N Anfangs- und Endpunkte von Elementen in S in aufsteigender x-reihenfolge L ist Menge der aktiven Liniensegmente in aufsteigender y-reihenfolge. Anfangs L = Solange Q nicht leer p ist nächster Haltepunkt aus Q Wenn p Startpunkt eines Segments s Füge s in L ein Bestimme die Nachbarn s und s von s in L und gib (s, s ) und (s, s ) aus Ansonsten ist p Endpunkt von s Bestimme die Nachbarn s und s von s in L und gib (s, s ) aus Entferne s aus L Aufwand Sortieren: O(2N log 2N) Durchlaufen: 2N O(log N) 5

Scan-Line-Prinzip Sichtbarkeit 6

Scan-Line-Prinzip Schnittpunkte 7

Scan-Line-Prinzip Schnittpunkte 8

Konvexe Hülle Definition Die Konvexe Hülle zu einer Punktmenge P ist das kleinste Polygon G, das alle Punkte aus P umschließt Eigenschaften Jede Verbindungsgerade zwischen zwei Punkten aus P liegt ebenfalls innerhalb der konvexen Hülle Jede Gerade außerhalb der konvexen Hülle, die gegen die Hülle geschoben wird, wird zuerst einen der Eckpunkte berühren Garantierte Hüllenpunkte Punkte mit minimalen oder maximalen x- oder y-koordinaten 9

Konvexe Hülle Package Wrapping Algorithmus 1. p 0 ist der Punkt mit minimaler y- Koordinate 2. Setze p = p 0 3. Nimm an, die vorherige Kante wäre waagerecht gewesen 4. Suche den Punkt p, bei dem der Winkel zwischen (p, p ) und der vorherigen Kante minimal ist 5. Füge p zur konvexen Hülle hinzu 6. Setze p = p 7. Fahre mit 4. fort, solange p p 0 Aufwand n mal nach dem Punkt mit dem kleinsten Winkel suchen: O(n²) 10

Konvexe Hülle Graham Scan Algorithmus p 0 ist der Punkt mit minimaler y-koordinate Berechne für jeden Punkt p i den Winkel zwischen der Waagerechten und der Strecke (p 0, p i ) Sortiere die Punkte danach. Falls mehrere den gleichen Winkel haben, werden sie in der Reihenfolge ihres Abstands abgelegt Lege p 0, p 1 und p 2 auf einem Stack S ab Für alle weiteren Punkte p i in der Reihenfolge der Sortierung Solange p i auf oder rechts von der Geraden (nexttotop(s), top(s)) liegt, wird top(s) vom Stack S entfernt Danach wird p i auf dem Stack S abgelegt Aufwand Sortierung: O(N log N) Scan: O(2 N) 11

Konvexe Hülle Divide and Conquer Algorithmus Falls eine Punktmenge nur ein Element enthält, ist dieser Punkt die konvexe Hülle Ansonsten zerlege die Punktmenge so in zwei Hälften, dass alle Punkte der einen Menge links von allen Punkten der zweiten Menge liegen Berechne die konvexen Hüllen für beide Teilmengen Bestimme die obere und untere Tangente der beiden Hüllen Die Geraden zwischen den Punkten auf diesen Tangenten verbinden die beide Hüllen Die dazwischen (innerhalb) liegenden Punkte der beiden Teilhüllen werden gelöscht 12

Distanzprobleme Dichtestes Punktepaar Gegeben: Eine Menge P von N Punkten in der Ebene Gesucht: Ein Paar p 1, p 2 von Punkten aus P mit minimaler Distanz Naive Lösung: Berechne die Distanz zwischen allen Punktpaaren und wähle das Minimum: O(n²) Alle nächsten Nachbarn Gegeben: Eine Menge P von N Punkten in der Ebene Gesucht: Für jeden Punkt p 1 P ein nächster Nachbar p 2 P \ {p 1 }, so dass d(p 1, p 2 ) = min p P \ {p1} d(p 1, p) Naive Lösung: Paare jeden Punkt mit allen anderen und wähle das Paar mit der minimalen Distanz: O(n²) Lösung im Eindimensionalen Sortiere alle Werte und betrachte dann nur noch aufeinander folgenden Werte O(N log N) 13

Voronoi-Diagramm Definition Das Voronoi-Diagramm für eine Menge von Punkten in der Ebene teilt die Ebene in Gebiete gleicher nächster Nachbarn Besteht die Menge aus lediglich zwei Punkten, so wird die Einteilung gerade durch die Mittelsenkrechte auf der Verbindungsstrecke der beiden Punkte realisiert Formal Der geometrische Ort aller Punkte, die näher an p 1 liegen als an p 2, ist die Halbebene H(p 1 p 2 ) Die Voronoi-Region VR(p) enthält die geometrischen Orte aller Punkte der Ebene, die näher an p P liegen als an jedem anderen Punkt aus P VR( p) = p' P\{ p} H ( p p') 14

Voronoi-Diagramm Eigenschaften Definition Ein Voronoi-Diagramm ist ein Graph, dessen Knoten Voronoi-Knoten und dessen Kanten Voronoi-Kanten genannt werden Eigenschaften Jeder Knoten v ist gleich weit von den Punkten p i entfernt, der Regionen VR(p i ) an v angrenzen Unter der Annahme, dass keine vier Punkte in P auf einem Kreis liegen, liegen um jeden Knoten v drei Punkte in einem Abstand r. Innerhalb des Radius r kann es keinen weiteren Punkt p geben 15

Voronoi-Diagramm Eigenschaften Eigenschaften Einige Voronoi-Regionen sind beschränkt, andere unbeschränkt Die Punkte der unbeschränkten Voronoi-Regionen liegen auf der konvexen Hülle der Punktmenge Dualer Graph Ein Graph, in dem alle Punkte angrenzender Voronoi-Regionen verbunden sind Delaunay-Triangulation die konvexe Hülle von P 16

Voronoi-Diagramm Datenstruktur 17

Voronoi-Diagramm Datenstruktur 18

Voronoi-Diagramm Datenstruktur class classedge { Node NodestartNode, endnode; endnode; Surface SurfaceleftSurface, rightsurface; rightsurface; Edge Edge startedge, startedge, endedge; endedge; } void voidsurround(surface surround(surfaces, s, Edge Edge e EdgeAction EdgeActiona) a) { Edge Edge e2 e2 = e; e; do do { a.action(e2); a.action(e2); if(e2.leftsurface == == s) s) e2 e2 = e2.startedge; e2.startedge; else else e2 e2 = e2.endedge; e2.endedge; } while(e2 while(e2!=!= e); e); } 19

Voronoi-Diagramm Konstruktion Gegeben Eine Menge P von N Punkten in der Ebene Gesucht Das Voronoi-Diagramm VD(P) für P, als doppelt verkettete Kantenliste T K Falls P = 1 VD(P) ist die gesamte Ebene Ansonsten Divide Teile P durch eine vertikale Trennlinie T in zwei etwa gleich große Teilmengen P 1 (links von T) und P 2 (rechts von T) Conquer Berechne VD(P 1 ) und VD(P 2 ) rekursiv Merge Berechne den P 1 und P 2 trennenden Kantenzug K, der Teil von VD(P) ist Schneide den rechts von K liegenden Teil von VD(P 1 ) ab, sowie den links von K liegenden Teil von VD(P 2 ) Vereinige VD(P 1 ), VD(P 2 ) und K zu VD(P) 20

Voronoi-Diagramm Kantenzug K 1. Setze K = 2. Ermittle die beiden oberen Tangentialpunkte p 1 P 1 und p 2 P 2 3. Bestimme die Mittelsenkrechte m der Verbindungsstrecke von p 1 und p 2 4. Setze k = (x, ), so dass k auf m liegt 5. Schneide m mit den beiden unteren unendlichen Kanten in VR(p 1 ) und VR(p 2 ) 6. Wenn es keinen Schnitt gibt, füge (k, (x, )) als unendliche Kante in K ein, wobei (x, ) auf m liegt. Gib K zurück 7. Ansonsten füge (k, s) in K ein, wobei s der oberer Schnittpunkt ist 8. Setze k = s 9. Der zum oberen Schnitt gehörige Punkt p i (i = 1, 2) wird durch seinen an dieselbe Kante angrenzenden Nachbarn p i ersetzt 10. Bestimme die neue Mittelsenkrechte m der Verbindungsstrecke von p 1 und p 2 11. Fahre mit 5. fort p 1 p 2 21 m

Beispiel Kantenzug K a) c) b) 22

Beispiel Kantenzug K d) e) 23

Voronoi-Diagramm Aufwand Aufwand Sortieren der Punkte nach x-koordinaten: O(N log N) Aufteilen der sortierten Punkte auf zwei Hälften: O(1) Bestimmung von K: O(N) Zusammenführen von VD(P 1 ), VD(P 2 ) und K: O(N) Rekursion: 2 O(N / 2), log N mal O(N log N) Dichtestes Punkte Paar Konstruiere das Voronoi-Diagramm VD(P) der Punktmenge P: O(N log N) Durchlaufe alle Kanten und ermittle das Minimum der Distanz benachbarter Punkte sowie das Punktepaar, das diese Distanz hat: O(N) Alle nächsten Nachbarn Konstruiere das Voronoi-Diagramm VD(P) der Punktmenge P: O(N log N) Durchlaufe die Kantenliste für VD(P) so, dass der Reihe nach für jeden Punkt p alle Voronoi-Kanten von VR(p) betrachet werden. Dabei wird für jeden Punkt ein nächster Nachbar unter allen Punkten mit benachbarter Voronoi-Region ermittelt 24