Voronoi Diagrams. Christian Wellenbrock. December 1, 2009

Ähnliche Dokumente
Geradenarrangements und Dualität von Punkten und Geraden

2.7.1 Inside-Test Konvexe Hülle Nachbarschaften Schnittprobleme

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

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

Geometrische Algorithmen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

Informatik II, SS 2014

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

Sortierte Folgen 250

Punkt-in-Polygon-Suche Übersicht

Vorlesung Datenstrukturen

Informatik II Vorlesung am D-BAUG der ETH Zürich

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

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Informatik II, SS 2014

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

Vorlesung Algorithmische Geometrie Konvexe Hülle im R 3

Polygontriangulierung

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

14. Rot-Schwarz-Bäume

Grundlagen: Algorithmen und Datenstrukturen

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

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

6. Algorithmen der Computer-Geometrie

Algorithmen und Datenstrukturen Suchbaum

Definition 15 Rot-Schwarz-Bäume sind externe Binärbäume (jeder Knoten hat 0 oder 2 Kinder) mit roten und schwarzen Kanten, so dass gilt:

SS 2005 FAU Erlangen Eine Wegeplanungs-Strategie. Jeremy Constantin, Michael Horn, Björn Gmeiner

\ 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.

Customization (Zuschneiden)

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

6. Übung zur Linearen Optimierung SS08

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

Klausur Algorithmen und Datenstrukturen

8 Diskrete Optimierung

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

Informatik II, SS 2014

13. Bäume: effektives Suchen und Sortieren

Datenstrukturen & Algorithmen

11. Elementare Datenstrukturen

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

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

Kombinatorische Optimierung

In diesem Kapitel behandeln wir erste Algorithmen mit dynamischen Strukturen, wie Bäume und Graphen. 1. Bäume Grundlagen...

Algorithmen II Vorlesung am

Geometrie 1. Christian Bay Christian Bay Geometrie / 46

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

8. Übung zu Algorithmen I 15. Juni 2016

Triangulierung von einfachen Polygonen

Informatik II, SS 2014

Priority search queues: Loser trees

Suchen und Sortieren Sortieren. Heaps

Quicksort ist ein Divide-and-Conquer-Verfahren.

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Effiziente Algorithmen Übung 2

12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete.

8 Graphrepräsentation

Minimal spannende Bäume

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

Informatik I 2. Kapitel. Elementare Datenstrukturen. Datenstrukturen. Datenstrukturen. Rainer Schrader. 28. Mai 2008

Felix Brandt, Jan Johannsen. Vorlesung im Wintersemester 2008/09

Minimal spannender Baum

13. Binäre Suchbäume

Isomorphie von Bäumen

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

Diskrete Mathematik. Sebastian Iwanowski FH Wedel. Kap. 6: Graphentheorie

Dynamische Mengen. Realisierungen durch Bäume

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

3. Übungsblatt zu Algorithmen I im SoSe 2017

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 10, Donnerstag 8.

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

Zweizusammenhang und starker Zusammenhang

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

Lokalisierung von inneren und äußeren Grenzen in Sensornetzwerken

Datenstrukturen. einfach verkettete Liste

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Abschnitt: Algorithmendesign und Laufzeitanalyse

Das Briefträgerproblem

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

Termine für Übungstests. Kap. 3 Sortieren HeapSort ff Priority Queues. Motivation. Überblick. Analyse SiftDown

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 13 (Queues, Binary Search)

Lineares Programmieren

Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig

Voronoi Diagramme und Delaunay Triangulation

Vorlesung 2 KÜRZESTE WEGE

Algorithmen & Komplexität

4 Greedy-Algorithmen (gierige Algorithmen)

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

Algorithmen für schwierige Probleme


Kapitel 9 Suchalgorithmen

x x y x y Informatik II Schaltkreise Schaltkreise Schaltkreise Rainer Schrader 3. November 2008

Transkript:

December 1, 2009

Das Voronoi Diagramm Problemstellung Gegeben: Menge der Zentren P = {p 1,..., p n } R 2

Das Voronoi Diagramm Problemstellung Gegeben: Menge der Zentren P = {p 1,..., p n } R 2 Gesucht: Partitionierung Vor(P) von R 2, die jedem q R 2 das euklidisch nächste Zentrum p i zuordnet

