Kürzeste Wege in einfachen Polygonen Sofiya Scheuermann 28. Januar 2008 1 Inhaltsverzeichnis 1 Motivation 3 2 Grundlagen 3 3 Algorithmus 3.1 Zerlegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Zusammensetzung . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 6 4 Zusammenfassung 9 Literaturverzeichnis9 A Abbildungen 2 11 1 Motivation Diese Arbeit beschäftigt sich mit dem Problem des Finden eines kürzesten Weges in einem Polygon und basiert auf dem englischsprachigen Artikel Optimal Shor” test Path Queries in a Simple Polygon“ von Leonidas J. Guibss. und John Hershberger. Die Fragestellung gehört zu der alltäglichen Problemen Wie findet man ” einen kürzesten Weg, um ein Objekt von einer Stelle zur anderen zu bewegen?“ Eine Lösung des Problem ist der kürzeste Weg, der die beides Orten miteinander verbindet und eine Menge von Hindernisse vermeidet. Das Algorithmus, das später beschrieben wird ermöglicht den kürzesten Pfad in der Zeit O(log n) zu berechnen. 2 Grundlagen In diesem Abschnitt sollen die benötigten Begriffe genau definiert werden. Definition 2.1. Ein Polygon P ist eine Folge P = (v1 , v2 . . .) von Punkten, so dass keine drei aufeinander folgenden Punkte kollinear sind. Die vi sind die Ecken des Polygons. Hier wird es mit etwas vereinfachtem Modell, das nicht weniger für die Anwendungen relevant ist, gearbeitet, mit einfachen Polygonen. Definition 2.2. Ein Polygon P ist ein einfaches Polygon, wenn der Rand von P zusammenhängend ist und keine Selbstschnitte aufweist. Insbesondere hat ein einfaches Polygon im Innern keine Löcher Nun werden die Pfade beschrieben. Definition 2.3. Einen Weg W = w1 , w2 , . . . , wn bezeichnet man als Pfad, falls alle Knoten in der Folge W voneinander verschieden sind, das heißt, falls für alle i, j ∈ {1 . . . n} gilt, dass wi 6= wj , falls i 6= j. Man geht nun davon aus, dass der Pfad komplett in Polygon liegt, also kein Punkt der Pfades gehört nicht zur Polygon. Definition 2.4. Untere einem Kürzestem Pfad zwischen zwei Punkten p und q versteht man einen Pfad π(p, q), so dass es keinen von ersten unterschiedlichen Pfad π 0 (p, q) gibt, der kürzer ist. 3 Algorithmus Der Lösungsansatz besteht darin, das gegebene Problem auf diskretes Problem abzubilden. Durch das Abbildung wird der Rechenaufwand gespart, indem größte Teile des Polygons, die den Pfad nicht enthalten, in späteren Berechnungen nicht betrachtet werden. In einer Vorverarbeitung wird das Polygon in Teile zerteilt. Zu der Zerteilung wird ein dualer Graph erstellt, der Information über Erreichbarkeit der einzelnen Teilen darstellt. Mit der Hilfe des Erreichbarkeitsgraphen wird die Frage nach möglichem Pfadverlauf beantwortet. Somit ist die Suche nach dem Pfad auf kleinerem Unterpolygon reduziert. 3 3.1 Zerlegung Die Zerlegung muss einige Kriterien erfüllen: • effizient berechenbar • Pfadanfragen unterstützen Als atomare Teile der Zerlegung kommen die Dreiecke in Frage. Definition 3.1. Zu einem einfachem Polygon P ist die Triangulation T eine maximale Menge von kreuzungsfreien Liniensegmenten im Inneren von P , deren Endpunkte auf den Ecken von P liegen Eine beliebige Zerlegung T und dazugehörige duale Graph T ∗ würden die Pfadanfragen nicht effizient beantworten können. Eine Abhilfe an dieser Stelle schafft eine hierarchisch aufgebaute Zerlegung. Man macht sich zu Nutze, dass jeder Polygon von einer Diagonale in ungefähr gleiche Teile geteilt wird. Oder Formal auch: Satz 3.1 (Cutting-Theorem). Sei T eine Triangulation eines einfaches Polygons P , dann existiert eine Diagonale d ∈ T , so dass auf jeder Seite von d mindestens n3 − 1 Dreiecke liegen. Der Polygon R wird durch eine Diagonale d in zwei ungefähr gleich große Polygone R1 und R2 zerteilt, es wird weiter auf R1 und R2 rekursiv geteilt. 4.5 N 3.4 5.4 2.2 O P R 4.6 M L U 3.4 S 5.5 4.4 K V 3.2 4.7 J 5.6 T 5.3 Q H G 6.1 I 1.1 4.3 4.2 E F 2.1 B 3.1 D C 5.2 4.1 5.1 A Diese Zerlegung lässt sich als ein binärer Baum T̂ zusammenfassen. Die innere Knoten sind die Polygone R(d), repräsentiert durch die Diagonale d, die 4 R(d) in zwei Unterpolygone R1 und R2 teilt. Die Blätter können nicht weiter geteilt werden und entsprechen den Dreiecken der Triangulierung. Siehe die Abbildung A im Anhang. Der Fakt, dass die Zerlegung balanciert ist, garantiert dass der Baum T̂ logarithmisch in Anzahl der Polygonseiten hoch ist. Um die Pfadanfragen effizient zu beantworten wird nun der Faktorgraph G (Abbildung 6) gestützt auf T̂ konstruiert. Der Grundgerüst von G wird durch T̂ gebildet. Jeder Polygon R(d) in T̂ wird durch eine Kante mit jeder höher liegenden Diagonale f , die ihn berandet, verbunden. Nun wird gezeigt, dass die oben beschriebene Zerlegung, sowie die Hilfsstrukturen, wie Graphen T̂ und G die geforderte Kriterien erfüllen. • Berechnen Lemma 3.1. Es kann gezeigt werden, dass man Polygon P in der Zeit hierarchisch zerlegen kann, die für die Konstruktion der Triangulation benötigt wird. Beweis. Man benutze das Algorithmus von Tarjan und Van Wyk um Polygon in der Zeit O(n log log n) zu triangulieren. Anschließend wird darauf in der Zeit O(n) eine balancierte Zerlegung mit dazugehörigen Bäumen T̂ und G aufgebaut. Lemma 3.2. Der Faktorgraph G ist O(n) groß. Beweis. Im Graphen G begrenzt jede Diagonale genau zwei Teilpolygone. Also führen von jedem Knoten maximal zwei Kanten zur tiefer liegenden Schicht, wobei die Anzahl der Schichten ist gleich der Anzahl der Schichten in T̂ . Ein Teilbaum d in T̂ der Höhe h(d) enthält, wegen der h(d) Balancierung, mindestens 23 Blätter. Da die Teilbäume disjunkt sind kann es höchstens h(d) 2 n =n 3 h(d) 3 2 Knoten der Höhe h(d) geben. Daraus folgt: log3/2 n kGk ≤ X 2h(d) ≤ 2 d∈G X h=1 h h 2 n ∈ O(n) 3 • Pfadanfragen Lemma 3.3. Auf jedem Pfad liegen nur logarithmisch viele Diagonale, also es werden logarithmisch viele Dreiecke besucht. 5 Beweis. Sei π = d1 , d2 . . . dm ein beliebiger Pfad im dualen Graphen T ∗ . Nun betrachte Diagonale di , die der Pfad π im Baum T̂ überquert. Sei dˆ die Diagonale auf dem Pfad π mit geringster Tiefe im Baum T̂ . Man geht den Unterpfad π1 = d1 , d2 . . . dˆ entlang und verwirft alle Diagonale, die tiefer liegen, als bisherige. Also es bleiben nur die Diagonale mit abnehˆ Daraus mender Tiefe auf dem Pfad π1 . Analog mit π2 = dm , dm−1 . . . d. ergibt sich der Pfad π 0 = π1 π̄2 Die Tatsache, dass auf dem Weg zur Diagonale dˆ nur die Diagonalen mit abnehmender Tiefe auftreten garantiert, dass nur logarithmisch viele Diagonale besucht werden, folgt aus der logarithmischer Höhe des Baumes T̂ Lemma 3.4. Die Besuchte Diagonale lassen sich in der Zeit O(log n) in Graphen G bestimmen Beweis. Sei π = d1 , d2 . . . dˆ. . . dm−1 , dm der Pfad in T und dˆ hat die geringste Tiefe in T̂ . dˆ lässt sich in O(log n) Zeit bestimme, da T̂ balanciert ist. Laufe im Baum T̂ von der Diagonale d1 zu dˆ aufwärts und prüfe für jeden Knoten di , ob di in der Triangulation T auf dem Weg von d1 zu dˆ liegt. Falls ja, wird die Kante zu di im Graphen G in den Weg aufgenommen. Analog wird auch auf dem Weg dm . . . dˆ vorgegangen. Der Schwerpunkt in dieser Vorgehensweise ist der Test, ob eine Diagonal di auf dem Weg liegt. Nun wird gezeigt, dass es in einer konstanten Zeit durchgeführt werden kann. Betrachte den Graphen T ∗ , ein der Knoten w ∈ T ∗ wird als Wurzel ausˆ wenn gezeichnet. So liegt di genau dann auf dem Weg zwischen d1 und d, di ein Vorgänger einer der beiden Knoten ist. Ausgehend von der Wurzelknoten w besuche alle Knoten n ∈ T ∗ in Preorder und Postorder und beschrifte jeden entsprechend mit seinen Werten pre(n) und post(n). Nun gilt für jeden Knoten a, b ∈ T ∗ : a ist Vorgänger von b genau dann, wenn gilt pre(a) < pre(b) ∧ post(a) > post(b) 3.2 Zusammensetzung Nachdem überflüssige Teile des Polygons aus weiterer Betrachtung ausgeschlossen sind, wird der Zusammensetzung und weiterberechnung des Pfades beschrieben. Aus der vorangegangenen Abschnitt ist es bekannt, dass der Pfad sich durch logarithmisch viele Dreiecken durchläuft. Somit reduziert sich das Problem auf einen Unterpolygon, der aus einer Kette der Dreiecke mit jeweils einer gemeinsamen Kante. Um den Pfadverlauf schneller und effizienter zu bestimmen, werden bestimmte Informationen vorab berechnet und gespeichert. An dieser stelle wird eine Hilfsdatenstruktur, so genannte Sanduhr, eingeführt. Eine Sanduhr repräsentiert alle kürzeste Pfade zwischen zwei Diagonalen. Jeder Kante in G wird eine Sanduhr zugeordnet. Durch eine Konkatenation der Sanduhren an gemeinsamen Kanten entlang des berechneten Weges erhält man eine Beschreibung aller kürzesten Wegen zwischen zwei gewünschten Diagonalen. 6 Definition 3.2. Seien ABCD die Eckpunkte von Polygon P . Eine Sanduhr S(d1 , d2 ) zwischen zwei Diagonalen d1 = AB und d2 = CD wird von Diagonalen d1 und d2 berandet, sowie von kürzesten Pfaden π(A, C) und π(B, D). Eine Sanduhr wird geschlossen genannt, falls die Pfade π(A, C) und π(B, D) gemeinsame Segmente haben, ansonsten ist die Sanduhr offen. A C q p B D Abbildung 1: offene Sanduhr A C q p B D Abbildung 2: geschlossene Sanduhr Bei der Konkatenation der Sanduhren kann es zu drei verschiedenen Ergebnissen kommen. • Beide Sanduhren sind geschlossen So ist auch Produktsanduhr ist geschlossen • Eine der Sanduhren ist geschlossen Auch in dem Falle kommt zu einer geschlossener Sanduhr als Ergebnis. • Beide Sanduhren sind offen Der Resultat der Konkatenation kann sowohl offen, als auch geschlossen sein. Bei der Suche nach dem kürzestem Pfad zwischen zwei gegebenen Punkten p ∈ d1 und q ∈ d2 müssen folgende Fallunterscheidung gemacht werden. • Sanduhr S(d1 , d2 ) ist geschlossen. So wird die Suche auf das Finden von der kürzesten Wegen π(p, e) und π(f, q), der restliche Weg besteht aus der gemeinsame Polygonkette π(e, f ) • Sanduhr S(d1 , d2 ) ist offen 7 Betrachte dazu die Menge der gegenseitig sichtbaren Punkte F = {rs|r ¯ ∈ d1 , s ∈ d2 } Falls ein l ∈ F existiert, sodass p und q auf gleicher Seite von l liegen, etwa auf der Seite b und d, dann besteht der kürzeste Weg aus der Tangenten von p zu π(b, d) und q zu π(b, d), sowie dem Rest des Weges π(b, d), der die beide Tangentenpunkte verbindet. Falls eine solche l ∈ F nicht existiert, dann setzt sich der Weg π(p, q) aus folgenden Stücken zusammen: Tangenten von p zu π(a, c), q zu π(b, d), Tangente von π(a, c) zu π(b, d), sowie den Stücken aus den Wegen π(a, c) und π(b, d), die Tangentenpunkte verbinden. Also reduziert sich die Suche nach dem kürzestem Weg in einer Sanduhr auf die Suche nach einer Tangente, was mit Hilfe der binäre Suche effektive bewerkstelligt werden kann. Die Konkatenation ist eine fundamentale Operation auf Sanduhren. Seien S(d1 , d2 ) und S(d2 , d3 ) zwei Sanduhren mit einer gemeinsamer Kante d2 . Also reduziert sich die Konkatenation, ähnlich wie bei der Suche nach dem kürzesten Weg, auf das Finden von zwei Tangenten für zwei Paare von Polygonketten. E C A F B D Abbildung 3: Konkatenation der Sanduhren Durch geschickte Verwaltung von Polygonketten in Bäumen können einzelne Geraden aus der Polygonketten in einer konstanter Zeit pro Gerade abgefragt werden. Somit geschieht die Konkatenation zwei Sanduhren, sowie das Suchen nach dem Weg effizient in O(log n) Zeit. Zur Konstruktion und der Verwaltung der Ketten siehe [GH87, ff. 56-61]. Bei der Suche nach dem Pfad müssen O(log n) Sanduhren in jeweils der Zeit O(log n), also Kostet die Konstruktion der Sanduhr S(dp , dq ) die O(log2 n) Zeit. Man kann diesen Faktor auf nur O(log n) ausbessern. Es wird ausgenutzt, dass der Baum T̂ balanciert ist, also gibt es O(n/ log n) Knoten mit mindestens α log2 n Nachvolgern. Der Parameter α dient dazu, den Ausgleich zu herstellen, zwischen der Zeit zur Vorberechnung und der Zeit, die später bei der Suche nach Pfaden erspart wird. Sei U die Menge der oberen Knoten in T̂ . Modifiziere G durch einfügen von Kanten für alle Knoten aus U zu deren Nachfolger in U . Jeder Knoten in U kann von seinem Vorgänger durch O(log n) Kanten erreicht werden. Also es werden O(n/ log n) Zusätzliche Kanten in G eingefügt, jede zusätzliche Kante wird mit einer Sanduhr versehen, das kostet O(log n) je die Kante. 8 Die Zusätzliche Kanten stellen die benötige Abkürzung bei der Berechnung, so dass es möglich wird einen der logarithmischen Faktoren zu ersparen. Seien p und q Anfragepunkte. In logarithmischer Zeit mit der Hilfe von T̂ und G werden die Diagonalen auf dem Weg von p zu q gefunden. Sei dˆ die höchste (in T̂ ) Diagonale auf dem Weg. Hier kommt eine Fallunterscheidung dˆ ∈ / U : Das bedeutet, dass Unterpolygon P 0 , der den Weg π(p, q) enthält, enthält O(log2 n) Kanten. Es müssen, dem entsprechend nur O(log(log2 n)) = O(log log n) Sanduhren berechnet werden, was insgesamt die Zeit O((log log n)2 ) kostet. Vorherige Schritte verbrauchen mehr Zeit und deswegen ist dieser Schritt nicht ausschlaggebend. dˆ ∈ U : Betrachte die Diagonale auf dem Pfad π(p, q) π 0 (p, q) = d1 , d2 , . . . d− . . . dˆ. . . d+ . . . dm−1 , dm Seien d− und d+ die tiefsten Diagonalen, die noch in U sind. Da d− ,d+ ˆ und S(d, ˆ d+ ) beNachfolger von dˆ sind, sind die Sanduhren S(d− , d) reits vorberechnet. Die Konkatenation wird O(log n) kosten. Die restliche Pfaden, analog zu dem Fall dˆ ∈ / U , sind nicht allzu lang und kosten O((log log n)2 ). Also kostet der gesamte Berechnung O(log n) 4 Zusammenfassung In dieser Ausarbeitung wurde gezeigt, dass effektives Suchen nach kürzesten Wegen in einfachen Polygonen möglich ist. Hier ein Überblick über gesamten Algorithmus • Vorverarbeitung 1. Berechne Triangulation T , duale Graph T ∗ , hierarchische Zerlegung T̂ , Faktorgraph G 2. Beschrifte den Graph T ∗ mit Pre- und Postorderwerten 3. Berechne für jede Kante (d1 , d2 ) ∈ G eine Sanduhr S(d1 , d2 ) Gesamtkosten der Vorbereitungphase O(n) sowie lineare Platz wird benötigt • Anfrage für Punkte p und q 1. Bestimme der Dreiecke die Punkte p und q enthalten 2. Bestimme mit Hilfe des Graphen G die Diagonalen auf dem Pfad von p nach q 3. Konstruiere durch Konkatenation der Sanduhren längst des Pfades die Sanduhr S(dp , dq ) 4. Bestimme den kürzesten Weg von p nach q mit Hilfe der Sanduhr S(dp , dq ) Gesamtkosten der Berechnung O(log2 n) durch zusätzliche Vorberechnung kann auf O(log n) gedruckt werden. 9 Literatur [GH87] J. Guibas and J. Hershberger. Optimal shortest path queries in a simple polygon. 1987. [KT05] Langetepe E. Kamphans T., Klein R. Script zur Vorlesung ,,Bewegungsplanung für Roboter”, 2005. 10 A Abbildungen 4.5 N 3.4 5.4 2.2 O P R 4.6 M L U 3.4 S 5.5 K V 3.2 4.7 J 5.6 T 5.3 Q H G 6.1 I 1.1 4.3 4.2 E F 2.1 B 3.1 D 4.4 5.1 C 5.2 4.1 A Abbildung 4: Der Beispielpolygon 11 1.1 2.1 2.2 3.1 4.2 4.1 5.1 A E 5.2 B 3.2 C 3.3 4.3 F G H K 5.3 6.1 D 4.5 4.4 J 5.4 L N P O M I Abbildung 5: Der Baum T̂ 12 3.4 4.7 4.6 Q 5.5 R 5.7 T S U V 1.1 2.1 2.2 3.1 4.2 4.1 5.1 A E 5.2 B 3.2 C 3.3 4.3 F G H K 5.3 6.1 D 4.5 4.4 J 5.4 L N M I Abbildung 6: Der Faktorgraph G 13 3.4 P O 4.7 4.6 Q 5.5 R 5.6 T S U V