• Keine Ergebnisse gefunden

Geometrische Algorithmen  Voronoi-Diagramme

N/A
N/A
Protected

Academic year: 2022

Aktie "Geometrische Algorithmen  Voronoi-Diagramme"

Copied!
32
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Geometrische Algorithmen Voronoi-Diagramme

(2)

Voronoi-Diagramme Übersicht

l Problemstellung

l Animation zur Konstruktion eines Voronoi-Diagramms

l Definition, Eigenschaften eines Voronoi-Diagramms

l Konstruktion des Voronoi-Diagramms

¡ Divide and Conquer

¡ Aufwand

l Konstruktion des Trennenden Kantenzugs

¡ Eigenschaften

¡ Animation

¡ Datenstruktur

¡ Worst Case

l Pseudocode: "Divide and Conquer", "Merge", "Tangente"

(3)

Problemstellung Welche Blume schnappt den Falter?

(4)

Problemstellung Anwendungen

l Kollisionsproblem: Welche 2 Punkte haben den kleinsten Abstand (Roboter, Flugzeuge, ...)

l Standortsuche: Wo wird die neue Filiale platziert...

l Filialenschließungsproblem: welches Paar von Filialen macht sich gegenseitig die größte Konkurrenz ...

l Postamts-Problem: wo liegt das nächste Postamt (Krankenhaus, ...)

l Einzugs- und Einflussgebiete von Versorgungsstationen (und ihre Größe)

l Bewertung von Standorten

l Modellierung von Nähe

l Delaunay-Triangulation

l Konvexe Hülle

(5)

Lösung Konstruktion eines Voronoi-Diagramms

Interaktive Animation zum Voronoi-Diagramm

Quelle: FernUniversität Hagen

http://wwwpi6.fernuni-hagen.de/Geometrie-Labor/VoroGlide/

(6)

Lösung Definition des Voronoi-Diagramms

Gegeben ist eine Menge M von n Punkten in der Ebene.

Das Voronoi-Diagramm der Punktmenge zerlegt die Ebene in n disjunkte Gebiete (Voronoi-Regionen).

Die Voronoi-Region eines Punktes p enthält genau einen der Punkte aus M sowie alle Punkte q, die näher an p als an jedem anderen Punkt p‘ liegen

("Gebiete gleicher nächster Nachbarn").

(7)

Lösung Bezeichnungen im Voronoi-Diagramm

(8)

Lösung Konvexe Menge, Konvexe Hülle

Konvexe Menge

Eine Menge P von Punkten ist konvex, wenn zu jedem Punktepaar p und q auch die verbindende Strecke pq ganz in P enthalten ist.

Konvexe Hülle

Die konvexe Hülle CH(P) einer

Punktemenge P ist die kleinste konvexe Menge, die alle Punkte aus P enthält.

(9)

Lösung Eigenschaften von Voronoi-Diagrammen

Vereinfachende Annahme: Aus der gegebenen Punktmenge M liegen keine 4 Elemente auf einem gemeinsamen Kreis.

In jedem Voronoi-Knoten treffen sich genau drei Kanten.

Das Voronoi-Diagramm von n Punkten hat höchstens 2n – 5 Knoten und 3n – 6 Kanten (linear!).

Die Knoten mit unbeschränkten Regionen bilden die konvexe Hülle.

Der „Duale Graph“, bei dem benachbarte Punkte miteinander verbunden werden, bildet eine >>Delaunay-Triangulation.

(10)

Exkurs Delaunay-Triangulation

Für Punktmengen gibt es verschiedene Triangulationen, die alle dieselbe Anzahl von Dreiecken enthalten.

Die Delaunay-Triangulation ist die

Triangulation, bei der in jedem Dreieck der kleinste Winkel maximal wird.

Falls z.B. kleine Winkel unerwünscht sind (Numerik!), ist die Delaunay-

Triangulation optimal.

Anwendungsbeispiel: Ausgangssituation für die Interpolation von Isolinien

(11)

Vorgehen Konstruktion des Voronoi-Diagramms

(12)

Konstruktion Divide and Conquer

5x

(13)

Konstruktion Betrachtung der Teilschritte

Input Sortiere aufsteigend nach x-Koordinate

Split

l Bestimme den Median

l Zerlege in annähernd gleich große Teilmengen links und rechts des Medians Merge

l Konstruktion des trennenden Kantenzuges

l Abschneiden überflüssiger Kanten

l Bildung der Voronoi-Regionen (wie bei Overlay-Algorithmus)

Einfachster Fall von Merge: Die Teilmengen enthalten je einen Punkt.

Der trennende Kantenzug ist die Mittelsenkrechte dieser Punkte