Warum Voronoi-Diagramme?

Warum Voronoi-Diagramme?

Warum Voronoi-Diagramme?

Warum Voronoi-Diagramme?

Einstieg Definitionen Voronoi-Region von p P: V (p) = {q R 2 : p P\{p} : dist(q, p) < dist(q, p )}

Einstieg Definitionen Voronoi-Region von p P: V (p) = {q R 2 : p P\{p} : dist(q, p) < dist(q, p )} Halbebene von p P bezüglich p P: h(p, p ) = {q R 2 : dist(q, p) < dist(q, p )}

Einstieg Definitionen Voronoi-Region von p P: V (p) = {q R 2 : p P\{p} : dist(q, p) < dist(q, p )} Halbebene von p P bezüglich p P: h(p, p ) = {q R 2 : dist(q, p) < dist(q, p )} Folgerung V (p) = h(p, p ) p P\{p}

Struktur von Voronoi Diagrammen Satz Ist P kollinear, so besteht Vor(P) aus n 1 parallelen Geraden. Andernfalls ist Vor(P) zusammenhängend und besteht aus Strecken und Geraden.

Struktur von Voronoi Diagrammen Satz Ist P kollinear, so besteht Vor(P) aus n 1 parallelen Geraden. Andernfalls ist Vor(P) zusammenhängend und besteht aus Strecken und Geraden.

Komplexität Es gibt n Voronoi-Regionen mit jeweils höchstens n 1 Ecken und n 1 Kanten. Die Komplexität des Voronoi Diagramms liegt somit in O(n 2 )

Komplexität Es gibt n Voronoi-Regionen mit jeweils höchstens n 1 Ecken und n 1 Kanten. Die Komplexität des Voronoi Diagramms liegt somit in O(n 2 ) Satz Die Anzahl der Knoten und Kanten eines Voronoi Diagramms liegt in O(n).

Komplexität Es gibt n Voronoi-Regionen mit jeweils höchstens n 1 Ecken und n 1 Kanten. Die Komplexität des Voronoi Diagramms liegt somit in O(n 2 ) Satz Die Anzahl der Knoten und Kanten eines Voronoi Diagramms liegt in O(n). Beweis Klar falls P kollinear.

Komplexität Es gibt n Voronoi-Regionen mit jeweils höchstens n 1 Ecken und n 1 Kanten. Die Komplexität des Voronoi Diagramms liegt somit in O(n 2 ) Satz Die Anzahl der Knoten und Kanten eines Voronoi Diagramms liegt in O(n). Beweis Klar falls P kollinear. Ansonsten: Verbinde alle Halbgeraden mit neuem Punkt p

Komplexität Es gibt n Voronoi-Regionen mit jeweils höchstens n 1 Ecken und n 1 Kanten. Die Komplexität des Voronoi Diagramms liegt somit in O(n 2 ) Satz Die Anzahl der Knoten und Kanten eines Voronoi Diagramms liegt in O(n). Beweis Klar falls P kollinear. Ansonsten: Verbinde alle Halbgeraden mit neuem Punkt p Verwende Eulerschen Polyedersatz auf dem entstandenen Graphen: (e + 1) + n k = 2

Komplexität Es gibt n Voronoi-Regionen mit jeweils höchstens n 1 Ecken und n 1 Kanten. Die Komplexität des Voronoi Diagramms liegt somit in O(n 2 ) Satz Die Anzahl der Knoten und Kanten eines Voronoi Diagramms liegt in O(n). Beweis Klar falls P kollinear. Ansonsten: Verbinde alle Halbgeraden mit neuem Punkt p Verwende Eulerschen Polyedersatz auf dem entstandenen Graphen: (e + 1) + n k = 2 Summiere Grade aller Knoten: 2k 3(e + 1)

Komplexität Es gibt n Voronoi-Regionen mit jeweils höchstens n 1 Ecken und n 1 Kanten. Die Komplexität des Voronoi Diagramms liegt somit in O(n 2 ) Satz Die Anzahl der Knoten und Kanten eines Voronoi Diagramms liegt in O(n). Beweis Klar falls P kollinear. Ansonsten: Verbinde alle Halbgeraden mit neuem Punkt p Verwende Eulerschen Polyedersatz auf dem entstandenen Graphen: (e + 1) + n k = 2 Summiere Grade aller Knoten: 2k 3(e + 1) Einsetzen liefert e 2n + 5 und k 3n 6

