Eingeschränkte Graphexploration Elmar Langetepe University of Bonn Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 1 Wiederholung! • • • • • Modell der 2D-Zellen, Spanning-Tree online aufbauen SpiralSTC/ScanSTC: Umwege entlang der Spanning-Tree Kanten SpiralSTC mit Subzellen-Modell äquivalent Algorithmische Beschreibungen, rekursiv definiert Analyse der Strategien: Lokale Analyse Vaterzelle s W 2D R aktuelle Zelle Online Bewegungsplanung D c Elmar Langetepe Kapitel 1 02.05.2010 Belegt aber begehbare 2D Zellen SS ’10 2 Wiederholung! Lokale Analyse • • • • Randzellen zählen Lokale Analyse, mehrfache Zellenbesuche, Zelle ankreiden Zellübergreifend (Verursacher!), zellintern Systematisch: Randzellen mit übergreifend plus intern 3 5 2 4 1 Online Bewegungsplanung Zelle Übergr. Intern Gesamt Randzellen 1 0 1 1 2 2 1 2 3 3 3 1 2 3 3 4 1 1 2 2 5 1 2 3 3 s c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 3 Graphenexploration! • • • • Graph G: Alle Kanten und Knoten DFS 2 kompetitiv, optimal Suchen ⇒ Nicht in die Tiefe Eingeschränkte Exploration, Leine/Akku (praxisrelevant) T Online Bewegungsplanung S c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 4 Eingeschränkte Online Graphenexploration • Graph G: Tiefe 1, längster kürzester Weg zum Start • DFS keine gute Idee, Rückweg unbekannt, Seillänge K • BFS keine gute Idee, Ω(K 2), K Anzahl Kanten S S Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 5 Modelle: Eingeschränkte Graphenexploration 1. Roboter an einer Leine der Länge l = (1 + α)r (ein Stromkabel). 2. Roboter muss nach 2(1 + α)r Schritten zum Startpunkt zurückkehren (Akku nachzuladen). 3. Großer Graph nur bis zur Tiefe d erkunden. Später mit fortschreitender Tiefe. • • • • Alle Knoten mit r Schritten erreichbar, Tiefe r (Radius) Alle Kanten haben Länge 1 (Erweitern: Ü-Aufgabe) Kleine Vorausschau α ist nötig Hier: Erste Variante, andere Ableiten (Lemma/Ü-Aufgabe) Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 6 Modelle: Eingeschränkte Graphenexploration Lemma 1.23 Die Akku-Variante mit Tankgröße 2(1 + β)r kann auf die Stromkabel-Variante mit Kabellänge l = (1 + α)r reduziert 1+β werden, für alle β > α. Die Kosten wachsen mit Faktor β−α . Beweis: Tafel!! Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 7 Offline Algorithmus: Akku-Variante • • • • • • • Offline: Graph ist bekannt Annahme: 2 Rundtripps möglich, 4r Akku Unbekannt, ob das NP-hard ist! Approximation O(|E|)! Algorithmus: Gedanklich DFS, 2|E| Schritte Unterteilen in Teilpfade der Länge 2r Startsegmente davon in Abstand r Besuchen, Teilpfad abarbeiten, zurück! Beispiel! Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 8 Beispiel Offline! l 2|E| 2r m × 2r + 2|E| ≤ 6|E| Beispiel: r = 5 Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 9 Offline Algorithmus: Akku-Variante Lemma 1.24: Einfacher Akku-Offline Algorithmus besucht nur 6|E| Kanten. • Jeden Teilpfad mit Laufzeit 2r erreichen • Exploration aller Teilpfade: 2|E| m l Teilpfade • 2|E| 2r l m • Erreichen in |E| 2r r l m |E| • |E| 2r ≤ r r + 1 2r ≤ 2|E| + 2r • 4|E| + 2r ≤ 6|E| Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 10 Online: Eingeschränkte Graphenexploration • Hier: Erste Variante (Stromkabel), andere Ableiten (Lemma/Ü-Aufgabe) • Erste Idee: Sobald Leine ausgereizt: Backtracking • bDFS, bounded DFS • Gute Idee, reicht aber nicht ganz! Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 11 Bounded DFS 1.11 bDFS( v, l ): if (l = 0) ∨ (keine unexplorierte Kante ex.) then RETURN end if for all unexplorierte Kante (v, w) ∈ E do Gehe von v zu w über (v, w). Markiere (v, w) als exploriert bDFS(v, l − 1). Gehe von w zu v über (v, w). end for Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 12 Bounded DFS • • • • Beispiel, Einheitskanten, Länge 1 Problem: Nicht alle Knoten werden erreicht. v bereits markiert, Ende bDFS alleine reicht nicht, mehrmals v s Online Bewegungsplanung 1 2 3 ... l c Elmar Langetepe Kapitel 1 02.05.2010 l−1 ... SS ’10 13 CFS Algorithmus: Knotenbeschriftung unexploriert sind Knoten, die noch nie besucht wurden. unvollständig sind Knoten, die besucht wurden, aber nur teilweise exploriert wurden, der Knoten hat noch inzidente, unexplorierte Kanten. exploriert sind Knoten, bei denen alle inzidenten Kanten exploriert wurden. Der Knoten ist vollständig bearbeitet. Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 14 CFS Algorithmus 1.12 • • • • • bDFS an verschiedenen Stellen aufrufen Menge disjkt. Teil-Bäume T = { T1, T2, . . . , Tk } Wurzeln s1, s2, . . . , sk Wähle Ti mit si am nächsten zu s, gehe zu si Pruning v. Ti: Bilde Twj mit Wurzel wj falls: 1. dTi (si, wj ) ≥ minDist = αr 4 2. Depth(Twj ) ≥ minDepth = αr 2 • Alle Twj zu T hinzufügen! Ti entfernen aus T • Ti ohne Twj ab si mit DFS explorieren • Dabei bDFS an Knoten mit unexplorierten Nachbarn Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 15 • • • • • • • Graph G0 von neu entdeckten Knoten und Kanten Spannbaum T 0 von G erstellen Mit Wurzel s0 mit minimalem Abstand zu s Alle diese Bäume zu T dazu Sonderfall: Inzischen mitexplorierte Bäume in T entfernen Bäume in T mit gemeinsamen Knoten verschmelzen Verschmelzen: Spannbaum mit neuer Wurzel Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 16 CFS Algorithmus 1.12 Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 17 V. Spanning Tree, neuer Tree! VI. Fertig! Entfernen! T0 T1 III. DFS in Rest T2! entfernen! IV. bDFS starten II. Pruning: (2,4), neuer Tree Tw w s1 T2 s2 I. Auswahl next! s3 s T3 {T1, T2, T3} Online Bewegungsplanung {Tw , T 0, T3} c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 18 CFS Algorithmus: Bestandteile! CFS( s, r, α ) T := { { s } }. repeat Ti:= der zu s nächste Teilbaum in G∗. si:= der zu s nächste Knoten in Ti. αr (Ti, Ti) := prune( Ti, si, αr 4 , 2 ). T := T \ {Ti} ∪ Ti. explore( T , Ti, si, (1 + α)r ). Entferne alle explorierten Bäume aus T . Verschmelze alle Bäume in T mit gemeinsamen Knoten. until T = ∅ Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 19 CFS Algorithmus: Pruning! prune( T, v, minDist, minDepth ) v := Wurzel von T . for all w ∈ T mit dT (v, w) = minDist do Tw := der Subtree von T mit Wurzel w. if maximale Distanz zwischen v und Knoten in Tw > minDepth then // Schneide Tw von T ab: T := T \ Tw . Ti := Ti ∪ {Tw }. end if end for RETURN (T, Ti) Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 20 CFS Algorithmus: Explore! explore( T , T, si, l ) Gehe von s nach si über den kürzesten bekannten Weg. Gehe mit DFS durch T . Falls dabei ein unvollständiger Knoten v angetroffen wird: l0 := verbleibende Seillänge. bDFS( v, l0 ). E 0 := Menge der neu explorierten Kanten. V 0 := Menge der Knoten in E 0. Berechne Spannbaum T 0 auf G0 = (V 0, E 0). T := T ∪ {T }. Gehe von si nach s zurück. Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 21 CFS Algorithmus: Beispiel!! • G∗ = (V ∗, E ∗) Graph der besuchten Kanten und Knoten (sukzessive) • Menge T • Pruning • Explore Online Bewegungsplanung c Elmar Langetepe Kapitel 1 02.05.2010 SS ’10 22