(14)

Konstruktion Aufwand

Der Zyklus ist log n - mal zu durchlaufen

Die gewünschte Laufzeit O(n * log n) wird erreicht, wenn „ Split“ and „ Merge“ nicht mehr als O(n) Schritte benötigen.

Was ist das schwierigste Teilproblem?

(15)

Konstruktion Schwierigstes Teilproblem

Einfach: Input Sortiere aufsteigend nach x-Koordinate

Einfach: Split

l Bestimme den Median

l Zerlege in annähernd gleich große Teilmengen links und rechts des Medians Schwierig: Merge

l Konstruktion des trennenden Kantenzuges

l Abschneiden überflüssiger Kanten

l Bildung der Voronoi-Regionen (wie bei Overlay-Algorithmus)

Einfachster Fall von Merge: Die Teilmengen enthalten je einen Punkt.

Der trennende Kantenzug ist die Mittelsenkrechte dieser Punkte

(16)

Vorgehen Konstruktion des trennenden Kantezugs

(17)

Trennender Kantenzug Eigenschaften

l monoton in Nord-Süd-Richtung

l jede Kante ist Grenze zwischen einer blauen und einer gelben Region

(Mittelsenkrechte)

l die nördlichsten und südlichsten Teilstücke sind unbeschränkt, also Halbgeraden

l die zugehörigen Punkte bilden dort unbeschränkte Voronoi-Regionen

l die Punkte liegen also jeweils auf der blauen bzw. gelben konvexen Hülle Problem: Wie werden diese Punkte gefunden?

(18)

Trennender Kantenzug Gemeinsame Tangente

l die gesuchten Punkte werden über die gemeinsame Tangente an die konvexen Hüllen CH(P1) und CH(P2) identifiziert (Bestimmung der

Tangente folgt später)

l konvexe Hülle der gesamten Punktmenge ergibt sich aus den

Teilstrukturen durch Einfügen zweier zusätzlicher Kanten

l konvexe Hülle ist Abfallprodukt der Erzeugung des Voronoi-Diagramms

l synchrone Herleitung beider Strukturen

(19)

Trennender Kantezug Animation

(20)

Voronoi-Diagramm Datenstruktur

Doppelt verkettete Kantenliste (wie bei Polygon-Overlay) Vorteile:

l Direkter Zugriff auf die benachbarten Maschen

l Durchlaufen des Kantenumrings in linearer Zeit

(21)

Trennender Kantenzug Aufwand

Wie lange dauert die Konstruktion des trennenden Kantenzuges? - Ziel war O(n)

Aufwand ist abhängig von:

l Zahl der Teilkanten / Knoten des Kantenzuges

l Zahl Berechnungen von Schnittpunkten mit den benachbarten Voronoi-Regionen

(22)

Trennender Kantenzug Länge im Worst Case

Länge des Kantenzuges: O(n)

(23)

Trennender Kantenzug Worst Case des Umrings

Größenordnung des Umrings: O(n)

(24)

Trennender Kantenzug Worste Case gesamt

O(n) * O(n) = O(n²)?

War jetzt alles umsonst?

Nutzung der Eigenschaften:

1. Voronoi-Regionen sind konvex

2. Der trennende Kantenzug ist monoton.

Lösung: Keine Kante öfter als zweimal anfassen.

(25)

Trennender Kantenzug Vermeidung des Worst Case

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 Kantenumringe im Uhrzeigersinn und die rechten

Kantenumringe gegen den Uhrzeigersinn zu durchlaufen und den zuletzt gefundenen und verworfenen Schnittpunkt als Haltepunkt zu merken!

(26)

Merge Zusammenfassung der Schritte

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 obere und untere Tangente von CH(P1) U CH(P2) 2. Konstruiere CH(P1 U 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)

(27)

Merge Bestimmen der oberen Tangente

(28)

Pseudocode Divide and Conquer

Input: Liste P mit mindestens 1 Punkt

Output: Voronoi-Diagramm der Punktmenge P

VoronoiDiagramm BaueVoro(Punktliste P)

if Anzahl der Punkte in P größer als 1

Divide: Zerlege P in zwei etwa gleich große Teillisten P1 und P2;

//Berechne rekursiv Voronoi-Diagramme von P1 und P2 VoronoiDiagramm VD1 = BaueVoro(P1);

VoronoiDiagramm VD2 = BaueVoro(P2);

Ergebnis = Merge(VD1, VD2);

return Ergebnis;

else

return (Voronoi-Diagramm des Punktes in P, ganze Ebene);

(29)

Pseudocode Merge I