Charakterisierung Definition Zu q R 2 sei C P (q) der größte offene Kreis um q, der kein p P enthält.

Charakterisierung Definition Zu q R 2 sei C P (q) der größte offene Kreis um q, der kein p P enthält.

Charakterisierung Definition Zu q R 2 sei C P (q) der größte offene Kreis um q, der kein p P enthält. Satz q R 2 ist Knoten von Vor(P) P C P (q) 3

Charakterisierung Definition Zu q R 2 sei C P (q) der größte offene Kreis um q, der kein p P enthält. Satz q R 2 ist Knoten von Vor(P) P C P (q) 3 q R 2 liegt auf Kante von Vor(P) P C P (q) = 2

Berechnung des Voronoi-Diagramms Naiver Ansatz Berechne jede Voronoi-Region V (p) als Schnitt der Halbebenen h(p, p ) für p P\{p}.

Berechnung des Voronoi-Diagramms Naiver Ansatz Berechne jede Voronoi-Region V (p) als Schnitt der Halbebenen h(p, p ) für p P\{p}. Laufzeit pro Region O(n log n)

Berechnung des Voronoi-Diagramms Naiver Ansatz Berechne jede Voronoi-Region V (p) als Schnitt der Halbebenen h(p, p ) für p P\{p}. Laufzeit pro Region O(n log n) Gesamtlaufzeit in O(n 2 log n)

Fortune s Algorithm Wir betrachten einen Sweep-Line-Algorithmus mit Laufzeit in O(n log n).

Fortune s Algorithm Wir betrachten einen Sweep-Line-Algorithmus mit Laufzeit in O(n log n). Sweep-Line Prinzip Schiebe vertikale Gerade l von links nach rechts über Ebene

Fortune s Algorithm Wir betrachten einen Sweep-Line-Algorithmus mit Laufzeit in O(n log n). Sweep-Line Prinzip Schiebe vertikale Gerade l von links nach rechts über Ebene Konstruiere unterwegs die gesuchte Lösung

Fortune s Algorithm Wir betrachten einen Sweep-Line-Algorithmus mit Laufzeit in O(n log n). Sweep-Line Prinzip Schiebe vertikale Gerade l von links nach rechts über Ebene Konstruiere unterwegs die gesuchte Lösung Betrachte dazu den Schnitt der Geraden l mit der Lösung

Fortune s Algorithm Wir betrachten einen Sweep-Line-Algorithmus mit Laufzeit in O(n log n). Sweep-Line Prinzip Schiebe vertikale Gerade l von links nach rechts über Ebene Konstruiere unterwegs die gesuchte Lösung Betrachte dazu den Schnitt der Geraden l mit der Lösung Dies ist hier nicht möglich: Das Voronoi Diagramm links von l hängt auch von Zentren rechts von l ab!

Fortune s Algorithm Dies ist hier nicht möglich: Das Voronoi Diagramm links von l hängt auch von Zentren rechts von l ab!

Fortune s Algorithm Dies ist hier nicht möglich: Das Voronoi Diagramm links von l hängt auch von Zentren rechts von l ab!

Welcher Teil des Voronoi-Diagramms ist bekannt? Für welche q R 2 links von l kennen wir bereits das nächste Zentrum p P?

Welcher Teil des Voronoi-Diagramms ist bekannt? Für welche q R 2 links von l kennen wir bereits das nächste Zentrum p P? Für p P rechts von l gilt dist(q, p ) dist(q, l)

Welcher Teil des Voronoi-Diagramms ist bekannt? Für welche q R 2 links von l kennen wir bereits das nächste Zentrum p P? Für p P rechts von l gilt dist(q, p ) dist(q, l) Aus dist(q, p) < dist(q, l) folgt somit dist(q, p) < dist(q, p )

