Suchen in triangulierten ebenen Unterteilungen

Werbung
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
Herunterladen