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