5.1 Voronoi-Diagramme
Motivation (Folie 4)
| Eingabe | Menge von Telefonzellen, Postämtern, Sensoren, … und eine aktuelle Position |
| Ziel | die nächstgelegene Telefonzelle / Post / … finden |
Solche Nächste-Nachbarn-Probleme löst man mit Voronoi-Diagrammen. Benannt nach Georgi Woronoi (1868–1908).
Definition 1 (Folie 5)
Sei eine Menge von verschiedenen Punkten (Datenpunkte, Sites) und eine Metrik. Die Zerlegung der Ebene in Voronoi-Zellen mit
heißt Voronoi-Diagramm .
Im Folgenden immer die euklidische Metrik .
Begriffe: Die Zellen sind offen. Punkte mit gleichem Abstand zu zwei nächsten Sites bilden die Voronoi-Kanten, Punkte mit gleichem Abstand zu drei oder mehr nächsten Sites die Voronoi-Knoten.
Jeder Voronoi-Knoten ist Mittelpunkt eines leeren Kreises durch ≥ 3 Punkte. Mit „Delaunay“ mit der Maus über ein Dreieck fahren zeigt seinen Umkreis. · Klick setzt Punkt, ziehen verschiebt, Rechtsklick löscht.
Zellen sind Schnitte von Halbebenen (Folie 6)
Die Punkte, die von und gleich weit entfernt sind, bilden die Mittelsenkrechte (Bisektor) , eine Gerade. Sie teilt die Ebene in zwei offene Halbebenen. Die auf der Seite von ist
Ein Punkt liegt genau dann in , wenn er näher an ist als an jedem anderen :
Folge: Voronoi-Zellen sind konvex (Schnitt konvexer Mengen ist konvex). Sie sind konvexe Polygone, eventuell unbeschränkt.
(Ergänzung) Das ergibt sofort einen einfachen Algorithmus: Jede Zelle als Schnitt von Halbebenen in , insgesamt . Die Demo oben rechnet genau so. Fortunes Algorithmus (5.2) schafft das ganze Diagramm in .
Satz 1: Globale Geometrie und Topologie (Folien 7–8)
Sei eine Menge von verschiedenen Punkten in der Ebene.
- Liegen alle Punkte auf einer Geraden, besteht aus parallelen Geraden.
- Sonst ist ein zusammenhängender Graph, dessen Kanten Strecken oder Halbgeraden sind.
Beweis. Die Zellen sind als Schnitt von Halbebenen konvex.
- Kollinear: Die Mittelsenkrechten benachbarter Punkte sind parallel und schneiden sich nicht. Ausprobieren in der Demo mit „kollinear“.
- Seien nicht kollinear.
- (b) Kanten: Jede Kante ist ein Stück einer Mittelsenkrechten, also Strecke, Halbgerade oder ganze Gerade. Eine ganze Gerade ist aber unmöglich: Es gibt einen Punkt , der nicht auf der Geraden durch liegt. Dann schneidet die Gerade , und ab diesem Schnittpunkt ist ein Teil von näher an als an und , also keine Voronoi-Kante.
- (a) Zusammenhang: Angenommen, zerfällt in zwei Komponenten. Dann muss eine Zelle dazwischen liegen und sie trennen. Eine konvexe Zelle, die die Ebene in zwei Teile trennt, ist ein Streifen zwischen zwei parallelen ganzen Geraden. Das widerspricht (b). □
Satz 2: Globale Kombinatorik (Folien 9–10)
Ein ebenes Voronoi-Diagramm von Punkten hat höchstens Voronoi-Knoten und Voronoi-Kanten.
Das Diagramm hat also nur linear viele Knoten und Kanten, obwohl es Mittelsenkrechte gibt.
Beweis.
- Nicht alle Punkte sind kollinear (sonst nur Kanten, die Aussage stimmt dann trivial).
- Trick: Die Halbgeraden sind keine richtigen Kanten mit zwei Endpunkten. Man fügt einen Hilfsknoten „im Unendlichen“ hinzu und verbindet alle Halbgeraden mit ihm. Dann ist das Diagramm ein zusammenhängender, planarer Graph mit Knoten, Kanten und Flächen (die Zellen).
- Eulersche Formel :
- Grad-Abschätzung: Jede Kante hat zwei Endpunkte, und jeder Knoten (auch ) hat mindestens drei Kanten. Summe der Grade :
- Kanten: (1) mal 3 und (2) einsetzen:
- Knoten: (1) mal 2 und einsetzen: □
Diesen Beweis sollte man an der Tafel vorführen können: einführen → Euler → Grad → zwei Zeilen Umformung. Häufige Nachfrage: Warum hat jeder Knoten Grad ≥ 3? Weil an einem Voronoi-Knoten mindestens drei Zellen zusammenstoßen (sonst wäre es nur ein Punkt auf einer Kante).
Satz 3: Leere Kreise (Folien 11–12)
Sei der größte leere Kreis um : der Kreis mit Mittelpunkt , der keinen Punkt von im Inneren enthält. Er wächst, bis er den nächsten Punkt (oder mehrere gleich nahe) berührt.
- Ein Punkt ist genau dann ein Voronoi-Knoten, wenn mindestens drei Punkte von auf seinem Rand hat.
- Ein Bisektor enthält genau dann eine Voronoi-Kante, wenn es einen Punkt gibt, dessen nur und auf dem Rand hat.
Beweis.
- „⇐“: Hat die Punkte auf dem Rand und keinen im Inneren, sind diese drei die nächsten Sites von , alle gleich weit entfernt. Also stoßen in die drei Zellen zusammen, ist ein Voronoi-Knoten. „⇒“: Ist ein Voronoi-Knoten, stoßen dort mindestens drei Zellen zusammen, also liegen mindestens drei gleich nahe Punkte auf dem leeren Kreis um .
- „⇐“: Hat genau auf dem Rand, liegt auf der Grenze von und , und nach 1. ist kein Knoten. Also liegt im Inneren einer Kante. „⇒“: Enthält eine Kante, hat jeder innere Punkt der Kante genau und als nächste Sites. □
In der Demo: „Delaunay“ und „Umkreise“ einschalten. Jeder blaue Kreis ist leer, sein Mittelpunkt ist ein Voronoi-Knoten. Mit dem Preset „kreis“ liegen vier Punkte auf einem Kreis: Dort ist der Voronoi-Knoten vom Grad 4, und die Delaunay-Triangulierung ist nicht eindeutig.
Weitere Eigenschaften (Ergänzung)
- ist unbeschränkt ⇔ ist eine Ecke der konvexen Hülle (siehe Komplexität in 5.2).
- Der nächste Nachbar von in ist ein Voronoi-Nachbar (seine Zelle grenzt an ).
- Der Mittelpunkt des größten leeren Kreises mit Mittelpunkt in der konvexen Hülle liegt auf einem Voronoi-Knoten oder auf dem Schnitt einer Kante mit dem Hüllrand (Standortplanung: „Wo baue ich die neue Filiale, möglichst weit weg von allen anderen?“).