Algorithmische Geometrie II, SS 06 Übungsblatt 3 Universität Bonn, Institut für Informatik I i i = 1,...,5 bei den Aufgaben sind ein Maß für den SchwieDie Ziffern , 1 für ’leicht’ rigkeitsgrad der jeweiligen Aufgabe bzw. Teilaufgabe, mit 5 für ’schwer’. und Aufgabe 1: 1 Wohl-Separiertheit Beweisen oder widerlegen Sie: Zwei Punktmengen A, B sind genau dann wohl-separiert mit Parameter s, wenn es zwei Kreise CA und CB gibt, die die in der Definition geforderten Eigenschaften erfüllen und deren Mittelpunkte mit dem Zentrum der zugehörigen Bounding-Box zusammen fallen. Aufgabe 2: 1 4 Konstruktion des Split-Trees - In dieser Aufgabe betrachten wir die Konstruktion des Split-Tree zu einer gegebenen Punktmenge S ⊂ IRd . Der Algorithmus hat zu jedem Zeitpunkt d Listen der zu dem gerade betrachteten Knoten gehörigen Punkte, die je nach einer Koordinate sortiert sind. Die d Einträge eines Punktes sind dabei untereinander verzeigert. Am Anfang werden diese Listen für die Wurzel in Zeit O(dn log n) erstellt. a) Warum kann im worst-case bei einer naiven Herangehensweise der Konstruktionsalgorithmus in jedem Knoten v des Split-Trees eine Laufzeit von Ω(|Sv |) haben, wenn Sv die zum Knoten v gehörige Punktmenge ist? b) Geben Sie ein Beispiel, also ein System von Punktmengen (z.B. in IR1 ) jeder Größe n ∈ IIN an, bei dem der naive Algorithmus wegen der in a) diskutierten Schwäche eine Laufzeit in Ω(n2 ) hat! c) Wir suchen nun in jedem Knoten nicht von links nach rechts nach der Stelle, in der wir die zugehörige Punktliste auftrennen müssen, sondern von links und rechts gleichzeitig. Welche Laufzeit hat das modifizierte Verfahren in einem Knoten u des Split-Tree mit den Kindern v und w? d) Außerdem erzeugen wir jetzt nur einen partiellen Split-Tree, d.h. einen SplitTree, bei dem jedes Blatt einer Punktmenge von ≤ n/2 Punkten entspricht, und jedem inneren Knoten einer Punktmenge mit > n/2 Punkten zugeordnet ist. Wir wollen den partiellen Split-Tree in Zeit O(n) konstruieren. Warum darf dann nicht jeder Knoten eine Liste seiner Punkte enthalten? Trotzdem soll jedes Blatt die zu seiner Punktmenge gehörigen d sortierten Listen enthalten. Wie lange benötigt man dann, um mit Hilfe des partiellen Split-Tree 1 für einen inneren Knoten seine zugehörige Punktmenge (unsortiert) auszugeben? Ist es ein Problem für den WSPD-Algorithmus, wenn nicht jeder Knoten des Split-Tree seine Knotenmenge direkt kennt? Was muss jeder Knoten des Split-Tree auf jeden Fall speichern, damit der WSPD-Algorithmus funktioniert? e) Wie genau kann man einen solchen in d) diskutierten partiellen Split-Tree in Zeit O(dn) konstruieren? Was geschieht in jedem Schritt mit den d sortierten Listen? Sei u der aktuell betrachtete Knoten, mit den Kindern v und w. Sei |Sv | > |Sw |. Wie bekommen wir alle d sortierten Punktlisten für das Kind v in Zeit O(|Sw |) und nicht in Zeit O(|Sv |)? Um auf die Laufzeit O(dn) zu kommen, dürfen wir die Punktmengen der Blätter nicht nachsortieren. Wie kann man die d sortierten Punktlisten für alle Blätter des partiellen Split-Trees gleichzeitig in Zeit O(dn) bekommen? f ) Warum können wir mit dem Verfahren aus e), das in O(dn) einen partiellen Split-Tree berechnen kann, in O(dn log n) einen kompletten Split-Tree berechnen? Aufgabe 3: 2 Well Separated Pair Decomposition Gegeben sei die unten zwei mal abgebildete Punktemenge in IR2 . Führen Sie den Algorithmus aus der Vorlesung durch um eine Well Separated Pair Decomposition (WSPD) von S zum Parameter s = 1 zu finden! Berechnen Sie dazu zunächst den Split-Tree und zeichnen die auftretenden BoundingBoxen ein. Ermitteln Sie anschließend darauf aufbauend die WSPD. Hierbei ist zu beachten, dass die Prozedur FindPairs(v,w) nur testet, ob die beiden Punktmengen Sv und Sw bezüglich von Kreisen, deren Mittelpunkt im Zentrum der zugehörigen Bounding-Box liegt, wohlsepariert sind. 1) 2) p1 p2 p3 p4 p5 p6 Aufgabe 4: 2 Packungsargument Seien zwei Zahlen 0 < l ≤ L ≤ 1 gegeben. Wie viele diskunkte achsenparallele Boxen [a1 , b1 ] × [a2 , b2 ] × ... × [ad , bd ], mit mini |bi − ai | ≥ l und maxi |bi − ai | ≤ L können den Hypereinheitswürfel [0, 1]d schneiden? Beweisen Sie eine möglichst gute obere Schranke in Abhängigkeit von l, L und d! 2