Anfragen auf dynamischen konvexen Hüllen

Werbung
Rheinische Friedrich-Wilhelms-Universität Bonn
Institut für Informatik I
Thomas Hack
Anfragen auf
dynamischen konvexen
Hüllen
10.12.2008
Seminararbeit im Wintersemester 08/09
Zusammenfassung
Dynamische konvexe Hüllen bieten eine Vielzahl von verschiedenen Möglichkeiten interessante Informationen über die zugrundeliegende Punktmenge zu gewinnen. Diese Ausarbeitung des Papers Tight
”
Bounds for Dynamic Convex Hull Queries (Again)“ von Erik D. Demaine und Mihai Patrascu [3] soll sich diesem Thema etwas genauer befassen. Wir werden mit einer kleinen Einführung beginnen, und
klären was wir überhaupt unter einer dynamischen kovexen Hülle einer
Punktmenge verstehen und zusätzlich, was wir als interessante Information einstufen. Wir werden uns die verschiedenen Anfragen, die wir
an die konvexe Hülle stellen, genau anschauen, und uns die Zusammenhänge zwischen den einzelnen Anfragen klar machen. Da wir auch
Aussagen über die Laufzeiten der Anfragen, sowie des Einfügen oder
des Löschens eines Punktes treffen wollen, werden wir die zugrundeliegende Datenstruktur der konvexen Hülle betrachten. Diese ist eine
Weiterentwicklung der Datenstruktur für dynamische konvexe Hüllen
von M. H. Overmars und J. van Leeuwen [4]. Mit Hilfe dieser Datenstruktur und einiger anderer Kniffe,
sind wir in der Lage die Anfragen
lg n
in der optimalen Zeit von Θ lg lg n zu beantworten. Einer dieser Kniffe ist es zum Beispiel, daß wir die Anfragen nicht durchgehend mit unendlicher Genauigkeit berechnen, sondern nur mit einer Genauigkeit,
welche von der Genauigkeit der Eingabe abhängt. Wir rechnen also im
sogenannten word RAM -Modell. Die untere Schranke zeigen wir zum
Schluss durch eine Reduktion vom Marked Ancestor -Problem [1], von
dem man weiß, daß es nicht schneller gelöst werden kann.
Inhaltsverzeichnis
1 Einführung
2
2 Grundlagen
2.1 Datenstruktur nach M. H. Overmars und J. van Leeuwen . .
2.2 Point Location . . . . . . . . . . . . . . . . . . . . . . . . . .
4
4
5
3 Angepasste
Datenstruktur
2
3.1 O lg n
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
6
4 Reduktion
10
1
1
Einführung
Wir haben nun einen kleinen Überblick mit welchem Thema sich diese Ausarbeitung überhaupt beschäftigt und wie sie gegliedert ist. Nun kommen wir
zu der Frage: Was ist eigentlich die dynamische konvexe Hülle einer Punktmenge S? Wir wollen uns zunächst auf die 2-D Variante beschränken. Im
3-D funktioniert das Ganze aber analog. Wir haben eine Punktmenge S in
der Ebene. Die konvexe Hülle dieser Punktmenge ist nun die Begrenzung die
entstehen würde, wenn man um alle Punkte von Außen ein Gummi spannen
würde. D.h. jeder Punkt der Menge S liegt innerhalb dieser Begrenzung.
Formal sieht das dann folgendermaßen aus:
Definition 1 Die konvexe Hülle einer Teilmenge X eines reellen oder komplexen Vektorraumes V ist definiert als der Schnitt aller konvexen Obermengen.
Eine dynamische konvexe Hülle ist die konvexe Hülle einer dynamischen
Punktmenge S. Dynamisch bedeutet es dürfen Punkte zu S hinzugefügt werden und aus S entfernt werden. Für diese dynamische konvexe Hülle schauen
wir uns nun einige interessante Anfragen an. Im Folgenden sei wie bisher S
die zugrundeliegende dynamische Punktmenge in der Ebene. Die Einteilung
dieser Anfragen in Gruppen wird anhand des Freiheitsgrades einer jeden
Anfrage vorgenommen. Dadurch erhalten wir drei Gruppen: Nulldimensionale Anfragen, eindimensionale Anfragen und zweidimensionale Anfragen.
Außerdem unterscheiden wir zwei
verschiedene Update-Zeiten für die Punktmenge S. Zum Einen O lg2 n und zum Anderen O (lg n lg lg n). Dieser Unterschied entsteht durch zwei verschiedene Datenstrukturen, die wir für die
unterschiedlichen Anfragen benutzen. Fangen wir bei den nulldimensionalen
Anfragen an und hangeln uns dann weiter.
• Nulldimensionale Anfragen:
1. Gift wrapping: Gegeben einen Punkt der konvexen Hülle, sollen
die zwei Nachbarpunkte auf der konvexen Hülle ausgegeben
wer
2
den. Dies geht in Θ(1) und mit einer Updatezeit von O lg n .
2. Hull membership: Bei dieser Anfrage interssiert uns, ob
ein Punkt
auf der konvexen Hülle liegt. Das können wir in Θ lglglgnn mit
einer Updatezeit von O (lg n lg lg n) schaffen.
• Eindimensionale Anfragen
haben alle eine Updatezeit von O (lg n lg lg n)
lg n
und können in Θ lg lg n berechnet werden:
1. Extreme point: Gesucht ist der Extrempunkt in einer bestimmten
gegebenen Richtung.
2
2. Line decision: Gegeben eine Linie l, möchten wir wissen, ob diese
Linie unsere konvexe Hülle schneidet. Diese Anfrage mag einem
im ersten Augenblick zweidimensional erscheinen, aber man kann
leicht sehen, daß man diese Frage mit Hilfe von Extreme pointAnfragen schnell entscheiden kann. Dazu muß man lediglich testen, ob die zwei Extrempunkte, die in orthogonaler Richtung zu
l liegen, auf unterschiedlichen Seiten von l liegen.
3. Vertical line stabbing: Gegeben eine senkrechte Linie, die unsere
konvexe Hülle schneidet, suchen wir die beiden Schnittpunkte.
4. Containment: Entscheide, ob ein Punkt q im Inneren unserer konvexen Hülle liegt, oder nicht. Diese Anfrage können wir mit Hilfe
von Vertical line stabbing beantworten. Wir testen einfach, ob q
zwischen den beiden Schnittpunkten der senkrechten Linie mit
unserer konvexen Hülle liegt. Allerdings ist diese Anfrage allgemeiner als Hull membership, da wir durch eine Verschiebung weg
vom Massenschwerpunkt entscheiden können, ob ein Punkt auf
der konvexen Hülle liegt, oder nicht.
• Zweidimensionale Anfragen haben alle eine Updatezeit von O lg2 n
und können ebenfalls in Θ
lg n
lg lg n
berechnet werden:
1. Tangent: Gegeben ein Punkt q außerhalb der konvexen Hülle,
möchten wir die zwei Tangenten erhalten, welche durch q gehen
und an der konvexen Hülle anliegen. Diese Anfrage ist allgemeiner
als Extreme point-Anfragen, da diese als Tangent-Anfragen mit
einem Punkt q im unendlichen gesehen werden können. Desweiteren ist die Tangent-Anfrage allgemeiner als die ContainmentAnfrage, da wir nur die Tangenten zu unserem Punkt q berechnen
müssen, und durch Extreme point-Anfragen sicherstellen, daß diese auch richtig sind.
2. Line stabbing: Gegeben eine Linie, die unsere konvexe Hülle schneidet. Berichte die beiden Schnittpunkte.
Wir haben also folgende Zusammenhänge gezeigt:
3
Abbildung 1: Abb. aus [3]
2
2.1
Grundlagen
Datenstruktur nach M. H. Overmars und J. van Leeuwen
In dem Paper ”Dynamically maintaining configurations in the plane”[4]
erklären M. H. Overmars und J. van Leeuwen, wie man eine dynamische
Punktmenge S strukturiert speichert, damit man effizient die konvexe Hülle
dieser Menge zu jedem Zeitpunkt berechnen kann. Dazu wird S in zwei
Hälften geteilt und jede Teilmenge einzeln betrachtet. In welche Richung
die Menge geteilt wird ist dabei nicht relevant. Der Einfachheit halber teilen
wir die Menge mit einer senkrechten Linie bei x = 0. Im Folgenden wird nur
noch eine dieser Teilmengen betrachtet, die andere wird äquivalent behandelt. Als nächstes wir den Teilmengen der Punkt (0, + inf) bei der linken
Teilmenge bzw. (0, − inf) bei der rechten Teilmenge hinzugefügt. Dadurch
ergibt sich als konvexe Hülle ein nach y-Koordinate sortierter Bogen. Diese Punkte werden in einem balancierten Suchbaum gespeichert, welcher an
dem Wurzelknoten eines weiteren balancierten Suchbaumes hängt. Wir haben also sozusagen eine ’Baum-in-Baum-Struktur’. Folgendes Bild soll dies
veranschaulichen:
4
Abbildung 2: Abb. aus [4]
In den Blättern des äußeren Suchbaumes stehen dabei alle Punkte der
linken oder rechten Teilmenge von S und in den Blättern der inneren Suchbäume
sind die Punkte der einzelnen zugehörigen konvexen Hüllen.
2.2
Point Location
Im späteren Verlauf werden wir sehen, daß das Problem der Punkt Lokalisierung eine zentrale Rolle im Beweis der oberen Laufzeitschranke spielen
wird. Daher wollen wir uns nun genauer mit dem Thema beschäftigen und
einige Fakten und Korrollare beweisen, die uns später von nutzen sein werden. Kommen wir zunächst zu folgendem Theorem, welches aus der Arbeit
Point location in o(log n) time, Voronoi diagrams in o(n log n) time, and
other transdichotomous results in computational geometry von T. M. Chan
[2] stammt.
Theorem 2 Gegeben einen senkrechten Steifen {xL , ..., xR } × {u} sowie
B ≤ w Segmente zwischen den Punkten (xL , li ) und (xR , ri ), wobei l1 ≤
... ≤ lB und r1 ≤ ... ≤ rB gilt und li und ri rationale Zahlen sind. Falls nun
−l1
−r1
∀i : li+1 − li ≤ l2Bw/B
und ri+1 − ri ≤ r2Bw/B
gilt, so können wir in O(B) Zeit
eine Datenstruktur konstruieren, welche Punktlokalisation in konstanter Zeit
unterstützt.
Beweis. Als erstes bilden wir die Segmente, und später die Anfrage, auf
auf unser Universum [2w/B ]2 mittels einer projektiven Transformation und
Runden ab. Da die Segemente übereinander liegen und sich nicht schneiden,
kann die Antwort der Anfrage sich immer nur um ein einzelnes Segement
ändern. Diesen Fehler können wir in konstanter Zeit beheben. Durch die Beschaffenheit unseres Universums benötigen wir O(w/B) Bits pro Segment
5
und Anfrage, damit wir alle |T | ≤ B Segmente in O(1) Worte packen können
und die Anfrage dann mit Hilfe von Parallelisierung in konstanter Zeit beantworten können.
2
Dies benötigen wir um folgendes Korrollar zu beweisen.
Korollar 3 Gegeben einen senkrechten Steifen {xL , ..., xR } × {u} sowie
B ≤ w Segmente zwischen den Punkten (xL , li ) und (xR , ri ), wobei l1 ≤
... ≤ lB und r1 ≤ ... ≤ rB gilt und li und ri rationale Zahlen sind. In O(B 2 )
Zeit können wir nun eine Datensturktur konstruieren, welche Anfragen für
einen
Punkt
zwischen den Segmenten
i und i + 1 in Zeit
lB −l1
rB −r1
O 1+ B
lg
+
lg
w
li+2 −li−1
ri+2 −ri−1
beantworten kann.
Beweis. Wir wählen zunächst eine Teilmenge T ⊂ [B] von Segmenten
aus, indem wir mit T = {1} anfangen, und die Menge durch folgende
Prozedur erweitern: Wenn i = max T , füge das kleinste j < i, so daß
lj − li ≥ (lB − l1 )/2w/B und rj − ri ≥ (rB − r1 )/2w/B gilt, in T ein. Wenn
kein weiters Segment mehr eingefügt werden kann, fügen wir das oberste
Segment ein und halten an. Durch vorangegangenes Theorem können wir
Punktlokalisation unter T \ {B} Segmenten in konstanter Zeit betreiben.
Also können wir auch ganz T in konstanter Zeit behandeln. Wir rekurieren nun zwischen allen aufeinander folgenden Segmenten in T . Mit jedem
Schritt verringert sich entweder der linke oder der rechte Abstand der verbleibenden
Segmente um einen
Faktor von 2w/B . Das bedeutet, daß nach
lB −l1
rB −r1
B
w lg li+2 −li−1 + lg ri+2 −ri−1 Schritten die übriggebliebene Teilmenge nicht
gleichzeitig die beiden Segmente i + 2 und i − 1 enthalten kann, da entweder
der linke oder der rechte Abstand zu klein geworden ist. Da wir in jedem
Schritt mindestens das oberste und das unterrste Segment eliminieren, bekommen wir die Antwort in höchstens zwei zusätzlichen Rekursionen.
2
3
3.1
Angepasste Datenstruktur
O lg2 n
Kommen wir nun zum Beweis der oberen Laufzeitschranke. Wir schauen uns
nun eine leicht geänderte Version der Overmars-, van Leeuwen-Struktur an,
und zeigen, daß manmit Hilfe
dieser Stuktur alle für uns interessanten An
lg n
fragen in der Zeit O lg lg n beantworten kann. Wir werden uns im weiteren
auf Tangentenanfragen beschränken. Der Beweis für Line stabbing-Anfragen
funktioniert aber ähnlich. Zunächst benötigen wir einige Definitionen.
Definition 4 Gegeben eine obere Konvexkette P und Indizes 1 ≤ i < j <
m. Der Zorro ZP (pi , pj ) enthält dann alle Punkte welche ausserhalb von P ,
6
Abbildung 3: Abb. aus [3]
strikt rechts von dem Strahl pi+1 , pi und nicht strikt links von dem Strahl
pj+1 , pj liegen.
Definition 5 Wir definieren den left slab eines Zorros ZP (pi , pj ) als einen
senkrechten Streifen zwischen x = 0 und x = x(pi+1 ).
Definition 6 Als left vertical extend L (ZP (pi , pj )) sei die Länge der Schnittkante von der linken Begrenzung des left slab mit dem Zorro ZP (pi , pj ) definiert.
Definition 7 Als right vertical extend R (ZP (pi , pj )) sei die Länge der
Schnittkante von der rechten Begrenzung des left slab mit dem Zorro ZP (pi , pj )
definiert.
Definition 8 Die Entropie des Zorros ZP (pi , pj ) sei definiert als
H (ZP (pi , pj )) = lg L (ZP (pi , pj )) + lg R (ZP (pi , pj )).
Diese Definitionen benötigen wir um das folgende Lemma aufstellen zu
können.
Lemma 9 Gegeben eine obere Konvexkette P = hp1 , p2 , ..., pB i, können wir
in Zeit B O(1) eine Datenstruktur konstruieren, die Anfragen der folgenden
Form unterstützt: gegeben Indizes 1 < i < j < B −1 und einen Punkt q, welcher garantiert innerhalb des Zorros ZP (pi , pj ) liegt, sowie dem zugehörigen
left slab,
können wir in Zeit
(H
(Z
(p
,
p
))
−
H
(Z
(p
,
p
)))
t=O 1+ B
i
j
P
P
k−1
k+2
w
denjenigen Index i < k < j finden, so daß q im Zorro ZP (pk , pk+1 ) liegt.
7
Abbildung 4: Abb. aus [3]
8
Beweis. Zunächst konstruieren wir die Datenstruktur für jede Kombination von i und j. Für feste i und j müssen wir nun eine Punktlokalisierung
im left slab des Zorros ZP (pi , pj ) durchführen. Die Segmente werden dabei
durch die Schnitte der Strahlen pi+1 pi , pi+2 pi+1 , ..., pj+1 pj mit dem left slab
vorgegeben. Seien li , ..., lj die Schnitte der Strahlen mit der Senkrechten bei
x = 0 und ri , ..., rj die mit der Senkrechten bei x = x(pi+1 ). Da wir im word RAM-Modell rechnen, sind diese Werte rational. Dadurch können wir nun
Korrollar 3 anwenden. Falls die Antwort nun k ist, so beträgt die Laufzeit
ungefähr:
B
lj − li
rj − ri
t ≈ 1+
lg
+ lg
w
lk+2 − lk−1
rk+2 − rk−1
B
= 1 + (lg L (ZP (li , lj )) + lg R (ZP (li , lj )) − lg L (ZP (lk−1 , lk+2 )) − lg R (ZP (lk+2 , lk−1 )))
w
B
≤ 1 + (H (ZP (li , lj )) − H (ZP (pk−1 , pk+2 )))
w
2
Mit Hilfe dieses Lemmas können wir nun den Beweis zuende führen.
Die Gesamtstruktur, die wir für Tangentenanfragen (bzw. Line stabbingAnfragen) benutzen, ist ein B-Baum des Grades B = lg . Dieser speichert
zusätzlich in jedem Knoten v einen atomic heap [5] für die x-Koordinaten der
Punkte aus v, sowie die Struktur aus Lemma 9, welche ebenfalls ein B-Baum
ist und die Punkte der jeweilen oberen Konvexkette speichert. Eine Tangentenanfrage läuft nun einmal von der Wurzel zu einem Blatt in diesem BBaum. In jedem Knoten benötigen wir mindestens O(1) Zeit, in manchen jedoch noch etwas mehr, weil wir Lemma 9 anwenden müssen. Wir werden nun
zeigen,daß dies
kein Problem darstellt, und wie wir auf eine Gesamtlaufzeit
lg n
von O lg lg n kommen. Die Zeit, die wir für den gesamten Pfad benötigen,
P
ist beschränkt durch die Summe der einzelnen Knoten: Knoten l tl . Dies
ist allerdings eine Teleskopsumme, so daß am Ende nur noch folgender
Term übrigbleibt, da sich die anderen Summanden gegenseitig eliminieren:
logB (n) + B
w (Hmax − Hmin ). Da alle Punkte auf einem u × u Gitter liegen,
erhält man im worst case Hmax = 2 lg(u) und Hmin = −2 lg(u). Eingesetzt
bedeuted dies: logB (n) + B
w (4 lg(u)). Weil w ≥ lg u sein muss, folgt daraus:
B
logB (n) + w (4 lg(u)) ≤ logB (n) + B
w (4w) ∈ O(logB (n) + B). Wenn wir jetzt noch zeigen können, daß O(logB (n) + B) = O lglglgnn gilt,
sind wir fertig. Wie wir sehen werden, gilt diese Behauptung für B = lg (n)
und kleinem > 0:
9
Beweis.
logB (n) + B =
lg n
lg lg n
+ lg (n)
lg(n)(1−)
= lg (n)
+1
lg lg n
!
lg(n)(1−)
≤ lg (n) 2
lg lg n
!
lg(n)
lg lg n
2 lg(n)
lg lg n
= 2
=
2
4
Reduktion
Im folgenden wollen wir uns mit der unteren Schranke unserer Anfragen
beschäftigen. Dazu schauen wir uns das sogenannte marked ancestor problem an, und versuchen dieses auf unser Problem zu reduzieren. Gegeben
sei ein perfekter Binärbaum T . Jeder Knoten in diesem Binärbaum kann
nun entweder markiert oder unmarkiert sein. Das marked ancestor problem
beschäftigt sich nun mit der Frage, ob auf dem Pfad zu einem gegebenen
Blatt ein markierter Knoten liegt,
oder
nicht. Es wurde gezeigt, das diese
lg n
Frage nicht schneller als in Ω lg lg n beantwortet werden kann. Dies führt
zu folgendem Theorem:
Theorem 10 Jegliche Datenstruktur, die eine dynamische konvexe Hülle
mit Einfüge- und Löschzeiten von lgO(1) unterstützt, kann
dieAnfragen hull
membership und line decision nicht schneller als in Ω lglglgnn beantworten.
Beweis. Wir werden nun den Binärbaum des marked ancestor problem in
folgender Weise in ein gleichschenkliges Dreieck abbilden. Wir haben drei
verschiedene Klassen von Punkten: sogenannte Rahmenpunkte, einen Punkt
für jedes Blatt und einen Punkt für jeden markierten inneren Knoten. Das
Dreieck soll eine Höhe von h0 = 1 haben und einen Winkel von θ0 = 45◦ .
In diesem Dreieck, sollen dann rekursiv weitere gleichschenklige Dreiecke
definiert werden, wobei jedes Dreieck einen Teilbaum des marked ancestor
problem darstellt. Das äußerste Dreieck ist dabei die Wurzel, welche nach
Definition unmarkiert sein soll. Dies wird solange fortgeführt, bis man die
Blätter erreicht, und diese als einzelne Punkte anstelle von Dreiecken darstellt. Die folgende Zeichnung soll den Aufbau veranschaulichen:
In diesem Bild sind die schwarzen Punkte die Rahmenpunkte, und das
gelbe Dreieck stellt den linken Teilbaum, welcher unter der Wurzel hängt
dar. Analog dazu kann man den rechten Teilbaum darstellen. Die blauen
10
Pl
Pr
Rl
Cl
Ql
Ml
Tl
T
Mr
Abbildung 5: Abb. aus [3]
Punkte werden nur eingefügt, falls die Wurzel des neuen Teilbaums markiert ist. In unserem Fall sind also die beiden Söhne direkt unterhalb der
Wurzel markiert. Durch diesen Aufbau erreichen wir nun, daß ein Blatt des
marked ancestor problem genau dann einen markierten Vorfahren besitzt,
wenn der dazu korrespondierende Punkt in unserem Dreieck nicht auf der
konvexen Hülle liegt. Damit
beschränken wir alle hull membership-Anfragen
lg n
von unten durch Ω lg lg n . Ebenfalls kann man leicht aus diesem Aufbau
alle line decision-Anfragen beschränken, indem man zu jedem Punkt eine
Linie bestimmt, so daß der Punkt genau dann auf der konvexen Hülle liegt,
falls die Linie die konvexe Hülle nicht schneidet.
2
11
Literatur
[1] S. Alstrup, T. Husfeldt, and T. Rauhe. Marked ancestor problems. In
39th Annual Symposium on Foundations of Computer Science, pages
534–544, 1998.
[2] T. M. Chan. Point location in o(log n) time, voronoi diagrams in o(n log
n) time, and other transdichotomous results in computational geometry.
In Proceedings of the 47th Annual IEEE Symposium on Foundations of
Computer Science, pages 333–342, 2006.
[3] E. D. Demaine and M. Patrascu. Tight bounds for dynamic convex hull
queries (again). Paper, MIT Computer Science and Artificial Intelligence
Laboratory, 2007.
[4] M. H. Overmars and J. van Leeuwen. Maintenace of configurations in
the plane. Journal of Computer and System Sciences, 23(2):166–204,
1981.
[5] M. L. Fredman and D. E. Willard. Trans-dichotomous algorithms for
minimum spanning trees and shortest paths. Journal of Computer and
System Sciences, 48:533–551, 1994.
12
Herunterladen