Zwei Wächter Problem Algorithmische Geometrie und Bewegungsplanung Jan Meyer WS 2004/2005 Zwei Wächter Problem Algorithmische Geometrie und Bewegungsplanung WS 2004/2005 Von Jan Meyer Problemstellung Zwei Wächter laufen von einem gemeinsamen Startpunkt aus auf getrennten Routen zu einem gemeinsamen Endpunkt. Die Routen bilden dabei zusammen ein einfaches n-eckiges Polygon mit ausgezeichneten Start- und Zielknoten. Können die beiden Wächter ihre Route abschreiten ohne sich zu irgendeinem Augenblick aus den Augen zu verlieren? Ziel Wächter Start Abbildung 1: Abstrahierte Problemstellung Christian Icking und Rolf Klein [1] haben gezeigt, dass sich dieses Problem mit linearen Speicherverbrauch in O(n log n) Zeit entscheiden lässt. Mit dem von ihnen gezeigten Seite 1 von 12 Zwei Wächter Problem Algorithmische Geometrie und Bewegungsplanung Jan Meyer WS 2004/2005 Methode kann eine Bewegungsabfolge für beide Wächter minimaler Länge in O(n log n + k) Zeit berechnet werden, wobei k der Anzahl der Bewegungskommandos entspricht. Verwandte Problemstellungen In der Literatur sind eine Reihe ähnlicher Problemstellungen zu finden. Das wahrscheinlich bekannteste darunter ist das „minimum watchmen“ Problem, bei dem eine möglichst kleine Anzahl von Wächtern in einem Polygon platzieren werden soll, so dass jede Stelle im Polygon von mindestens einem Wächter eingesehen wird. Ein klassisches Anwendungsbeispiel für diese Problemklasse ist das Platzieren von Videokameras zur Raumüberwachung. Bei dem „shortest watchmen route“ Problem versucht man einen möglichst kurzen Pfad für einen Wächter im Polygon zu finden, so dass alle Punkte im Polygon von mindestens einem Punkte des Pfades gesehen werden. Ein Nachtwächter, der auf seiner Runde in alle Räume und Ecken einmal hineinsehen muss, ist für diese Klasse ein gutes Beispiel. Beide Problemklassen sind im Gegensatz zu dem hier behandelten Problem NP-hart. Formale Definitionen Gegeben sei ein einfaches Polygon P aus n Knoten. Zwei Knoten s,z ∈ P. Zwei geordnete Pfade L, R von s nach z bilden das Polygon. Sei T die Vereinigung der inneren Fläche von P und P selbst. z L R T s Abbildung 2: Formale Definition Seite 2 von 12 Zwei Wächter Problem Algorithmische Geometrie und Bewegungsplanung Jan Meyer WS 2004/2005 Sichtbarkeit Ein Punkt x ∈ P ist sichtbar von Punkt y ∈ P, genau dann wenn das verbindende Liniensegment xy vollständig in T enthalten ist. Das Liniesegment xy wird auch Sichtbarkeitssegment genannt. Zwei Sichtbarkeitssegmente p1q1 und p2q2 kreuzen sich, genau dann, wenn die Reihenfolge von p1 und p2 in L genau andersherum ist wie die Reihenfolge von q1 und q2 in R. z L R s Abbildung 3: Sichtbarkeitssegment Walk • • • • Ein „walk“ auf P ist ein Paar (l, r) von stetigen Funktionen, so dass: o l: [0,1] → L, r: [0,1] → R o l(0) = r(0) = s, l(1) = r(1) = z, o l(t) ist sichtbar von r(t) für alle t ∈ [0,1]. o Alle Liniensegmente l(t) r(t) nennt man „walk Liniensegment“ eines „walk“. Der Punkt l(t) ist „walk partner“ von r(t) und umgekehrt. Ein „walk“ auf P wird „straight“ genannt, wenn beide Funktionen l und r monoton steigend in Bezug auf die Orientierung von L und R sind. P wird („straight“) „walkable“, wenn ein („straight“) „walk“ möglich ist. Ein („straight“) „walk“ auf P von „walk Liniensegment“ p0q0 zu p1q1, mit p0 < p1, q0 < q1 und p0q0 sowie p1q1 vollständig in T enthalten, muss folgende Bedingungen erfüllen: o l(0) = p0, r(0) = q0, l(1) = p1 und r(1) = q1 o l und r sind monoton steigend. General walk In der hier behandelten Problemstellung suchen wir einen „walk“, der bezüglich der von beiden Wächtern zurückgelegten Strecke minimal ist. So lassen sich die Bewegungsabfolgen in zwei Klassen einteilen. • Gleichläufiger Vorwärtsbewegung: Beide Wächter bewegen sich vorwärts auf L bzw. R. Stillstand wird dabei als Vorwärtsbewegung gewertet. (Abbildung 4) • Gegenläufige Bewegung: Die Wächter bewegen sich in entgegengesetzter Richtung. (Abbildung 5) Seite 3 von 12 Zwei Wächter Problem Algorithmische Geometrie und Bewegungsplanung Jan Meyer WS 2004/2005 z L z R L R s s Abbildung 4: Gleichläufige Vorwärtsbewegung Abbildung 5: Gegenläufige Bewegung Das sich beide Wächter rückwärts bewegen ist zwar für einen „walk“ zulässig, wird aber ausgeschlossen, wenn für die Wegstrecke das Minimum erreicht werden soll. Wenn ein „walk“ gefunden wird, bei dem sich beide Wächter ausschließlich vorwärts bewegen, erreicht dieser das Ziel in jedem Fall auf kürzestem Wege. Reflexive Knoten Als reflexive Knoten werden Knoten in P bezeichnet, deren innere Winkel einen Wert größer 180° annehmen. (Abbildung 6) Knoten, deren innere Winkel kleiner oder gleich 180° betragen, werden konvexe Knoten genannt. (Abbildung 7) z L z R L R β α s s Abbildung 6: Reflexiver Knoten ( α>180° ) Abbildung 7: Konvexer Knoten ( β<=180° ) Wenn ein Polygon nur aus konvexen Knoten besteht, dann können sich die Wächter von jedem Punkt des Polygons aus sehen und sich damit ungehindert vorwärts zum Ziel bewegen. Reflexive Knoten führen zu Sichtbarkeitssegmenten, die nicht komplett in T gebettet sind. Shooting queries Durch „shooting queries“ können die Aufenthaltsorte der Wächter unter Berücksichtigung der reflexive Knoten eingegrenzt werden. Sei pj ein reflexiver Knoten aus P, pj-1 sein Vorgänger und pj+1 sein Nachfolger unter Berücksichtig der Orientierung des Pfad auf dem er sich befindet. Die Funktion ray(x,u) berechnet für einen beliebigen Punkt von P und einem Richtungsvektor u den ersten Seite 4 von 12 Zwei Wächter Problem Algorithmische Geometrie und Bewegungsplanung Jan Meyer WS 2004/2005 „hitpoint“ mit P. Forw(pj) liefert das Ergebnis von ray(pj,pj-1pj) und Backw(pj) das von ray(pj,pj+1pj). z L pj-1 z R Forw(pj) L pj+1 pj R pj Backw(pj) s s Abbildung 8: Forward Shoot Abbildung 9: Backward Shoot Forw(pj) definiert die obere Grenze von Positionen auf R, die Wächter 2 einnehmen darf, damit sich Wächter 1 auf der eingehenden Kante zu pj bewegen kann. Backw(pj) definiert, analog dazu, die untere Grenze auf R, so dass die ausgehende Kante von pj beschritten werden kann. Chazelle and Guibas haben eine Implementierung für ray(x,u) vorgestellt der nach einem einmaligen Schritt für P für jeden Punkt x aus T und dem Richtungsvektor u diesen ersten „hitpoint“ mit P berechnet. Sie haben gezeigt, dass die Vorbereitung O(n log n) Zeit benötigt, während die einzelne Abfrage danach noch O(log n) Zeit braucht. Suchstruktur Mit den oben genannten Funktionen ist es nun möglich eine effiziente Suchstruktur für die weitere Verarbeitung zu erstellen. Dazu werden 2 balancierte Baume erzeugt, jeweils einen für L und R. Die Knoten des entsprechenden Pfades werden dazu nacheinander in den Baum eingefügt. Für jeden reflexiven Knoten p, der dabei auftaucht, werden Backw(p) und Forw(p) berechnet und in den Baum eingetragen, auf dessen Pfad der „hitpoint“ liegt. Die Anzahl der Knoten, welche in die Bäume eingefügt werden ist linear zur Anzahl der Knoten von P, da maximal für jeden zweiten Knoten zwei weitere hinzukommen. Daraus ergibt sich für das Erstellen der Suchstruktur aus dem Einfügen der Knoten und der Berechnung der „shooting queries“ eine Gesamtlaufzeit von O(n log n). Abbruchkriterien Einige Eigenschaften des Polygons P haben zur Folge, dass kein walk gefunden werden kann. Diese lassen sich mit Hilfe der genutzten Suchstruktur leicht überprüfen und werden im folgenden beschrieben. Die Notwendigkeit der folgenden Eigenschaften, um die Existenz eines „walks“ zu entscheiden, wird in den folgenden Abschnitten durch die Beispiele verdeutlicht. Das diese Seite 5 von 12 Zwei Wächter Problem Algorithmische Geometrie und Bewegungsplanung Jan Meyer WS 2004/2005 Eigenschaften hinreichend sind, beweisen Icking und Rolf ausführlich und wird im folgenden vorrausgesetzt. Nicht einsehbare Bereiche Jeder Punkt des Pfades L muss von mindestens einem Punkt des Pfades R zu sehen sein und umgekehrt. Sollte diese Bedingung nicht erfüllt sein, gibt es einen Punkt p auf P an dem ein Wächter von dem anderen Wächter niemals gesehen werden kann. Ein „walk“ ist somit unmöglich. Formal lässt sich dies wie folgt darstellen: Alle Stellen des Pfad L sind genau dann von R sichtbar, wenn p < Backw(p) ∈ L oder p > Forw(p) ∈ L gilt. Während der Erzeugung der Suchstruktur wird diese Bedingung bei der Berechnung der „shooting queries“ überprüft. Wird eine Verletzung festgestellt, terminiert der Algorithmus. z Backw(p1) L R p1 T p2 Forw(p2) s Abbildung 10: Sichtbarkeit Deadlocks bei gleichläufiger Vorwärtsbewegung Es gibt Situationen in denen es nicht möglich ist, weiter zu gehen ohne das sich die Wächter aus den Augen verlieren. Die folgenden Abbildungen 11 und 12 illustrieren zwei Bespiele für einen Deadlock in der gleichläufigen Vorwärtsbewegung: Seite 6 von 12 Zwei Wächter Problem Algorithmische Geometrie und Bewegungsplanung Jan Meyer WS 2004/2005 z L Forw(q) z R T L R T Forw(p) p q p q Backw(q) Wächter 1 Wächter 2 Backw(p) Wächter 1 Wächter 2 s s Abbildung 11: Forward Deadlock Abbildung 12: Backward Deadlock In Abbildung 11 wartet Wächter 1 an Punkt p angekommen, darauf dass Wächter 2 den Punkt Forw(p) erreicht. Wächter 2 steht an Punkt q und erwartet seinerseits das Erscheinen von Wächter 1 an Punkt Forw(p). Beide Wächter verharren in dieser Warteposition. Dies nennt man einen „deadlock“. Die zweite Situation, in Abbildung 12 dargestellt, bleibt Wächter 1 an Punkt Backw(q) und Wächter 2 an Backw(p) stehen. Wächter 1 wartet darauf, dass Wächter 2 Punkt q erreicht, während Wächter 2 seinen Weg nicht fortsetzt, da er das Erreichen von Punkt p durch Wächter 1 abwartet. Die Existenz von Deadlocks in P lassen sich formal durch folgende Formel beschreiben: Es existieren p aus L und q aus R, so dass q < Backw(p) ∈ R und p < Backw(q) ∈ L oder q > Forw(p) ∈ R und p > Forw(q) ∈ L gilt. Deadlocks bei gegenläufiger Bewegung Bei den oben genannten Beispielen wird von einer gleichläufigen Vorwärtsbewegung ausgegangen. Befinden sich die Wächter in einer gegenläufigen Bewegung, stellt sich der Sachverhalt wie folgt dar: In Abbildung 13 wartet Wächter 1 an Punkt Forw(q) darauf, dass Wächter 2 die ausgehende Kante von Punkt q in Richtung s durchschreitet, da er diese zu einem späteren Zeitpunkt nicht mehr einsehen kann. Gleiches tut Wächter 2 an Punkt Backw(p) bezüglich Punkt p und Wächter 1. Seite 7 von 12 Zwei Wächter Problem Algorithmische Geometrie und Bewegungsplanung Jan Meyer WS 2004/2005 Wächter 1 kann in Abbildung 14 Punkt Backw(q) nur erreichen, wenn er vorher Punkt p durchläuft. Dies ist ihm nur möglich, wenn Wächter 2 mindestens Punkt Forw(p) einnimmt, wozu es notwendig wäre, dass Wächter 1 Punkt Backw(q) erreicht. z z L L R p T T Wächter 2 Backw(q) Backw(p) Forw(q) R Forw(p) p q Wächter 2 q Wächter 1 Wächter 1 s s Abbildung 14: Deadlock (II) Abbildung 13: Deadlock (I) Es existieren p ∈ L und q ∈ R, so dass q < Backw(p) ∈ R und p < Backw(q) ∈ L oder q > Forw(p) ∈ R und p > Forw(q) ∈ L gilt. Wechsel zwischen vorwärts- und gegenläufiger Bewegung Um mit beiden Wächtern den Endpunkt z zu erreichen, kann es notwendig sein, dass einer der beiden Wächter Kehrt macht und zu einem früheren Punkt auf seinem Weg zurückkehrt, damit er den anderen auf dessen Weg nicht aus den Augen verliert. Die Punkte an denen dies notwendig wird, nennt man Wendepunkte und werden im folgenden erläutert. Wendepunkte Während sich die Wächter beide vorwärts bewegen, gibt es folgende zwei Konstellationen bei denen es notwendig ist, dass ein Wächter wendet und zu einen bereits besuchten Punkt zurückkehrt, um dem anderen Wächter das Fortsetzen seines Wege zu ermöglichen: ( ----- folgende Beispiele erläutern 15 16-----) Seite 8 von 12 Zwei Wächter Problem Algorithmische Geometrie und Bewegungsplanung z z L T L R p2 Backw(p1) p1 Forw(p2) Wächter 1 Jan Meyer WS 2004/2005 Backw(q1) Forw(q2) T R q2 q1 Wächter 1 Wächter 2 Wächter 2 s s Abbildung 16: Rechter Keil Abbildung 15: Linker Keil Es existieren p1, p2 ∈ L oder q1, q2 ∈ R, so dass p1 < p2 und Forw(p2) < Backw(p1) oder q1 < q2 und Forw(q2) < Backw(q1) gilt. ( ----- Beispiele erläutern 17 18-----) z z L T p2 p1 L R Wächter 2 T Backw(q2) Backw(p2) Forw(q1) Forw(p1) q2 R Wächter 2 q1 Wächter 1 Wächter 1 s s Abbildung 18: XXX Abbildung 17: XXX Es existieren p1, p2 ∈ L oder q1, q2 ∈ R, so dass p1 < p2 und Forw(p1) < Backw(p2) oder q1 < q2 und Forw(q1) < Backw(q2) gilt. Seite 9 von 12 Zwei Wächter Problem Algorithmische Geometrie und Bewegungsplanung Jan Meyer WS 2004/2005 Algorithmus zur Berechnung der Wendepunkte auf einem “general walk” Der Algorithmus turnpoint teilt das Polygon in „straight walk“- und „straight counter walk“Abschnitte auf. Gegenläufige Wendepunkte und „deadlocks“ ( Es müssen nur die gleichläüfigen Eigenschaften herangezogen werden, weil ....) ( Ergeben in Verschachtelung mit einen linken bzw. rechten Keil Keile bzw. deadlocks der gleichläufigen Vorwärtsbewegung ) ( Notwendigkeit an Beispielen verdeutlichen, Hinreichend siehe Icking und Rolf ) Algorithm turnpoint 1 utp:=s; 2 ltp:=g; 3 FOR all reflex vertices p ∈ L in increasing order DO 4 IF ltp > utp 5 THEN IF Backw(p) > utp 6 THEN utp := Backw(p) 7 ELSE IF Forw(p) < utp 8 THEN ltp := Forw(p) ENDIF ENDIF 9 ELSE IF Forw(p) < ltp 10 THEN ltp := Forw(p) 11 ELSE IF Backw(p) > ltp 12 THEN report-turning-points(utp,ltp); 13 utp := Backw(p); 14 ltp := g ENDIF ENDIF ENDIF ENDFOR; 15 IF ltp < utp 16 THEN report-turning-points(utp,ltp) ENDIF Seite 10 von 12 Zwei Wächter Problem Algorithmische Geometrie und Bewegungsplanung Jan Meyer WS 2004/2005 ( Obiges textuell durchlaufen / für alle pi die zeilen die in FOR ausgeführt werden aufzählen ) Bewegungsabschnitte eines “general walks” Straight Walk ( Sichtbarkeitsintervalle ) ( walk partner durch grenzen der intervalle erläutern ) ( Laufzeit ) Straight Counter Walk ( analogie zu Straight walk verdeutlichen ) Algorithmus – two watchmen Mit den Definitionen und Erkenntnissen aus den vorangehenden Kapiteln lässt sich der komplette Algorithmus zusammensetzen. Algorithm two watchmen 1. Vorbereitung der Shooting Queries 2. Erstellung der Suchstruktur 3. Prüfung auf nicht sichtbare Bereiche 4. Prüfung auf Deadlocks 5. Berechnung der Wendepunkte 6. Berechnung der Bewegungskommandos für jeden Abschnitt Laufzeitanalyse (einzele Teile mit Laufzeiten aufzählen) (gesamt laufzeit) Seite 11 von 12 Zwei Wächter Problem Algorithmische Geometrie und Bewegungsplanung Jan Meyer WS 2004/2005 Abschätzung der Anzahl von Bewegungkcommandos im „worstcase“ (Abbildung nachbauen und deutschen Titel geben) Wie in Abbildung X zu sehen ist, muss Wächter 2 auf R die n/2 Knoten für jeden Keil in L zweimal durchlaufen. Es ergibt eine untere Schranke von n². Da wir einen „walk“ minimaler Länge annehmen, wird jedes mögliche Sichtbarkeitssegment nur einmal angenommen. Da L und R nach Hinzufügen der „hitpoints“ jeweils maximal O(n) Knoten enthalten, ergibt sich eine obere Schranke von n². Literaturverzeichnis Seite 12 von 12