Welcher Teil des Voronoi-Diagramms ist bekannt? Für welche q R 2 links von l kennen wir bereits das nächste Zentrum p P? Für p P rechts von l gilt dist(q, p ) dist(q, l) Aus dist(q, p) < dist(q, l) folgt somit dist(q, p) < dist(q, p ) Für jedes p P ist das Voronoi-Diagramm bekannt in {q R 2 : dist(q, p) < dist(q, l)}

Welcher Teil des Voronoi-Diagramms ist bekannt? Für welche q R 2 links von l kennen wir bereits das nächste Zentrum p P? Insgesamt ist das Voronoi-Diagramm somit bekannt in G = p P{q R 2 : dist(q, p) < dist(q, l)}

Welcher Teil des Voronoi-Diagramms ist bekannt? Für welche q R 2 links von l kennen wir bereits das nächste Zentrum p P? G heißt Beach-Line und besteht aus parabolischen Bögen

Welcher Teil des Voronoi-Diagramms ist bekannt? Für welche q R 2 links von l kennen wir bereits das nächste Zentrum p P? G heißt Beach-Line und besteht aus parabolischen Bögen Die Schnittpunkte dieser Bögen zeichnen die Voronoi-Kanten

Wann ändert sich die Struktur der Beach-Line? Site Event l erreicht Zentrum p P

Wann ändert sich die Struktur der Beach-Line? Site Event l erreicht Zentrum p P Ein Punkt auf der Beach-Line ist von p genau so weit entfernt wie vom zugehorigen Zentrum

Wann ändert sich die Struktur der Beach-Line? Site Event l erreicht Zentrum p P Ein Punkt auf der Beach-Line ist von p genau so weit entfernt wie vom zugehorigen Zentrum Neuer Bogen entsteht

Wann ändert sich die Struktur der Beach-Line? Site Event l erreicht Zentrum p P Ein Punkt auf der Beach-Line ist von p genau so weit entfernt wie vom zugehorigen Zentrum Neuer Bogen entsteht Dieser teilt höchstens einen alten Bogen in zwei Teile = Beach-Line besteht aus höchstens 2n 1 Bögen

Wann ändert sich die Struktur der Beach-Line? Site Event l erreicht Zentrum p P Ein Punkt auf der Beach-Line ist von p genau so weit entfernt wie vom zugehorigen Zentrum Neuer Bogen entsteht Dieser teilt höchstens einen alten Bogen in zwei Teile = Beach-Line besteht aus höchstens 2n 1 Bögen Circle Event Ein Bogen zieht sich zu einem Punkt zusammen

Wann ändert sich die Struktur der Beach-Line? Site Event l erreicht Zentrum p P Ein Punkt auf der Beach-Line ist von p genau so weit entfernt wie vom zugehorigen Zentrum Neuer Bogen entsteht Dieser teilt höchstens einen alten Bogen in zwei Teile = Beach-Line besteht aus höchstens 2n 1 Bögen Circle Event Ein Bogen zieht sich zu einem Punkt zusammen Ein Punkt auf der Beach-Line ist von mindestens drei Zentren genau so weit entfernt wie von l

Wann ändert sich die Struktur der Beach-Line? Site Event l erreicht Zentrum p P Ein Punkt auf der Beach-Line ist von p genau so weit entfernt wie vom zugehorigen Zentrum Neuer Bogen entsteht Dieser teilt höchstens einen alten Bogen in zwei Teile = Beach-Line besteht aus höchstens 2n 1 Bögen Circle Event Ein Bogen zieht sich zu einem Punkt zusammen Ein Punkt auf der Beach-Line ist von mindestens drei Zentren genau so weit entfernt wie von l Dieser Punkt ist Voronoi-Knoten

Datenstrukturen Was brauchen wir? Repräsentation des bereits bekannten Voronoi-Diagramms

Datenstrukturen Was brauchen wir? Repräsentation des bereits bekannten Voronoi-Diagramms Event Queue für Site Events und Circle Events

Datenstrukturen Was brauchen wir? Repräsentation des bereits bekannten Voronoi-Diagramms Event Queue für Site Events und Circle Events Repräsentation der Beach-Line

Datenstrukturen Was brauchen wir? Repräsentation des bereits bekannten Voronoi-Diagramms Event Queue für Site Events und Circle Events Repräsentation der Beach-Line Voronoi-Diagramm Doppelt verkettete Kantenliste D

