Offline Bewegungsplanung: Preprocessing
Elmar Langetepe University of Bonn
Eigenschaften von G: Lemma 1.13 b
i) Pfad zwischen zwei Dreiecken entlang sukzessiver Diagonalen existiert!
ii) Wir finden den Weg in O(log n) Zeit!
iii) Gb hat nicht mehr als O(n) Kanten!
1.1
1.1
2.1 2.2 2.2
2.1
3.2 3.2 3.3
3.3
6.1 4.6
4.6 4.3
4.4 4.5
4.3 Q 5.4
Q P
I 5.6 P
5.5
5.6 I
T
G
i) Weg in G b existiert
• Weg im Dualen Graphen T∗, Weg in Tb
• Abgleichen mit Tiefenrelation
• Benachbart in der Konstruktion (Kante in G)!b
T*
6.1
1.1
1.1
2.2
2.2
2.1 2.1
3.3 3.4
3.2
3.1
3.2
3.3
4.4
4.7 4.2
4.6 4.5
4.3 4.1
4.3 4.6
5.6
P
I 5.7
5.4 5.5
5.6
Q P I
X
G
ii) Finden des Weges in G! b
• Gemeinsamer Vorg¨anger X minimaler H¨ohe in O(log n) in Tb
• Benutze leicht ge¨anderten Dualen Baum von T
• Frage: Liegt Diagonale d auf dem Pfad von P nach I?
T mit Wurzel R
1.1
6.1
1.1
2.1 2.2
2.1
2.2 3.1
3.2 3.3
3.2
3.4
3.3
4.3
4.7 4.2
4.4
4.6 4.5
4.3 4.6
4.1
5.6 5.4 5.5
5.7
I P
I 5.6 Q P
R ?
d Vorgänger entweder von delta(P) ODER delta(I) in Bezug auf R
? X
G
? ?
? ?
Vorg¨ angeranfrage in Baum
• Preorder/Postorder, DFS und Labelling
• a Vorg¨anger von b ⇔ pre(a) < pre(b) and post(a) > post(b) ( ¨Ubung!)
R
14 / 11 5 / 3
4 / 1 6 / 2
19 / 16 17 / 15
18 / 14 16 / 17
12 / 12 3 / 4
2 / 6
9 / 9 8 / 13
21 / 18 22 / 19
20 / 20
1 / 22 15 / 21
13 / 10 11 / 8 10 / 7
7 / 5
P
d
I d
I P
Eigenschaften von G b
i) Pfad zwischen zwei Dreiecken existiert!
i) L¨ange ist in O(log n)!
ii) Wir finden den Pfad in O(log n)!
iii) Gb hat O(n) Kanten !
iii) Komplexit¨ at von G b
• Untere Kanten von v aus: max 2 × height(v)
• Balance: Teilbaum bei v hat
≥
3 2
height(v)
Bl¨atter (Tafel)
• Anzahl Knoten der H¨ohe h:
≤ n
3 2
h = n2 3
h
• Sum. ¨uber alle H¨ohen:
log3
2
n
X
h=1
(2h) ×
2 3
h
× n
!
∈ O(n)
v
v
Konstruktion G b
• Cutting-Theorem ( ¨Ubung): konstruktiv!!
• Durchlauf von T∗
• W¨ahrend des Aufbaus: Insgesamt O(n) viele Diagonalen
¨
uberschreiten
• Aufbau in O(n)
Exemplarisch: Sanduhren und G b aufbauen!
G
T
L1 1.1 1.1
2.1
2.2
L2.1 L2.2
2.1 2.2
L3.1 3.2 3.3 3.4
3.1
3.3 3.4
3.2 3.1
L3.2 L3.3
Lneu2 L3.4 Lneu1
Durchlauf gem¨aß Cutting Theorem Durchlauf Menge von Listen Li mit P
i |Li| ∈ O(n) in Zeit P
i |Li| Aufbau Sanduhren in Zeit P
i |Li| ∈ O(n)
Zusammenfassung des Problems/Analyse
1. Berechne Triangulation T und Dual T∗: O(n)
2. Berechne hierarch. bal. Baum Tb, Sch.-Graph G:b O(n) 3. Komplexit¨at G:b O(n)
4. Berechne alle Sanduhren von G:b O(n)
5. Navigation zw. Dreiecken in G: Sequenz v. Diagonalen:b O(log n) 6. Konkat. Sanduhren f¨ur finale Sanduhr: O(log n)
7. Berechne Shortest Path aus final. Sanduhr: O(log n + k) Query: Start A ∈ P, Ziel B ∈ I: L¨ose 5), 6) und 7)!!
Berechne Shortest Path aus finaler Sanduhr
• Finale Sanduhr, Ziel und Start
• Data structure: Tangentenpunkte in logarithm. Zeit
• L¨ange in O(1), Pfad in O(k)
B A
d b
c a
Datenstruktur Hourglass
• Ketten der Sanduhren in bal. Baum speichern
• Tangente in logarithm. Zeit berechnen
• L¨ange in O(1), Pfad in O(k)
a
P1
P3 P2
P4 P5 P6 P7 P8
f
e d
c b
P8 P4
P2
P5 P1
P6 P3
P7 g
a
g f
c b
d e
Komplexit¨ at aller Sanduhren in O(n)
• Sanduhr zwischen Diagonalen di und dj in Gb
• Anzahl Diagonalen: Komplexit¨at des Baumes von dj
• Balance: height(dj)2
• F¨ur alle diese Kanten!
• Nur zweimal ist dj unterer Knoten! Einf¨ugen und direkter Vorg¨anger
• Sum. ¨uber alle H¨ohen:
log3
2
n
X
h=1
2 ×
2 3
h
× n
!
×h2 ∈ O(n)
• Lemma 1.14
Konstruktion G b + Sanduhren
• Cutting-Theorem ( ¨Ubung): konstruktiv!!
• Durchlauf von T∗
• W¨ahrend des Aufbaus: O(n) viele Diagonalen ¨uberschreiten
• Dabei Sanduhren aufbauen
Sanduhrenlemma: Lemma 1.15
Sanduhr S(di, dj) zwischen di und dj mit m(di, dj) Diagonalen.
Datenstruktur mit folgender Eigenschaft existiert:
i) Entfernung zwischen Punkten in Di und Dj in O(log(m(di, dj)) ii) K¨urzeste Wege zwischen Punkten in Di und Dj in
O(log(m(di, dj)) + k)
iii) Konkatenation zweier Sanduhren S(di, dj) und S(dj, dl) zu einer Sanduhr in Zeit O(log(m(di, dj)) + log(m(dj, dl)))
Beweis: Skizze f¨ur iii)!!!
Algorithmus 1.6
• Preprocessing:
– Gb + Rooted Tree
– Sanduhren f¨ur Kanten – Lokalisation Dreiecke
• Query, p, q:
– Lokalisation Dp und Dq – Pfad zw. Dp und Dq in Gb
– Sanduhr S(dp, dq) aus Sanduhren entlang des Pfades – L¨ange oder k¨urzester Weg
Guibas/Hershberger: Laufzeiten
• Datenstrukturen: G, Rooted Tree, Sanduhren, Trapezzerlegungb
• Preprocessing Zeit: O(n)
• Komplexit¨at: O(n)
• Lokalisation Dreiecke: O(log n)
• Pfad in Gb in O(log n)
• Konkatenation Sanduhren in O(log2 n) (O(log n))
• Query: O(log n + k) oder O(log n) f¨ur die L¨ange
• Theorem 1.16