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