Datenstrukturen Was brauchen wir? Repräsentation des bereits bekannten Voronoi-Diagramms Event Queue für Site Events und Circle Events Repräsentation der Beach-Line Voronoi-Diagramm Doppelt verkettete Kantenliste D Füge genügend große Bounding Box hinzu = alle Kanten werden endlich

Beach Line als balancierter binärer Baum T Blätter Repräsentieren Bögen

Beach Line als balancierter binärer Baum T Blätter Repräsentieren Bögen Speichern zugehöriges Zentrum

Beach Line als balancierter binärer Baum T Blätter Repräsentieren Bögen Speichern zugehöriges Zentrum Pointer auf zugehöriges Circle Event in der Event Queue

Beach Line als balancierter binärer Baum T Blätter Repräsentieren Bögen Speichern zugehöriges Zentrum Pointer auf zugehöriges Circle Event in der Event Queue Innere Knoten Repräsentieren Schnittpunkte der Beach Line

Beach Line als balancierter binärer Baum T Blätter Repräsentieren Bögen Speichern zugehöriges Zentrum Pointer auf zugehöriges Circle Event in der Event Queue Innere Knoten Repräsentieren Schnittpunkte der Beach Line Speichern zu linkem und rechtem Bogen gehörende Zentren

Beach Line als balancierter binärer Baum T Blätter Repräsentieren Bögen Speichern zugehöriges Zentrum Pointer auf zugehöriges Circle Event in der Event Queue Innere Knoten Repräsentieren Schnittpunkte der Beach Line Speichern zu linkem und rechtem Bogen gehörende Zentren Damit kann bei Site Events der zugehöriger Bogen in O(log n) gefunden werden

Beach Line als balancierter binärer Baum T Blätter Repräsentieren Bögen Speichern zugehöriges Zentrum Pointer auf zugehöriges Circle Event in der Event Queue Innere Knoten Repräsentieren Schnittpunkte der Beach Line Speichern zu linkem und rechtem Bogen gehörende Zentren Damit kann bei Site Events der zugehöriger Bogen in O(log n) gefunden werden Pointer auf Kante in Kantenliste die dieser Schnittpunkt zeichnet

Event Queue Prioritätswarteschlange Q Priorisiert nach x-koordinate

Event Queue Prioritätswarteschlange Q Priorisiert nach x-koordinate Enthält die bereits bekannten zukünftigen Ereignisse

Event Queue Prioritätswarteschlange Q Priorisiert nach x-koordinate Enthält die bereits bekannten zukünftigen Ereignisse Site Event Position des neuen Zentrums

Event Queue Prioritätswarteschlange Q Priorisiert nach x-koordinate Enthält die bereits bekannten zukünftigen Ereignisse Site Event Position des neuen Zentrums Circle Event rechtester Punkt des Kreises enthält Pointer auf Blatt in T, das verschwindenden Bogen repräsentiert

Circle Events Alle Site Events sind von Anfang an bekannt

Circle Events Alle Site Events sind von Anfang an bekannt Die Circle Events jedoch nicht

Circle Events Alle Site Events sind von Anfang an bekannt Die Circle Events jedoch nicht Bei jedem Event entstehen neue Tripel benachbarter Bögen und alte verschwinden

Circle Events Alle Site Events sind von Anfang an bekannt Die Circle Events jedoch nicht Bei jedem Event entstehen neue Tripel benachbarter Bögen und alte verschwinden Der Algorithmus muss die zugehörigen Circle Events verwalten

Circle Events Alle Site Events sind von Anfang an bekannt Die Circle Events jedoch nicht Bei jedem Event entstehen neue Tripel benachbarter Bögen und alte verschwinden Der Algorithmus muss die zugehörigen Circle Events verwalten Nicht jedes Tripel führt zu einem Circle Event!

Circle Events Alle Site Events sind von Anfang an bekannt Die Circle Events jedoch nicht Bei jedem Event entstehen neue Tripel benachbarter Bögen und alte verschwinden Der Algorithmus muss die zugehörigen Circle Events verwalten Nicht jedes Tripel führt zu einem Circle Event! Schnittpunkte müssen nicht zusammenlaufen

