Offline Bewegungsplanung: Innerhalb von Polygonen Elmar Langetepe University of Bonn Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 1 Shortest Path in einfachen Polygonen • • • • • Einfaches Polygon P , DS: Seq. Knoten/Kanten, CCW-order Start A und Ziel B Berechne kürzesten Weg von A nach B innerhalb P Polygonale Kette mit Knoten aus P /Länge des Pfades Algorithmus: Ω(n), |P | = n B A p[0] p[1] Length: 42 p[2] p[3] Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 2 Def. 1.10 Triangulation einfaches Polygon P Diagonale • Segment mit Knoten aus P • Verläuft innerhalb P • Schneidet den Rand von P nicht Triangulation von P • Graph: Kanten und Knoten von P • Plus: maximale Menge sich nicht-schneidener Diagonalen • Komplexität und Berechnung • Datenstruktur DCEL • DFS walk-through/navigation Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 3 Doubly connected edge list (DCEL) • Planarer Graph • für jede Kante • Name/Link für Flächen, Knoten • nächste Kante in CW/CCW Order von Knoten v/w • Navigation Offline Bewegungsplanung e(v)cw e(v)ccw v F1 e(w)ccw c Elmar Langetepe 31.10.16 Kürzeste Wege E w F2 e(w)cw WS ’1617 4 Dualer Graph eines Planaren Graphen Dualer Graph D(G) eines Planaren Graphen G • • • • • ein Knoten für jede Fäche eine Kante zwischen angrenzenden Fächen einer Kante nicht-schneidend D(D(G)) = G Realisation Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 5 Einfache, effiziente Lösung (Lee/Preparata) • Triangulation von P : Graph T , DS: DCEL, Adjacency list • Dualer Graph: D(T ) (Tree), Depth First Search (DFS) on D(T ) • Subpolygon P 0, Kette von Dreiecken/Diagonalen A Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege B WS ’1617 6 Shortest Path in P 0 • Kette von of Dreiecken/Diagonalen (Data structure) • Induktiv: Shortest paths zu den Endpunkten der Diagonalen • Ind. Anf, Ind. Schritt, Letzte Diagonale⇒ Ergebnis, Laufzeit? l1 A B d16 d1 r1 l11 10 d11 r11 d10 r10 Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 7 Zusammenfassung: Alg. 1.4 • • • • • • Triangulation von P : O(n) Zeit und Platz Dualer Graph der Triangulation: O(n) Zeit und Platz DFS auf Dualen Graphen: O(n) Zeit Berechne P 0: O(n) Zeit und Platz Berechne Shortest Path zu End-Diagonale, induktiv: O(n)?? Shortest Path von A nach B innerhalb P in O(n) Zeit und Platz! optimal!! • Theorem 1.11 Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 8 Verbleibt: Indukiver Schritt! • Trichter Situation! DS: Zwei Ketten/Shortest Path! • Nächste Diagonale! Tangententest! Nächster Trichter! di+1 l[1] • Insgesamt, nicht mehr O(n) Tests!! l[2] r[1] vr A l[3] l[4] s s l[5] di r[4] r[3] Rand von P r[2] r[1] Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 9 Zusammenfassung: Lee/Preparata: Shortest Path innerhalb P • • • • • • • • Triangulation von P : O(n) Zeit und Platz Dualer Graph der Triangulation: O(n) Zeit und Platz DFS im Dualen Graphen: O(n) Zeit Berechnung P 0: O(n) Zeit und Platz Berechnung Shortest Path für End-Diagonale, induktiv: O(n) Shortest Path von A nach B in P in O(n) Zeit und Platz Optimal für einzelne Anfrage!! Theorem 1.11 Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 10 Mehrere Shortest Path Anfragen • Viele Anfragen im Laufe der Zeit • Häufig über gleiche Teil-Sequenz von Dreiecken • Berechnungen ausnutzen A B C D Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 11 Mehrere Shortest Path Anfragen • • • • • Preprocessing: Für Kürzeste-Wege-Anfragen vorbereiten Struktur des Polygons in DS ablegen Komplexität in O(n), Aufbau in O(n) Anfrage in O(log n) bzw. O(log n + k) Animation Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 12 Preprocessing für P ! (Guibas/Hershberger) Cutting theorem (Theorem 1.12) von Chazelle ’82: In jeder Triangulation T existiert immer eine Diagonale für eine balancierte Einteilung von T ! n Mehr als − 1 Dreiecke auf jeder Seite 3 1.1 Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 13 Baum Tb der bal. hierarch. Triangulation A B 4.2 4.1 2.1 T P 3.2 3.1 4.3 4.2 Q 4.4 P O T I 2.2 3.4 3.3 4.6 4.5 N 5.4 5.5 M 6.1 F E Offline Bewegungsplanung 3.4 5.7 2.2 D 3.2 L 6.1 E O 5.4 4.5 4.4 F 5.5 G 3.3 N M 1.1 5.6 H J 4.6 1.1 2.1 Q4.3 3.1 4.1 4.7 C I G 4.7 5.6 H 5.7 B J A D C L c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 14 b von P Bal. hierarch. Triangulation T T 1.1 2.1 Q4.3 2.1 P L 6.1 2.2 D 3.2 E O 5.4 4.5 F 5.5 G 4.4 3.3 M N H 5.6 1.1 J 4.6 I 2.2 3.2 4.3 Q 3.3 4.6 P T I 5.6 Kürzester Weg zwischen Dreiecken in T (O(n)) oder Tb (O(log n)) T: P (3.2) (4.4) (1.1) (5.4) (6.1) (4.5) (5.5) (3.3) (4.6) I Tb: P (4.3) (3.2) (2.1) (1.1) (2.2) (3.3) (4.6) I I) Finde richtige Sub-Sequenz in Tb: P, (3.2), (1.1), (3, 3), (4, 6), I II) Fülle die Löcher : (3.2) ⇒ (1.1) und (1.1) ⇒ (3, 3) Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 15 b aus Abalancierten Baum Tb Schichtengraph G B 4.2 4.1 2.1 G P 3.1 3.2 4.3 4.2 Q 4.4 P O T I 2.2 3.3 3.4 4.6 4.5 N 5.4 5.5 M 6.1 F E Offline Bewegungsplanung 3.4 5.7 2.2 D 3.2 L 6.1 E O 5.4 4.5 4.4 F 5.5 G 3.3 M 1.1 H 5.6 N J 4.6 1.1 2.1 Q4.3 3.1 4.1 4.7 C I G 4.7 5.6 H 5.7 B J A D C L c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 16 b aus bal. Baum Tb Schichtengraph G T 1.1 2.1 4.3 2.1 P 3.2 2.2 3.2 2.2 3.3 4.3 3.3 1.1 4.6 Q 4.6 P I G I 5.6 b löst Problem I): Teil-Sequenz der Diagonalen: O(log n) G b Füllen der Löcher: Z.B.. zwischen (3.3) und (1.1) Kanten in G! Preprocessing: Kanten führen zu Sanduhr von Diagonalen Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 17 Sanduhren zwischen Diagonalen in P b • Kante in G • Shortest Path zwischen Endpunkte der Diagonalen: DS l[1] l[2] 1.1 3.3 1.1 r[2] 1.1 3.3 G Offline Bewegungsplanung c Elmar Langetepe 31.10.16 Kürzeste Wege l[3] r[1] r[3] 3.3 Sanduhr WS ’1617 18 DS Sanduhr im Allgemeinen • Offene Sanduhr zwischen Diagonalen, DS • Geschlossene Sanduhr zwischen Diagonalen, DS • Konkatenation von mehreren Sanduhren, finale Sanduhr l[1] l[5] l[1] l[2] l[2] l[4] l[3] 3.3 1.1 r[3] r[2] l[3] s[2] r[4] r[2] r[5] Offene Sanduhr l[4] s[1] 3.3 6.2 s[3] r[1] r[6] r[1] Geschlossene Sanduhr r[3] r[4] 1.1 6.2 3.3 Kombiniere Sanduhren Offline Bewegungsplanung Neue Sanduhr! c Elmar Langetepe 31.10.16 Kürzeste Wege WS ’1617 19 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 31.10.16 Kürzeste Wege WS ’1617 20 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 31.10.16 Kürzeste Wege G I 5.6 WS ’1617 21 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 31.10.16 Kürzeste Wege WS ’1617 22 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 31.10.16 Kürzeste Wege WS ’1617 23 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 13 / 10 8 / 13 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 31.10.16 Kürzeste Wege 17 / 15 WS ’1617 24 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 31.10.16 Kürzeste Wege WS ’1617 25