Bewertung von Datenstrukturen Suchen in triangulierten ebenen Unterteilungen § Vorverarbeitungszeit § Grösse § Anfragezeit à O(n) à O(n) à O(log n) (Literatur: deBerg et al., Kapitel 6) 1 4 Problemstellung Grosse unabhängige Mengen kleinen Grades … § § § Gegeben sei eine (triangulierte) ebene Unterteilung U Finde eine Datenstruktur, die das Punktlokalisierungsproblem effizient unterstützt: § § § gegeben ist ein Punkt p finde die Facette von U in deren relativen Inneren p liegt § Def. Eine Menge U von Knoten eines Graphen G=(V,E) heisst unabhängig, wenn keine zwei Knoten aus U in G benachbart sind Satz: In einem planaren, triangulierten Graphen G mit n Knoten gibt es mindestens n/24 -1/6 unabhängige innere Knoten vom Grad jeweils kleiner als 12 Beweis …: ? v ? Vdeg(v) = 2|E| < 2(3n-6)=6n-12 damit |{v?V|deg(v)>11}| < n/2 -1, also |{v?V|deg(v)<12}| > n/2+1, und |{v?V|v innerer Knoten und deg(v)<12}| > n/2-2. Sei M:={v?V|v innerer Knoten und deg(v)<12} 2 5 Triangulierte ebene Unterteilungen … Grosse unabhängige Mengen kleinen Grades § § Annahme: U ist eine triangulierte ebene Unterteilung § … Beweis: alle Facetten (auch die äussere) sind Dreiecke U := {} while (M enthält einen Knoten u) do füge u in U ein entferne u mit seinen Nachbarn aus M od § § 3 löscht pro Durchlauf maximal 12 Elemente aus M und fügt dabei eines zu U hinzu, also hat U mindestens |M|/12 > n/121/6 Elemente die Elemente aus U sind unabhängig 6 1 Aufbau der Datenstruktur § … Beispiel: Aufbau … Berechne eine Folge U=T0 ,T1 , …, Tk=? von triangulierten ebenen Unterteilungen („Dreieckshistory “): § § U=T0 solange Ti-1 kein Dreieck ist konstruiere Ti wie folgt: § finde in Ti-1 eine Menge U von mindestens n/24-1/6 unabhängigen inneren Knoten vom Grad jeweils kleiner als 12 § solange U noch einen Knoten u enthält § entferne u und seine Nachbarschaft aus Ti-1 § triangulieredie so entstandene Facette neu § speichere für jedes dabei neu entstandene Dreieck eine Liste von Zeigern auf alle gerade entfernten Dreiecke 6 5 7 3 2 7 Beispiel: Aufbau … 10 … Beispiel: Aufbau … T0 T1 6 6 5 5 7 7 4 3 3 2 1 2 8 … Beispiel: Aufbau … 11 … Beispiel: Aufbau … 6 6 5 5 7 7 4 3 1 3 2 2 9 12 2 … Beispiel: Aufbau … Beispiel: Konstruktion … T3 ?1 ?2 6 ?2 6 5 5 ?1 3 13 … Beispiel: Aufbau … 16 … Beispiel: Konstruktion … T2 T2 ?1 ?2 6 ?2 ? 13 ? 12 ? 11 5 6 5 ? 12 3 ? 13 3 ? 11 14 … Beispiel: Aufbau 17 … Beispiel: Konstruktion … T1 ?1 ?2 6 6 ? 25 ? 26 ? 13 ? 12 ? 11 5 ? 24 7 3 ? 28 ? 23 ? 27 ? 22 ? 21 ? 24 ? 26 ? 25 15 ? 28 5 ? 21 ? 27 3 ? 23 ? 22 2 18 3 … Beispiel: Konstruktion … Beispiel: Suchen … T0 ?1 T2 ?1 ?2 ? 26 ? 13 ? 12 ? 11 7 ? 28 ? 23 ? 27 ? 22 ? 21 ? 24 ? 26 ? 25 ? 32 ? 31 1 ?2 ? 3A 6 ? 25 5 ? 39 ? 13 ? 12 ? 11 ? 38 4 ? 37 ? 33 ? 34 3 ? 36 5 ? 12 ? 13 3 ? 11 ? 28 ? 23 ? 27 ? 22 ? 21 ? 24 ? 26 ? 25 2 6 ?2 ? 35 ? 36? 37? 38 ? 39? 3A ? 31 ? 32 ? 33 ? 34 ? 35 ? 36? 37? 38 ? 39? 3A ? 31 ? 32 ? 33 ? 34 ? 35 19 Suchen in der Datenstruktur § … Beispiel: Suchen … finde in jeder triangulierten ebenen Unterteilung Ti (i=k,...,0) das Dreieck ? i , das den Punkt p enthält § § § 22 T1 ? k = Tk falls ? i ? Ti mit p ? ? i bekannt, teste für jedes der O(1) vielen ? i-1 ?Ti-1 auf die ein Zeiger von ? i verweist, ob p ? ? i-1 ? 0 ?T0 =U ist das gesuchte Dreieck ?1 ?2 6 ? 25 ? 26 ? 13 ? 12 ? 11 ? 28 5 ? 24 7 3 ? 21 ? 28 ? 23 ? 27 ? 22 ? 21 ? 24 ? 26 ? 25 ? 27 ? 23 ? 22 2 ? 36? 37? 38 ? 39? 3A ? 31 ? 32 ? 33 ? 34 ? 35 20 Beispiel: Suchen … 23 … Beispiel: Suchen … T3 ?1 T0 ?1 ?2 ? 13 ? 12 ? 11 ?2 ?2 6 5 ? 26 ? 13 ? 12 ? 11 ?1 7 ? 28 ? 23 ? 27 ? 22 ? 21 ? 24 ? 26 ? 25 ? 28 ? 23 ? 27 ? 22 ? 21 ? 24 ? 26 ? 25 ? 32 ? 31 1 ? 36? 37? 38 ? 39? 3A ? 31 ? 32 ? 33 ? 34 ? 35 ? 3A 6 ? 25 5 ? 39 ? 38 3 ? 37 ? 33 ? 34 4 ? 36 2 ? 35 ? 36? 37? 38 ? 39? 3A ? 31 ? 32 ? 33 ? 34 ? 35 21 24 4 … Beispiel: Suchen Analyse der Grösse § T0 ?1 ?2 § § 6 ? 13 ? 12 ? 11 Grösse: O(n) Grösse der i-ten Stufe O( ni ) § Ti planar à Satz von Euler O(? i=0,..,k ni ) = O(n) 5 ? 38 7 4 3 ? 28 ? 23 ? 27 ? 22 ? 21 ? 24 ? 26 ? 25 1 2 ? 36? 37? 38 ? 39? 3A ? 31 ? 32 ? 33 ? 34 ? 35 25 28 Analyse der Anfragezeit Zusammenfassung § § § O(1) Zeit pro Stufe der Datenstruktur § § jedes ? i ?Ti zeigt auf < 12 Dreiecke in Ti-1 prüfen eines Dreiecks in O(1) § sei ni := #Ecken von Ti und li := #Ecken, die auf Stufe i gelöscht wurden es ist li > ni /24 - 1/6 und damit ni = ni-1 – li-1 < ni-1 - ni-1 /24 - 1/6 = (23/24) ni-1 - 1/6 damit folgt per Induktion ni < (23/24)i n + 4(1-(23/24)i ) < (23/24)i n + 4 für k > log 24/23 n ist nk < 5 k = #Stufen der Datenstruktur = O(log n) § § § 26 Satz: Zu einer triangulierten ebenen Unterteilung U der Grösse n kann in O(n) Zeit eine Datenstruktur der Grösse O(n) konstruiert werden, mit der man Punktlokalisierungsanfragen in U in O(log n) Zeit beantworten kann. 29 Analyse der Vorverarbeitungszeit § Laufzeit zur Konstruktion der (i -1)-ten Stufe O(n i ) § § § finden der unabhängigen Knotenmenge: O(ni ) § Breitensuche neutriangulieren aller Facetten: O(ni ) § neutriangulieren der einzelnen Facetten jeweils in O(1), da Grad der gelöschten Knoten < 12 Gesamtlaufzeit: O(n) § O(? i=0,..,k ni ) = O((? i=0,..,k(23/24)i n + 4) = O(4k + n ? i (23/24)i ) = O(4k + 24n) 27 5