Circle Events Alle Site Events sind von Anfang an bekannt Die Circle Events jedoch nicht Bei jedem Event entstehen neue Tripel benachbarter Bögen und alte verschwinden Der Algorithmus muss die zugehörigen Circle Events verwalten Nicht jedes Tripel führt zu einem Circle Event! Schnittpunkte müssen nicht zusammenlaufen Tripel kann vor Circle Event verschwinden

Circle Events Ablauf bei jedem Event Teste für jedes neue Tripel benachbarter Bögen ob deren Schnittpunkte zusammenlaufen. Füge gegebenenfalls ein Circle Event in Q ein.

Circle Events Ablauf bei jedem Event Teste für jedes neue Tripel benachbarter Bögen ob deren Schnittpunkte zusammenlaufen. Füge gegebenenfalls ein Circle Event in Q ein. Prüfe für jedes verschwindende Tripel ob ein entsprechendes Circle Event in Q existiert. Lösche dieses gegebenenfalls.

Circle Events Ablauf bei jedem Event Teste für jedes neue Tripel benachbarter Bögen ob deren Schnittpunkte zusammenlaufen. Füge gegebenenfalls ein Circle Event in Q ein. Prüfe für jedes verschwindende Tripel ob ein entsprechendes Circle Event in Q existiert. Lösche dieses gegebenenfalls. Satz Jeder Voronoi-Knoten wird durch ein Circle-Event gefunden.

Algorithmus 1 2 3 4 5 6 7 8 9 Algorithm 1: VoronoiDiagram(P) Initialize Q with all site events, initialize an empty tree T and an empty edge list D while Q is not empty do Remove the event with smallest x-coordinate from Q if the event is a site event, occuring at site p i then HandleSiteEvent(p i ) else HandleCircleEvent(γ), where γ is the leaf of T representing the arc that will disappear Compute a bounding box that contains all vertices of the Voronoi diagram and attach the half-infinite edges to the bounding box by updating the edge list D appropriately Return D

Algorithmus 1 2 3 4 5 Algorithm 2: HandleSiteEvent(p i ) If T is empty, insert p i and return. Otherwise continue Search in T for the arc α left of p i. If the leaf representing α has a pointer to a circle event in Q, deleted it from Q. Replace the leaf of T that represents α with a subtree having three leaves. The middle leaf stores the new site p i and the other two leaves store the site p j that was originally stored with α. Store the tuples (p j, p i ) and (p i, p j ) representing the new breakpoints at the two new internal nodes. Create new half-edge records in the Voronoi diagram structure for the edge separating V (p i ) and V (p j ), which will be traced out by the two new breakpoints. Check the new triples of consecutive arcs to see if the breakpoints converge. If so, insert the circle events into Q and add pointers between the node in T and the node in Q.

Algorithmus 1 2 3 Algorithm 3: HandleCircleEvent(γ) Delete the leaf γ that represents the disappearing arc α from T. Update the breakpoints at the internal nodes. Delete all circle events involving α from Q. Add the center of the circle causing the event as a vertex to the doubly-connected edge list D. Create a new half-edge corresponding to the new breakpoint of the beach line. Attach both to the half-edges that end at the vertex. Check the new triples of consecutive arcs to see if the two breakpoints of the triple converge. If so, insert the corresponding circle event into Q and set pointers between the new circle event in Q and the corresponding leaf of T.

Degenierte Fälle Beispiele Zwei Site Events mit gleicher x-koordinate

Degenierte Fälle Beispiele Zwei Site Events mit gleicher x-koordinate Zusammenfallende Circle Events

Degenierte Fälle Beispiele Zwei Site Events mit gleicher x-koordinate Zusammenfallende Circle Events Site Event rechts von Schnittpunkt der Beach-Line

Degenierte Fälle Beispiele Zwei Site Events mit gleicher x-koordinate Zusammenfallende Circle Events Site Event rechts von Schnittpunkt der Beach-Line Degenerierte Fälle werden korrekt behandelt

Auswertung Laufzeit Baum- und Queue-Operationen in O(log n)

Auswertung Laufzeit Baum- und Queue-Operationen in O(log n) Listenoperationen in O(1)