Input: Zwei Voronoi-Diagramme VD1 und VD2 für zwei Punktmengen P1 und P2; die x- Koordinaten der Punkte in VD1 sind kleiner als die in VD2.

Output: Das Voronoi-Diagramm von P1 U P2.

(30)

Pseudocode Merge II

VoronoiDiagramm Merge(VD1, VD2)

Konstruiere die konvexen H üllen von VD1 und VD2;

(p,q) = findeObereTangente(CH(P1),CH(P2));

(r,s) = findeUntereTangente(CH(P1),CH(P2));

while (untere Mittelsenkrechte g(r,s) ist noch nicht erreicht) Bestimme für die aktuelle Mittelsenkrechte g(p,q)

l den Schnittpunkt P mit der Voronoi-Region p, an dem nicht im letzten Schritt die Mittelsenkrechte abgeschnitten wurde;

l den Schnittpunkt Q mit der Voronoi-Region q, an dem nicht im letzten Schritt die Mittelsenkrechte abgeschnitten wurde;

l die zugehörigen Nachbarn p' (q' ), die mit p (q) die Kante gemeinsam haben, auf der P (Q) liegt;

if Q ist höher als P

ersetze q durch q' und schneide g(p,q) an der Stelle Q ab;

if P ist höher als Q

ersetze p durch p'und schneide g(p,q) an der Stelle P ab;

bestimme die neue aktuelle Mittelsenkrechte g(p,q);

return Ergebnis;

(31)

Pseudocode Tangente

Input: Zwei konvexe Hüllen CH(P1) und CH(P2) ; die größte x-Koordinate von CH(P1) ist kleiner als die kleinste x-Koordinate von CH(P2).

Output: Ein Paar (u,w) von Punkten, das die obere Tangente zu CH(P1) und CH(P2) festlegt.

Punktepaar findeObereTangente(CH(P1),CH(P2))

u = Punkt in CH(P1) mit der größten x-Koordinate;

w = Punkt in CH(P2) mit der kleinsten x-Koordinate;

do

L(u,w) = Gerade durch u und w;

u' = Knoten, der in CH(P1) auf u gegen Uhrzeigersinn folgt;

w' = Knoten, der in CH(P2) auf w im Uhrzeigersinn folgt;

while(u' liegt über L(u,w)) u <- u';

while(w' liegt über L(u,w)) w <- w';

while(u oder w haben sich ge ändert) return (u,w);

(32)

Voronoi-Diagramme Literatur

Klein, Rolf: Algorithmische Geometrie. Addison-Wesley Longman, Bonn, 1997

Okabe, Atsuyuki et al.: Spatial Tesselations: Concepts and Applications of Voronoi- Diagramms. John Wiley & Sons, 2000

Ottman, Thomas, Widmayer, Peter: Algorithmen und Datenstrukturen. 3. Auflage - Spektrum Akademischer Verlag, Heidelberg, Berlin, Oxford, 1996

Preparata, F. P., Shamos, M. I.: Computational Geometry: An Introduction. Springer- Verlag, New York, 1985

Referenzen

ÄHNLICHE DOKUMENTE

3. Wenn bei allen Orten aus T das Gewicht um den gleichen Betrag reduziert wird, verändert kein Punkt seine Zuordnung innerhalb der Orte von T. Es kann nur vorkommen, dass ein

Die Nutzung ist nur für den genannten Zweck gesta et, nicht jedoch für einen weiteren kommerziellen Gebrauch, für die Weiterleitung an Dri e oder für die Veröff entlichung im

Durch portionsweise Zugabe von 0.20 mol (4.60 g) Natrium durch eine Schlifföffnung (nach der Zugabe sofort wieder verschließen!) wird eine Alkoholatlösung bereitet.. Das Natrium

Algorithmische Geometrie Voronoi Diagramme 03.06.15 c Elmar Langetepe SS ’15 1.!. All

Lemma 5.2 Genau dann hat ein Punkt p ∈ S eine unbeschr¨ ankte Voronoi-Region, wenn er auf dem Rand der konvexen H¨ ulle von S liegt.. Beweis: Zwei

Theorem 5.11 Falls das Voronoi Diagramm V (S ) f¨ ur n-elementige Punktmenge S gegeben ist, kann der MST in O (n log n) berechnet werden. Algorithmische Geometrie Voronoi

Zwei konvexe Polyeder überlappen sich nicht ⇔ es gibt eine Gerade, so daß die Projektion der beiden Objekte auf dieser Geraden sich nicht überlappen..  

Somit wäre in diesem Beispiel ein „sicheres“ Vorgehen, t 1 und t 2 parallel auszuwerten.. In diesem Beispiel ist R nicht orthogonal, da die ersten beiden