Vorlesung 5 18. Mai 2000 Konstruktion des Voronoi-Diagramms II Geoinformation II 6. Sem. Vorlesung 5 18. Mai 2000 Konstruktion des Voronoi-Diagramms II
Divide and Conquer: Merge
Konstruktion des Voronoi-Diagramms „Divide and Conquer“ Input: Gegeben ist eine Menge P von mindestens 2 Punkten Split: Zerlege P in zwei etwa gleich große Teilmengen P1 und P2 Rekursiv: Berechne Voronoi-Diagramme von VD(P1) und VD(P2) Merge: Verknüpfe VD(P1) und VD(P2)
„Merge“ Die Voronoi-Diagramme VD(P1) und VD(P2) sind bereits berechnet. Die konvexen Hüllen CH(P1) und CH(P2) seien ebenfalls an dieser Stelle bekannt. 1. Bestimme die oberen und unteren Extrempunkte und die beiden oberen und unteren Tangenten von CH(P1) CH(P2) 2. Konstruiere CH(P1 P2) 3. Bilde die Mittelsenkrechten zu den beiden neu eingeführten Kanten 4. Konstruiere den trennenden Kantenzug als Verbindung der beiden Mittelsenkrechten 5. Entferne die überstehenden Kanten 6. Bilde die neu entstandenen Voronoi-Regionen (Maschen)
Extrempunkte von CH(P1) CH(P2) max y max y min y min y
Tangente von CH(P1) CH(P2)
Nochmals zur konvexen Hülle CH Was wissen wir über die „konvexe Hülle“ CH(P) einer Punktmenge P? Die Extrempunkte sind die Knoten auf der Grenze von CH. Zu je zwei Punkten P1 und P2 ist die verbindende Kante ganz in CH enthalten. Der obere und der untere Extrempunkt zerlegen die Grenze von CH in zwei vertikal monotone Kantenzüge. Die Verbindungskante k zweier Punkte P1 und P2 aus P definiert eine Randkante von CH genau dann, wenn alle übrigen Punkte von P auf der gleichen Seite von k liegen. P2 ist genau dann Nachfolger von P1 auf dem Rand von CH, wenn der zugehörige polare Winkel von P2 minimal ist.
Tangente
Nachfolger - Bestimmung P1 Winkel minimal P2
Nachfolger P1 Winkel minimal P2
Bestimmung der (oberen) Tangenten der konvexen Hüllen Bestimme die oberen und unteren Extrempunkte von CH(P1), CH(P2) und CH(P1) CH(P2) Betrachte die oberen Extrempunkte P1 und Q1 und die Nachfolger P2 und Q2 im Uhrzeigersinn, und sei P1 höher als Q1 Bestimme das Minimum der mit P1P2, P1Q1 und P1Q2 assoziierten Winkel Fälle: P1 Q1 ist minimal: Tangente gefunden, fertig P1 P2 minimal: ersetze P1 durch P2 und P2 durch P3 (wandere auf der linken konvexen Hülle im Uhrzeigersinn) P1 Q2 minimal: ersetze Q1 durch Q2 und Q2 durch Q3 (wandere auf der rechten konvexen Hülle im Uhrzeigersinn) Der Fall der unteren Tangente ist symmetrisch
Extrempunkte
2 vertikal monotone Kantenzüge
Tangente
Bestimmung des Nachfolgers Winkel nicht minimal
Bestimmung des Nachfolgers Winkel minimal
Bestimmung des Nachfolgers
Bestimmung des Nachfolgers
Konvexe Hülle
Bestimmung des Nachfolgers
Konvexe Hülle
Konstruiere den trennenden Kantenzug als Verbindung der beiden Mittelsenkrechten
Vereinigung Mittelsenkrechte bilden
Vereinigung
Vereinigung Aktive Voronoi-Diagramme Schnittpunkte mit Seg- menten suchen
Vereinigung Aktive Voronoi-Diagramme Schnittpunkte mit Seg- menten suchen Neues aktives VD
Vereinigung Aktive Voronoi-Diagramme Schnittpunkte mit Seg- menten suchen Neues aktives VD Mittelsenkrechte zuwischen den aktiven VD
Vereinigung Schnittpunkte suchen
Vereinigung Schnittpunkte suchen Neues aktives VD suchen
Vereinigung Schnittpunkte suchen Neues aktives VD suchen
Vereinigung Schnittpunkte suchen Neues aktives VD suchen Mittelsenkrechte der aktiven VD
Vereinigung Schnittpunkte suchen
Vereinigung Schnittpunkte suchen Neues aktives VD suchen
Vereinigung Schnittpunkte suchen Neues aktives VD suchen Mittelsenkrechte der aktiven VD
Vereinigung Nächsten relevanten Schnittpunkte suchen Neues aktives VD suchen
Vereinigung Nächsten relevanten Schnittpunkte suchen Neues aktives VD suchen Mittelsenkrechte der aktiven VD
Vereinigung Nächsten relevanten Schnittpunkte suchen Neues aktives VD suchen
Vereinigung Nächsten relevanten Schnittpunkte suchen Neues aktives VD suchen Mittelsenkrechte der aktiven VD
Vereinigung Nächsten relevanten Schnittpunkte suchen Neues aktives VD suchen
Vereinigung Nächsten relevanten Schnittpunkte suchen Neues aktives VD suchen Mittelsenkrechte der aktiven VD
Vereinigung Nächsten relevanten Schnittpunkte suchen Neues aktives VD suchen
Vereinigung Nächsten relevanten Schnittpunkte suchen Neues aktives VD suchen Mittelsenkrechte der aktiven VD
Vereinigung Nächsten relevanten Schnittpunkte suchen Neues aktives VD suchen
Vereinigung Nächsten relevanten Schnittpunkte suchen Neues aktives VD suchen Verknüpfung mit der Mittel- senkrechten vom Anfang
Konstruiere den trennenden Kantenzug als Verbindung der beiden Mittelsenkrechten gegeben: die beiden oberen und unteren Mittelsenkrechten g und g* die zugehörigen oberen Voronoi-Regionen seien P und Q Solange die untere Mittelsenkrechte noch nicht erreicht ist Bestimme für die aktuelle Mittelsenkrechte die Austrittspunkte p und q aus den aktuellen Voronoi-Regionen, die zugehörigen Kanten die zugehörigen Nachbarn P‘ und Q‘ wenn p höher ist als q ersetze P durch P‘ und schneide g an der Stelle p ab wenn q höher als p ersetze Q durch Q‘ und schneide g an der Stelle q ab bestimme die aktuelle Mittelsenkrechte g des neuen Paares P, Q
Länge des Kantenzuges im Worst Case O(n)
Größenordnung des Kanten-Umrings im worst case O(n)
war jetzt alles umsonst? O(n) * O(n) = O(n2) ? war jetzt alles umsonst? Kantenzug ist monoton Voronoi-Regionen sind konvex
Keine Kante öfter als zwei mal anfassen! O(n) * O(n) = O(n2) ? Keine Kante öfter als zwei mal anfassen! Voronoi-Regionen sind konvex Kantenzug ist monoton
„Investitionen müssen sich amortisieren“ Ziel: keine Kante mehr als zwei mal „anfassen“ Es gibt insgesamt höchstens 3* n – 6 Kanten O(n) Konvexität der Voronoi-Regionen höchstens zwei Schnittpunkte mit der aktiven Halbgeraden Es genügt, die linken (grünen) Kantenumringe im Uhrzeigersinn und die rechten (roten) Kantenumringe gegen den Uhrzeigersinn zu durchlaufen und den zuletzt gefundenen und verworfenen Schnittpunkt als Haltepunkt zu merken!