Auswertung Laufzeit Baum- und Queue-Operationen in O(log n) Listenoperationen in O(1) Pro Event konstante Anzahl solcher Operationen

Auswertung Laufzeit Baum- und Queue-Operationen in O(log n) Listenoperationen in O(1) Pro Event konstante Anzahl solcher Operationen = Laufzeit pro Event in O(log n)

Auswertung Laufzeit Baum- und Queue-Operationen in O(log n) Listenoperationen in O(1) Pro Event konstante Anzahl solcher Operationen = Laufzeit pro Event in O(log n) Ein Site Event pro Zentrum

Auswertung Laufzeit Baum- und Queue-Operationen in O(log n) Listenoperationen in O(1) Pro Event konstante Anzahl solcher Operationen = Laufzeit pro Event in O(log n) Ein Site Event pro Zentrum = n Site Events

Auswertung Laufzeit Baum- und Queue-Operationen in O(log n) Listenoperationen in O(1) Pro Event konstante Anzahl solcher Operationen = Laufzeit pro Event in O(log n) Ein Site Event pro Zentrum = n Site Events Ein Circle Event pro Voronoi-Knoten

Auswertung Laufzeit Baum- und Queue-Operationen in O(log n) Listenoperationen in O(1) Pro Event konstante Anzahl solcher Operationen = Laufzeit pro Event in O(log n) Ein Site Event pro Zentrum = n Site Events Ein Circle Event pro Voronoi-Knoten = k O(n) Circle Events

Auswertung Laufzeit Baum- und Queue-Operationen in O(log n) Listenoperationen in O(1) Pro Event konstante Anzahl solcher Operationen = Laufzeit pro Event in O(log n) Ein Site Event pro Zentrum = n Site Events Ein Circle Event pro Voronoi-Knoten = k O(n) Circle Events = Gesamtanzahl der Events in O(n)

Auswertung Laufzeit Baum- und Queue-Operationen in O(log n) Listenoperationen in O(1) Pro Event konstante Anzahl solcher Operationen = Laufzeit pro Event in O(log n) Ein Site Event pro Zentrum = n Site Events Ein Circle Event pro Voronoi-Knoten = k O(n) Circle Events = Gesamtanzahl der Events in O(n) = Gesamtlaufzeit in O(n log n)

Hauptergebnis Satz Das Voronoi-Diagramm lässt sich in O(n log n) berechnen.

Hauptergebnis Satz Das Voronoi-Diagramm lässt sich in O(n log n) berechnen. Geht es besser?

Hauptergebnis Satz Das Voronoi-Diagramm lässt sich in O(n log n) berechnen. Geht es besser? n Zahlen lassen sich mit einem Voronoi-Diagramm sortieren

Hauptergebnis Satz Das Voronoi-Diagramm lässt sich in O(n log n) berechnen. Geht es besser? n Zahlen lassen sich mit einem Voronoi-Diagramm sortieren Berechnung des Voronoi-Diagramms in Ω(n log n)

Hauptergebnis Satz Das Voronoi-Diagramm lässt sich in O(n log n) berechnen. Geht es besser? n Zahlen lassen sich mit einem Voronoi-Diagramm sortieren Berechnung des Voronoi-Diagramms in Ω(n log n) Fortune s Algorithmus ist optimal!

Voronoi Diagramme von Strecken Statt Punkten P = {p 1,..., p n } betrachten wir jetzt Strecken S = {s 1,..., s n } als Zentren der Voronoi-Regionen.

Voronoi Diagramme von Strecken Statt Punkten P = {p 1,..., p n } betrachten wir jetzt Strecken S = {s 1,..., s n } als Zentren der Voronoi-Regionen.

Voronoi Diagramme von Strecken Statt Punkten P = {p 1,..., p n } betrachten wir jetzt Strecken S = {s 1,..., s n } als Zentren der Voronoi-Regionen. Definition Für q R 2 definiere den Abstand dist(q, s) zu s S als dist(q, s) = min p s dist(q, p)

Voronoi Diagramme von Strecken Statt Punkten P = {p 1,..., p n } betrachten wir jetzt Strecken S = {s 1,..., s n } als Zentren der Voronoi-Regionen. Definition Für q R 2 definiere den Abstand dist(q, s) zu s S als dist(q, s) = min p s dist(q, p)

