Kürzeste Wege in einfachen Polygonen

Werbung
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
Herunterladen