Zusammenfassung Sweep f¨ ur VD
Elmar Langetepe University of Bonn
Voronoi Diagramm, Sweep , O(n log n)
• Deterministisch in O(n log n)
• Sweepl. ¨uber Punkte, X-sortiert
• Links Sweepline entsteht Voronoi-Diagramm
• Problem: Sweepline kennt nur Punkte links der Linie
• Punkte rechts k¨onnen weit hineinragen
• Abbhilfe: Sweepline selbst ist auch ein Objekt, simuliert m¨ogliche Punkte weiter rechts
p
s
r
q
Voronoi Diagramm, Sweepline als Objekt
• Bisektor B(p, L) zwischen L und p: Parabel (Tafel)
• Punkte rechts k¨onnen die Parabel zwischen p und L nicht mehr betreten
• Parabel ist bereits korrekt bez¨uglich Zuteilung links
p
x q
B(p,L) L
SSS: Wellenfront mit Verl¨ angerungen
• Wellenfront: Mehrere St¨ucke B(pj, L) aneinandergereiht
• Links der Wellenfront:
V R({p1, . . . , pi−1) fertig
• Gebiet rechts der Wellenfront geh¨ort L
• Zwischen den Parabeln:
Spikes, Bisektoren zwischen Punkten
• Im weiteren Verlauf: Voronoi Knoten
v W
p1 p2
p3 p5 p4 p6
L
Formale Beschreibung SSS Wellenfront
• Parabelst¨ucke geordnet nach Y -Richtung
• Dazwischen Spikes geordnet nach Y -Richtung
• Geordnet nach Punkten:
p1, p5, p3, p4, p6, p4, p2
• Abgespeichert in einem Baum
• Schl¨ussel (Parabeln/Spikes)
v W
p1 p2
p3
p5 p4 p6
L
Wellenfront ist zusammenh¨ angend!
Lemma 6.10 Die Wellenfront ist zusammenh¨angend und Y -monoton.
• Eigenschaften der Parabeln!
• Definiert ¨uber gesamtes Intervall: Je zwei schneiden sich immer!
• Alle Parabeln sind monoton!
• Datenstruktur: Baum mit dynamischen Schl¨usseln
Ereignisse des Sweeps
Wann ver¨andert sich die Wellenfront?
Nur diskrete Zeitpunkte!
1. Parabelst¨uck kommt hinzu: Ein neuer Punkt wird getroffen! Punkt-Ereignis, neue Parabel entsteht
2. Parabelst¨uck verschwindet: Die Welle erreicht den Schnittpunkt zweier Spikes, Spike-Ereignis, Voronoi-Knoten entsteht
v W
p1 p2
p3
p5 p4 p6
L
Behandlung: Punkt-Ereignis, SSS akt.
• Zwei F¨alle: Innerh. Parabelst., Schnittpkt von Parabelst¨ucken
• Zwei neue Spikes, ggf. neuer Voronoi Knoten
• Parabelst¨ucke sortiert im Baum: Schl¨ussel B(L, pj) Parabel
• Zugriff O(log m), m Anzahl der Parabeln, Akt.: O(log m)
r
q q
p p r p
W
L L' L L'
p
p r
V
q rq
r
W' WW'
(i) (ii)
Behandlung: Spike-Ereignis, SSS-akt
• Parabelst. verschwindet, Spikes schneiden sich, Voronoi-Knoten
O(n) viele
• Zeitpunkt des Ereignisses (Position L2)
weiter zur¨uck
• Parabel B(L, pj)
entfernen: O(log m)
• Ein neuer Spike zwischen neuen Nachbarn: O(1)
• Vorderster Schnittpunkt,
q p
v u
r
L_1 L_2
Ereignisstruktur akualisieren: m Parabeln
• Sei m Kompl. Wellenfront
• Priority Queue,
O(n) Punktereignisse, sortieren: O(n log n)
• Spike-Ereign. (Voro-Knoten O(n)):
Schnittpunkte der Spikes, jeweils die vordersten!
• Wie Segment-Schnitt-Sweep:
Schnitte nur mit Nachbarn, nachgelagerte Events
• Stets nur ersten Schnitt
einf¨ugen, andere entfernen, Anzahl: O(m),
Einf./Entf. O(log m)
v p
q
r u
L_1
Gesamtlaufzeit/Gesamtkomplexit¨ at
• m Parabeln in SSS
• Max. O(n + m) Ereignisse in ES
• Maximal O(n) Ereignisse finden statt:
Punktereign./Voronoi-Knoten
• Einf¨ugen/Entfernen Events, Einf¨ugen/Entfernen Parabelen
• n-mal O(log(n + m)) Laufzeit!
• Komplexit¨at der Wellenfront: m ∈ O(n)
• Begr¨undung!
Komplexit¨ at der Wellenfront
• n Parabeln, von denen sich zwei maximal
zweimal schneiden k¨onnen
• Definiert auf dem gesamten Intervall
• DSS von n Buchstaben der Ordnung 2:
λ2(n) ∈ O(n)
Ergebnis
Theorem 6.11 Das Voronoi Diagramm von n Punkten l¨aßt sich mit dem Sweep Algorithmus in Zeit O(n log n) und mit Platz O(n)
berechnen, das ist optimal.
Beweis: O(n) Events in je O(log n) Zeit
Korrektheit: Algorithmus schreibt Voronoi-Diagramm links der Wellenfront in den Sand
Kapitel Buch
Kapitel 6 Seite 281 mitte – 294 mitte