Voronoi Diagramme von Strecken Statt Punkten P = {p 1,..., p n } betrachten wir jetzt Strecken S = {s 1,..., s n } als Zentren der Voronoi-Regionen. Definition Für q R 2 definiere den Abstand dist(q, s) zu s S als dist(q, s) = min p s dist(q, p) Bisektoren zweier Zentren bestehen nun aus bis zu 7 Teilen, die jeweils entweder eine Strecke oder ein parabolischer Bogen sind.

Voronoi Diagramme von Strecken Statt Punkten P = {p 1,..., p n } betrachten wir jetzt Strecken S = {s 1,..., s n } als Zentren der Voronoi-Regionen. Definition Für q R 2 definiere den Abstand dist(q, s) zu s S als dist(q, s) = min p s dist(q, p) Bisektoren zweier Zentren bestehen nun aus bis zu 7 Teilen, die jeweils entweder eine Strecke oder ein parabolischer Bogen sind. Die Komplexität des Voronoi-Diagramms ist weiterhin in O(n).

Beach-Line Zur Konstruktion der Beach-Line betrachten wir weiterhin nur den Teil von S, der links von l liegt. Sie besteht nun aus Strecken und parabolischen Bögen.

Beach-Line Zur Konstruktion der Beach-Line betrachten wir weiterhin nur den Teil von S, der links von l liegt. Sie besteht nun aus Strecken und parabolischen Bögen. verschiedene Rollen der Schnittpunkte Ein Schnittpunkt fährt eine Voronoi-Kante ab Die zugehörigen Teile der Beach-Line gehören zu unterschiedlichen Strecken aus S

Beach-Line Zur Konstruktion der Beach-Line betrachten wir weiterhin nur den Teil von S, der links von l liegt. Sie besteht nun aus Strecken und parabolischen Bögen. verschiedene Rollen der Schnittpunkte Ein Schnittpunkt fährt eine Voronoi-Kante ab Die zugehörigen Teile der Beach-Line gehören zu unterschiedlichen Strecken aus S unterschiedliches Verhalten der Schnittpunkte Ein Schnittpunkt fährt eine Parabel ab Ein Teil gehört zu einem Endpunkt einer Strecke und der andere zum Inneren einer anderen Strecke

Event Queue Site Events Startpunkte teilen ein Stück der Beach-Line in zwei Teile und fügen vier weitere hinzu

Event Queue Site Events Startpunkte teilen ein Stück der Beach-Line in zwei Teile und fügen vier weitere hinzu Endpunkte ersetzen einen Schnittpunkt der Beach-Line durch parabolischen Bogen

Event Queue Site Events Startpunkte teilen ein Stück der Beach-Line in zwei Teile und fügen vier weitere hinzu Endpunkte ersetzen einen Schnittpunkt der Beach-Line durch parabolischen Bogen Circle Events Signalisieren das Verschwinden eines Teils der Beach-Line

Event Queue Site Events Startpunkte teilen ein Stück der Beach-Line in zwei Teile und fügen vier weitere hinzu Endpunkte ersetzen einen Schnittpunkt der Beach-Line durch parabolischen Bogen Circle Events Signalisieren das Verschwinden eines Teils der Beach-Line Induzieren einen Voronoi-Knoten

Sweep-Line-Algorithmus Fortune s Algorithmus lässt sich erweitern Deutlich mehr Fallunterscheidungen

Sweep-Line-Algorithmus Fortune s Algorithmus lässt sich erweitern Deutlich mehr Fallunterscheidungen Laufzeit Pro Event in O(log n)

Sweep-Line-Algorithmus Fortune s Algorithmus lässt sich erweitern Deutlich mehr Fallunterscheidungen Laufzeit Pro Event in O(log n) Insgesamt O(n) Ereignisse

Sweep-Line-Algorithmus Fortune s Algorithmus lässt sich erweitern Deutlich mehr Fallunterscheidungen Laufzeit Pro Event in O(log n) Insgesamt O(n) Ereignisse = Gesamtlaufeit in O(n log n)

December 1, 2009