Schnellste Wege in geometrischen Netzwerken

Werbung
Fakultät für Mathematik
Universität Karlsruhe
Ein schneller
Konstruktionsalgorithmus für
eine Quickest-Path-Map
bezüglich der City-Metrik
Diplomarbeit
von
Robert Görke
([email protected])
September 2004
Ausgeführt unter der Leitung von
Referent/Betreuer:
Dr. Alexander Wolff
Fakultät für Informatik
Universität Karlsruhe
Koreferent:
Prof. Dr. Willy Dörfler
Fakultät für Mathematik
Universität Karlsruhe
I
Eidesstattliche Erklärung
Hiermit versichere ich, dass ich die vorliegende Diplomarbeit ohne Hilfe Dritter
und nur mit den angegebenen Quellen und Hilfsmitteln angefertigt habe. Diese
Arbeit hat in gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen.
Karlsruhe, am 5. Oktober 2004
Robert Görke
III
Zusammenfassung
Das City-Voronoi-Diagramm ist eine Partition der Ebene in Einzugsgebiete
von Bezugspunkten. Es wird durch schnellste Pfade, die L1 -Norm und ein beschleunigendes, isothetisches Transportnetzwerk induziert. Die Quickest-PathMap (auch verfeinertes City-Voronoi-Diagramm) bildet ein augmentiertes CityVoronoi-Diagramm, welches Einzugsgebiete in Regionen äquivalenter schnellster
Pfade zur Menge der Bezugspunkte partitioniert. Wir erstellen die QuickestPath-Map durch Simulation einer Wellenfrontausdehnung und berechnen Änderungen der kombinatorischen Gestalt der Wellenfront mit Hilfe einer Technik von Eppstein (1995). Dabei nutzen wir die dreidimensionale Interpretation Straight-Skeleton-Strukturen einer Quickest-Path-Map. Für n Bezugspunkte und c Netzwerkkanten beträgt der Speicherbedarf des vorgestellten Algorithmus O((c + n)polylog(c + n)) und die asymptotische Laufzeit ebenfalls
O((c + n)polylog(c + n)), was das bisher schnellste Resultat von Aichholzer u. a.
(2002) mit einer asymptotischen Laufzeit von O(n log n + c2 log c) verbessert.
Die Quickest-Path-Map beantwortet Quickest-Path-Anfragen in einer asymptotischen Laufzeit von O(L + log(c + n)), wobei L die Komplexität der Ausgabe
ist.
V
Dank
Ich danke Alexander Wolff für seine Unterstützung und Mühe, Willy Dörfler
für seine Ratschläge, David Eppstein und Jeff Erickson für ihre Erläuterungen
und Hinweise, Michael Lamoureux für seine Unterstützung, meiner Familie für
ihre große Hilfe und Mühe, Kirsten für ihren moralischen und tatkräftigen Beistand, der Firma Valve für ihre Ablenkung und der Firma Windmere für einen
wunderbaren Ventilator.
Inhaltsverzeichnis
Eidesstattliche Erklärung
I
Zusammenfassung
III
Dank
V
Inhaltsverzeichnis
VII
Abbildungsverzeichnis
XI
Tabellenverzeichnis
XV
Algorithmenverzeichnis
XVII
1 Einführung
1
1.1
Bisherige Arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
Ergebnisse und Methoden . . . . . . . . . . . . . . . . . . . . . .
3
1.3
Liste verwendeter Variablen . . . . . . . . . . . . . . . . . . . . .
6
2 Grundstrukturen
9
2.1
Das Straight-Skeleton . . . . . . . . . . . . . . . . . . . . . . . .
2.2
Das City-Voronoi-Diagramm
. . . . . . . . . . . . . . . . . . . .
13
2.3
Der Algorithmus von Aichholzer u. a. . . . . . . . . . . . . . . .
14
2.4
Unser Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3 Die Wellenfrontausdehnung
9
19
3.1
Das Transportnetzwerk . . . . . . . . . . . . . . . . . . . . . . .
19
3.2
Schnellste Pfade und die City-Metrik
. . . . . . . . . . . . . . .
20
3.3
Die Wellenfront . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.3.1
Der Start der Wellenfront . . . . . . . . . . . . . . . . . .
23
3.3.2
Eine erste Datenstruktur . . . . . . . . . . . . . . . . . .
24
VIII
INHALTSVERZEICHNIS
3.3.3
Typen von Ereignissen . . . . . . . . . . . . . . . . . . . .
25
3.3.4
Relevanz von Ereignissen . . . . . . . . . . . . . . . . . .
29
3.4
Die lineare Größe . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
3.5
Definierende Objekte und Pfadkodierung . . . . . . . . . . . . . .
37
4 Die Wellenfront im Raum
39
4.1
Eine Kante verschwindet . . . . . . . . . . . . . . . . . . . . . . .
39
4.2
Die Wellenfront als Höhenlinie . . . . . . . . . . . . . . . . . . .
40
4.3
Die Netzwerksegmente als Wände . . . . . . . . . . . . . . . . . .
41
5 Der Kern
43
5.1
Die Diskretisierung . . . . . . . . . . . . . . . . . . . . . . . . . .
43
5.2
Die globale Prognose . . . . . . . . . . . . . . . . . . . . . . . . .
44
5.3
Lokale Prognosen . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
6 Elemente der Wellenfront
47
6.1
Figuren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
6.2
Knoten und Strahlen . . . . . . . . . . . . . . . . . . . . . . . . .
49
6.3
Parameter von Knotenstrahlen . . . . . . . . . . . . . . . . . . .
51
6.4
Kanten und Streifen . . . . . . . . . . . . . . . . . . . . . . . . .
56
6.4.1
Kanten . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
6.4.2
Streifen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
6.4.3
Streifentypen . . . . . . . . . . . . . . . . . . . . . . . . .
60
Die Interaktionen der Streifen . . . . . . . . . . . . . . . . . . . .
62
6.5.1
Bescheidene Streifen . . . . . . . . . . . . . . . . . . . . .
62
6.5.2
Für jedes Ereignis ein Streifen
. . . . . . . . . . . . . . .
63
Anzahl der Datenstrukturen . . . . . . . . . . . . . . . . . . . . .
64
6.5
6.6
7 Eine Vereinfachung der Daten
7.1
67
Orthogonalisierende Scherungen . . . . . . . . . . . . . . . . . . .
68
7.1.1
Ausrichtung des Koordinatensystems . . . . . . . . . . . .
69
7.1.2
Ausrichtung der Streifenseiten orthogonal zur x-Achse . .
71
7.1.3
Ausrichtung der Streifenböden orthogonal zur y-Achse . .
72
7.1.4
Ausrichtung der Streifenböden parallel zur x-Achse . . . .
74
7.1.5
Ausrichtung der Streifenkanten parallel zur y-Achse . . .
75
7.1.6
Die Zeitkorrektur . . . . . . . . . . . . . . . . . . . . . . .
76
7.2
Korrektheit der Transformation . . . . . . . . . . . . . . . . . . .
78
7.3
Die Anpassung der Transformation f
80
. . . . . . . . . . . . . . .
INHALTSVERZEICHNIS
IX
8 Die Minimierungsanfragen
81
8.1
Die Datenstrukturen für Ray-Shooting-Anfragen . . . . . . . . .
82
8.1.1
Die erste Stufe der Datenstruktur . . . . . . . . . . . . . .
84
8.1.2
Die zweite Stufe der Datenstruktur . . . . . . . . . . . . .
84
8.1.3
Die dritte Stufe der Datenstruktur . . . . . . . . . . . . .
84
8.1.4
Die vierte Stufe der Datenstruktur . . . . . . . . . . . . .
85
8.2
Orthogonale Bereichsanfrage ersetzt Ray-Shooting-Anfrage . . .
85
8.3
Redundante Typ-A-Ereignisse . . . . . . . . . . . . . . . . . . . .
86
8.4
Die Datenstrukturen für Lowest-Intersection-Anfragen . . . . . .
87
8.4.1
Die erste Stufe der Datenstruktur . . . . . . . . . . . . . .
88
8.4.2
Die zweite Stufe der Datenstruktur . . . . . . . . . . . . .
89
8.4.3
Die dritte Stufe der Datenstruktur . . . . . . . . . . . . .
89
8.5
Orthogonale Bereichsanfrage statt Lowest-Intersection-Anfrage .
89
8.6
Die Anpassung der Minimierungsanfragen . . . . . . . . . . . . .
90
8.7
Der Ergebnisfilter . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
8.8
Fractional-Cascading . . . . . . . . . . . . . . . . . . . . . . . . .
92
9 Anfragen
95
9.1
Die Quickest-Path-Map . . . . . . . . . . . . . . . . . . . . . . .
95
9.2
Der Quickest-Path-Graph . . . . . . . . . . . . . . . . . . . . . .
96
9.3
Die Pfadsuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
9.3.1
Point-Location . . . . . . . . . . . . . . . . . . . . . . . .
99
9.3.2
Zum definierenden Objekt . . . . . . . . . . . . . . . . . . 100
9.3.3
Der schnellste Pfad . . . . . . . . . . . . . . . . . . . . . . 100
10 Analyse der Ergebnisse
103
10.1 Konstruktion der Quickest-Path-Map . . . . . . . . . . . . . . . . 103
10.2 Das Ergebnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
10.3 Degeneriertheiten und Besonderheiten . . . . . . . . . . . . . . . 107
10.3.1 h-orientierte Straight-Skeletons . . . . . . . . . . . . . . . 107
10.3.2 Simultane Ereignisse . . . . . . . . . . . . . . . . . . . . . 107
10.3.3 Selbstständige gezogene Kanten . . . . . . . . . . . . . . . 108
10.4 Der Einfluss von k . . . . . . . . . . . . . . . . . . . . . . . . . . 109
11 Fazit
111
11.1 Kritik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
11.2 Anwendung und Anschauung . . . . . . . . . . . . . . . . . . . . 112
11.3 Offene Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
X
INHALTSVERZEICHNIS
11.4 Wegpunkte dieser Arbeit . . . . . . . . . . . . . . . . . . . . . . . 113
Literaturverzeichnis
117
Index
121
Abbildungsverzeichnis
1.1
Beispiel einer Anordnung von C und S . . . . . . . . . . . . . . .
2
1.2
Mehrere schnellste Pfade p1 , . . . , p4 von a nach b . . . . . . . . .
2
2.1
Ein schrumpfendes Polygon . . . . . . . . . . . . . . . . . . . . .
10
2.2
Das konstruierte Straight-Skeleton . . . . . . . . . . . . . . . . .
10
2.3
Ein einfaches Straight-Skeleton . . . . . . . . . . . . . . . . . . .
11
2.4
Gewichtetes Straight-Skeleton . . . . . . . . . . . . . . . . . . . .
11
2.5
Dach eines gewichteten Polygons . . . . . . . . . . . . . . . . . .
12
2.6
Ausdehnendes Polygon . . . . . . . . . . . . . . . . . . . . . . . .
12
2.7
Wellenfronten verschmelzen . . . . . . . . . . . . . . . . . . . . .
12
3.1
Verschiedene schnellste Wege . . . . . . . . . . . . . . . . . . . .
21
3.2
Regionen kombinatorisch äquivalenter Wege . . . . . . . . . . . .
22
3.3
Start der Wellenfront als L1 -Kreis . . . . . . . . . . . . . . . . .
23
3.4
Start der Wellenfront als City-Metrik-Kreis . . . . . . . . . . . .
23
3.5
Lage eines Punkts p der Wellenfront . . . . . . . . . . . . . . . .
24
3.6
Ein Typ-A-Ereignis . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.7
Ein Typ-B-Ereignis . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.8
Ein Typ-C-Ereignis . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.9
Drei simultane Typ-C-Ereignisse . . . . . . . . . . . . . . . . . .
28
3.10 Vier simultane Typ-C-Ereignisse . . . . . . . . . . . . . . . . . .
28
3.11 Ein Typ-D-Ereignis . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.12 Andere Sichtweise eines Typ-D-Ereignisses . . . . . . . . . . . . .
28
3.13 Typ-D-Ereignis vereint zwei Wellenfronten . . . . . . . . . . . . .
29
3.14 Die Wellenfront wird unzusammenhängend . . . . . . . . . . . .
30
3.15 Ein virtuelles Typ-A-Ereignis bahnt sich an . . . . . . . . . . . .
31
3.16 Ein virtuelles Ereignis wird vorweggenommen . . . . . . . . . . .
31
3.17 Redundanz durch gleiche Segmentgeschwindigkeit . . . . . . . . .
32
XII
ABBILDUNGSVERZEICHNIS
3.18 Redundanz durch langsamere Segmentgeschwindigkeit . . . . . .
32
3.19 Höhere Segmentgeschwindigkeit verhindert Redundanz . . . . . .
32
3.20 Ein redundantes Typ-B-Ereignis . . . . . . . . . . . . . . . . . .
32
3.21 Die Menge der Skelettkanten wird unzusammenhängend . . . . .
33
3.22 Der Knoten v∞ . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
3.23 Θ(c(c + n)) Typ-A-Ereignisse . . . . . . . . . . . . . . . . . . . .
35
3.24 Das Maximum redundanter Ereignisse pro Ecke . . . . . . . . . .
36
3.25 Verfeinerung zum Konstruktionsdiagramm . . . . . . . . . . . . .
36
3.26 Eine β-Kante . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
4.1
Ein Typ-A-Ereignis im Raum . . . . . . . . . . . . . . . . . . . .
41
4.2
Ein Typ-B-Ereignis im Raum . . . . . . . . . . . . . . . . . . . .
42
6.1
Eine 0-Nadel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
6.2
Eine 1-Nadel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
6.3
Eine 2-Nadel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
6.4
Eine innere 2-Nadel
. . . . . . . . . . . . . . . . . . . . . . . . .
48
6.5
Eine 3-Nadel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
6.6
Eine 4-Nadel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
6.7
Pionier-Kanten und gezogene Kanten . . . . . . . . . . . . . . . .
50
6.8
Ein Knoten der Wellenfront biegt ab . . . . . . . . . . . . . . . .
52
6.9
Zwei divergierende Knoten . . . . . . . . . . . . . . . . . . . . . .
53
6.10 Zwei konvergierende Knoten . . . . . . . . . . . . . . . . . . . . .
53
6.11 Zwei entgegengesetzt wandernde Knoten . . . . . . . . . . . . . .
54
6.12 Zwei parallel wandernde Knoten . . . . . . . . . . . . . . . . . .
55
6.13 Indirekte Interferenz von Kanten . . . . . . . . . . . . . . . . . .
56
6.14 Steigung einer Kante der Wellenfront . . . . . . . . . . . . . . . .
57
6.15 Streifen von KV . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
6.16 Beispiele von Streifenklassen . . . . . . . . . . . . . . . . . . . . .
60
6.17 Die vier verschiedenen Streifentypen . . . . . . . . . . . . . . . .
61
7.1
Ein Streifen und ein Strahl im Raum . . . . . . . . . . . . . . . .
68
7.2
Winkeldefinition bei Drehung des Koordinatensystems . . . . . .
69
7.3
Situation nach der Ausrichtung . . . . . . . . . . . . . . . . . . .
71
1
7.4
Scherung f in der x-y-Ebene . . . . . . . . . . . . . . . . . . . .
72
7.5
Das Ergebnis von f 1 im Raum . . . . . . . . . . . . . . . . . . .
72
7.6
Scherung f 2 in der x-y-Ebene . . . . . . . . . . . . . . . . . . . .
73
7.7
2
Das Ergebnis von f im Raum . . . . . . . . . . . . . . . . . . .
73
ABBILDUNGSVERZEICHNIS
7.8
7.9
Scherung f 3 in der x-z-Ebene . . . . . . . . . . . . . . . . . . . .
3
Das Ergebnis von f im Raum . . . . . . . . . . . . . . . . . . .
4
7.10 Scherung f in der y-z-Ebene . . . . . . . . . . . . . . . . . . . .
4
XIII
74
74
75
7.11 Das Ergebnis von f im Raum . . . . . . . . . . . . . . . . . . .
75
7.12 Zwei Strahlen müssen zeitkorrigiert werden . . . . . . . . . . . .
76
7.13 Typ-4-Streifen
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
8.1
Ein vierdimensionaler Bereichsbaum . . . . . . . . . . . . . . . .
85
8.2
Die Koordinatenrichtung Ψ . . . . . . . . . . . . . . . . . . . . .
91
9.1
Ein β-Kanten-Pfad . . . . . . . . . . . . . . . . . . . . . . . . . .
97
9.2
Pfad zum definierenden Objekt . . . . . . . . . . . . . . . . . . . 100
10.1 Konstruktion der Quickest-Path-Map . . . . . . . . . . . . . . . . 104
10.2 Straight-Skeleton einer h-orientierten Figur . . . . . . . . . . . . 107
10.3 Kollision zweier Kanten . . . . . . . . . . . . . . . . . . . . . . . 108
10.4 Spezielle gezogene Kanten . . . . . . . . . . . . . . . . . . . . . . 108
11.1 Eine komplexe Quickest-Path-Map . . . . . . . . . . . . . . . . . 115
Tabellenverzeichnis
1.1
Verwendete Variablen . . . . . . . . . . . . . . . . . . . . . . . .
6
6.1
Die verschiedenen Streifentypen . . . . . . . . . . . . . . . . . . .
61
7.1
Richtungskosinusse bei Drehungen . . . . . . . . . . . . . . . . .
70
Algorithmenverzeichnis
1
2
3
Beantwortung einer Ray-Shooting-Anfrage durch eine orthogonale Bereichsanfrage . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Beantwortung einer Lowest-Intersection-Anfrage durch eine orthogonale Bereichsanfrage . . . . . . . . . . . . . . . . . . . . . . 90
Ausgabe der Knoten des schnellsten Pfades von p nach S . . . . 100
”For arbitrary polygons we can avoid this issue by chanting the
holy mantra ’Assume general position! Assume general position!’, but even that isn’t very satisfying.”
Jeff Erickson, 2004
Kapitel 1
Einführung
Angenommen im Jahr 2050 sind die Fluten des Kraft- und Personenverkehrs aus
den Straßen von Manhattan verbannt. In der riesigen Fußgängerzone beschleunigt lediglich ein Transportnetzwerk von Fließbändern den Weg der zahllosen
Passanten und Besucher. Die ausschließlich horizontal und vertikal angelegten
Straßen, die Manhatten wie ein dichtes Gitter überziehen, bieten einem Fußgänger stets einen offensichtlichen Weg zu einem der vielen Postämter, solange die
Richtung bekannt ist. Doch Zeit ist kostbar, und daher ist ein System nötig, das
einen Füßgänger für jeden beliebigen Punkt der Stadt darüber informiert, wie
er auf schnellstem Weg zu dem in kürzester Zeit erreichbaren Postamt gelangt.
Dabei sollen Umwege über das schnelle Netzwerk immer dann genutzt werden,
wenn sich diese zeitlich lohnen. Ein ähnliches Problem stellt sich einem Kurierdienst, der an mehreren Stützpunkten in der Stadt Kuriere stationiert hat. Bei
Eingang eines Auftrags muss entschieden werden, wie und von welchem Stützpunkt aus der Auftragsort am schnellsten erreicht werden kann.
Das Ergebnis dieser Arbeit ist ein Algorithmus zur Konstruktion einer Datenstruktur in Form einer Quickest-Path-Map der Ebene, mit der man Anfragen
nach schnellsten Pfaden effizient beantworten kann. Beantwortet werden Anfragen nach dem (zeitlich) nächsten Bezugspunkt und dem schnellsten Pfad zu
diesem. Die algorithmische Komplexität einer solchen Quickest-Path-Anfrage
wird offenbar, wenn man bedenkt, dass es nicht notwendigerweise ausreicht, das
Transportnetzwerk anzusteuern und diesem einfach bis zu einem Punkt zu folgen, der nahe am Zielort gelegen ist. Es kann an vielen Stellen von Vorteil sein,
zwischendurch eine Abkürzung zu Fuß zu bewältigen.
Das Transportnetzwerk C ist ein planarer Graph, bestehend aus c geraden, sich nicht schneidenden Strecken als Kanten, welche isothetisch (das heißt
vertikal oder horizontal) ausgerichtet sind, und an jedem Punkt betreten oder
verlassen werden können. Jede Kante besitzt eine von k (konstant) verschiedenen Geschwindigkeiten, mit der man sich auf dieser Kante fortbewegen kann,
während abseits des Transportnetzwerks nur die Einheitsgeschwindigkeit bezüglich der L1 -Norm möglich ist. Die n Bezugspunkte der Menge S sind beliebig
in der Ebene verteilt. Sie können auch auf dem Netzwerk liegen. Abbildung 1.1
zeigt beispielhaft eine Anordnung von Netzwerk und Bezugspunkten. Kanten
des Netzwerks stellen wir in dieser Arbeit stets als dicke, durchgezogene Linien
2
Einführung
ω1
e1c
e3c
e2c
e7c
e5c
ω2
a
ω4
e4c
p3
ω3
e6c
ω5
Abbildung 1.1: Eine mögliche
Anordnung von 5 Bezugspunkten ω1 , . . . , ω5 und 7 Kanten des
Netzwerks e1c , . . . , e7c .
p1
p4
p2
b
Abbildung 1.2: Mehrere schnellste
Pfade p1 , . . . , p4 von a nach b (sogar
ohne Netzwerk).
dar, Bezugspunkte als dicke Punkte.
Die betrachtete Situation unterscheidet sich grundlegend von dem klassischen graphentheoretischen Problem, kürzeste Pfade zwischen Knoten von Graphen zu finden. Während die Kantenmenge in Graphen nur beschränkt viele
einfache und somit möglicherweise kürzeste Pfade zwischen Knoten ermöglicht,
betrachten wir keine solche Kantenmenge zwischen den Knoten. Vielmehr ist
Fortbewegung in der gesamten Ebene möglich, wobei die Kanten des Transportnetzwerks ein schnelles Vorankommen ermöglichen. Abbildung 1.2 zeigt,
dass in unserer Situation sogar abseits des Transportnetzwerks viele schnellste
Pfade zwischen den Punkten a und b existieren.
1.1
Bisherige Arbeiten
In diesem Abschnitt betrachten wir einige Ergebnisse aus bisherigen Arbeiten,
welche sich mit eng verwandten Problemen der Pfadsuche befassen. Das Zusammenspiel der L1 -Norm und der beschleunigenden Netzwerkkanten lässt zwar
nicht direkt die Definition einer Abstandsfunktion zu, betrachtet man jedoch
schnellste Pfade, so wird eine Metrik induziert, welche wir in Abschnitt 3.2 genauer betrachten. Aichholzer u. a. (2002) geben dieser Metrik den Namen CityMetrik. Die Autoren stellen einen Algorithmus vor, der die Quickest-Path-Map
für n Bezugspunkte und c Netzwerkkanten in einer asymptotischen Laufzeit von
O(n log n + c2 log c) erstellt, und einen optimale Speicherbedarf von O(c + n)
hat. Dabei ist auf dem gesamten Transportnetzwerk nur eine Geschwindigkeit
möglich. Die erzeugte Datenstruktur beantwortet Quickest-Path-Anfragen für
beliebige Punkte in einer asymptotischen Laufzeit von O(L + log(c + n)), wobei
L die Komplexität der Ausgabe ist. Da unsere Arbeit zum Teil auf den Ergebnissen von Aichholzer u. a. (2002) beruht, betrachten wir den Algorithmus kurz
in Abschnitt 2.3.
Dieses Modell einer City-Metrik wurde erstmals von Abellanas u. a. (2001)
vorgestellt. Die Autoren erarbeiten einige grundlegende Eigenschaften der CityMetrik und geben einen Konstruktionsalgorithmus der Quickest-Path-Map für
n Bezugspunkte und einer einzelnen Gerade als Transportmittel an, welcher
eine asymptotische Laufzeit von O(n log n) benötigt. Gewali u. a. (1990) unter-
1.2 Ergebnisse und Methoden
3
suchen verwandte Modelle in denen den Regionen einer Partition der Ebene ein
Gewicht gegeben wird, welches die Reisegeschwindigkeit in dieser Region angibt. Das sogenannte Gewichtete-Regionen-Problem besteht nun darin, für zwei
Anfragepunkte p und q den schnellsten Pfad zwischen p und q zu finden, wobei
die so gewichtete euklidische Metrik verwendet wird. Mitchell u. a. (1987) liefern
effiziente Verfahren für den speziellen Fall, dass nur die Gewichte 0 und 1 erlaubt
sind. Dies führt zu dem geodäsischen Pfadproblem, wo es darum geht, kürzeste
Pfade unter Vermeidung von Hindernissen zu finden. Ebenfalls bezüglich der
euklidischen Metrik diskutieren Hurtado u. a. (1999) die Situation für nur eine
einzelne Netzwerkkante.
Betrachtet man eine eindimensionale Version des Modells von Gewali u. a.
(1990), so kann damit auch die in dieser Arbeit betrachtete Situation behandelt
werden. Die Autoren erstellen den schnellsten Pfad zwischen zwei gegebenen
Anfragepunkten in einer Laufzeit von O(c2 ). Notwendig ist allerdings eine Anpassung an unser Modell, dem in der Ebene die L1 -Metrik zugrundeliegt, dessen
Kanten des Netzwerks isothetisch liegen, und bei dem nur eine konstante Anzahl von Geschwindigkeiten zur Verfügung steht. Zudem unterscheidet sich die
Form der Anfragen bei Gewali u. a. offensichtlich von unseren Quickest-PathAnfragen.
Ein eng verwandtes Modell für n Bezugspunkte stellen auch Aurenhammer
und Klein (2000) vor. Bei dem sogenannten Airlift-Voronoi-Diagramm ist ein
Netzwerk aus c Fluglinien, welches nicht notwendigerweise die Dreiecksungleichung erfüllt, nur an designierten Punkten zugänglich. Die Autoren zeigen, dass
das Airlift-Voronoi-Diagramm für eine beliebige Lp -Metrik durch eine Reduktion auf ein gewöhnliches Lp -Voronoi-Diagramm mit (c+n) Kreisen dieser Metrik
in einer Laufzeit von O(n log n + c2 ) konstruiert werden kann.
1.2
Ergebnisse und Methoden
In diesem Abschnitt gehen wir auf die Ergebnisse und Methoden des in dieser Arbeit vorgestellten Algorithmus ein. Basierend auf dem Modell von Aichholzer u. a. (2002) betrachten wir einen Algorithmus zur Konstruktion einer
Quickest-Path-Map, welche eine Partition der Ebene in Regionen gleicher (zeitlich) nächster Bezugspunkte darstellt, und welche Anfragen nach dem nächsten
Bezugspunkt und nach dem schnellsten Pfad zu diesem beantwortet. Der einzige Unterschied zu dem von uns untersuchten Modell besteht darin, dass die
Kanten des Netzwerks jeweils eine von konstant vielen verschiedenen möglichen
Geschwindigkeiten bieten anstatt nur einer einzigen. Der in dieser Arbeit vorgestellte Algorithmus benötigt zur Konstruktion der Quickest-Path-Map für n Bezugspunkte und einem Transportnetzwerk der Komplexität c eine asymptotische
5
Laufzeit von O((c + n)(log(c + n)) log log(c + n)) und einen Speicherbedarf von
3
O((c+n)(log(c + n)) ). Eine Quickest-Path-Anfrage mit einem beliebigen Punkt
nach dem schnellsten Pfade zu S (der Menge der Bezugspunkte) beantwortet
diese Datenstruktur in einer Laufzeit von O(L+log(c+n)), wobei L die Komplexität der Ausgabe ist; eine einfache Voronoi-Anfrage nach dem am schnellsten
erreichbaren Bezugspunkt kann in einer Laufzeit von O(log(c + n)) beantwortet
werden. Der bislang schnellste Algorithmus für dieses Modell stammt von Aich-
4
Einführung
holzer u. a. (2002) und benötigt, wie in Abschnitt 1.1 erwähnt, eine Laufzeit von
O(n log n + c2 log c) sowie linearen Speicherplatz. Bei einer geringen Erhöhung
des Speicherbedarfs stellt der in dieser Arbeit vorgestellte Algorithmus somit eine Verbesserung der asymptotischen Laufzeit auf einen subquadratischen Wert
dar.
Bei der Konstruktion der Quickest-Path-Map, welche wir in Abschnitt 2.2
detailliert betrachten, kommt eine neue interne Struktur für einfache Polygone zum Einsatz, genannt Straight-Skeleton, erstmals erwähnt von Aichholzer
u. a. (1995). In Abschnitt 2.1 werden einige Grundlagen des Straight-Skeletons
dargelegt. Analog zu dem Modell von Aichholzer u. a. (2002) wird das StraightSkeleton auf beliebige Figuren generalisiert und auf die Bezugspunkte und die
Elemente des Transportnetzwerks angepasst. Es ist bislang keine Definition des
Straight-Skeletons mit Hilfe einer Abstandsmetrik bekannt. Dies ist auf die inhärente Komplexität schnellster Pfade zurückzuführen, welche vom Transportnetzwerk abhängig ist. Daher wird zur Konstruktion des Straight-Skeletons eine kontinuierliche Wellenfrontausdehnung simuliert und diskretisiert. Nach der Durchführung angepasster Transformationen der Elemente der Wellenfront liefert uns
eine Technik zur Aufrechterhaltung nächster Paare, vorgestellt von Eppstein und
Erickson (1999), in sublinearer Zeit stets die nächste eintretende Kollision der
Wellenfront mit dem Netzwerk oder der Wellenfront selbst. Diese Technik wird
in Kapitel 5 vorgestellt. Sie wird von Ray-Shooting-Anfragen und deren Inversen gespeist. Nach Aichholzer u. a. (2002) hat eine Quickest-Path-Map lediglich
lineare Komplexität in (c + n) (siehe Abschnitt 3.4). Mit Hilfe dieser Aussage
zeigen wir, dass sich die kombinatorische Gestalt der Wellenfront im Verlauf
der Ausdehnung über die Ebene nur zu einer linearen Anzahl von Zeitpunkten
verändert, und dass es somit möglich ist, diese Menge diskreter Zeitpunkte (und
nicht mehr) in jeweils polylogarithmischer Zeit zu behandeln. Eine graphische
Darstellung der Struktur des Algorithmus ist in Abbildung 10.1 zu sehen, eine
komplexe Quickest-Path-Map in Abbildung 11.1. Man beachte, dass eine Partition im engeren Sinn aus Knoten, offenen Kanten und offenen Regionen besteht.
Da die Knoten und Kanten einer Quickest-Path-Map jedoch Punkte angeben,
für die der nächste Bezugspunkt nicht eindeutig ist, betrachten wir die Regionen der Quickest-Path-Map als abgeschlossen. Ein Punkt, der auf dem Rand
mehrerer Regionen liegt, kann somit beliebig einer dieser Regionen zugewiesen
werden.
In Kapitel 2 werden zunächst die beiden Grundstrukturen, das StraightSkeleton und das City-Vornoi-Diagramm betrachtet, sowie der Algorithmus von
Aichholzer u. a. (2002). In Kapitel 3 untersuchen wir dann die Mechanik der Wellenfrontausdehnung und erweitern die Wellenfront in Kapitel 4 um eine Raumdimension. Kapitel 5 behandelt die oben erwähnte Technik von Eppstein und
Erickson (1999) zur Aufrechterhaltung nächster Paare, sowie deren Eingliederung in den Konstruktionsalgorithmus. In Kapitel 6 werden die Elemente der
Wellenfront und der Prozess der Ausdehnung auf ihre Kompatibilität mit dieser
Technik untersucht. In Kapitel 7 beschreiben wir eine geometrische Vereinfachung des Datenmaterials der Wellenfront, welche in Kapitel 8 genutzt wird, um
Ray-Shooting-Anfragen und deren Inverse schnell zu beantworten. Diese beiden
Anfragen sind notwendig um die Technik von Eppstein und Erickson zu nutzen.
Kapitel 9 befasst sich mit dem Ablauf und der Beantwortung einer Pfadanfrage
beziehungsweise einer Voronoi-Anfrage. Eine detaillierte Analyse der asympto-
1.2 Ergebnisse und Methoden
5
tischen Laufzeit und des Speicherbedarfs des Konstruktionsalgorithmus und des
Anfragealgorithmus erfolgt in Kapitel 10, darüber hinaus betrachten wir dort
einige Besonderheiten der Quickest-Path-Map. Abschließend resümieren wir in
Kapitel 11 den Sinn und die Bedeutung der Ergebnisse. Hierbei sei erwähnt,
dass die Konstruktion der Quickest-Path-Map einen wesentlich größeren Teil
dieser Arbeit in Anspruch nimmt, als die Quickest-Path-Anfragen, da wir die
Quickest-Path-Map mit dem Ziel konzipieren, Anfragen schnell behandeln zu
können.
6
1.3
Einführung
Liste verwendeter Variablen
In Tabelle 1.1 sind die in dieser Arbeit verwendeten Variablen aufgelistet und
kurz beschrieben.
Tabelle 1.1: Verwendete Variablen.
Variable
S = {ω1 , . . . , ωn }
reg(ω)
C = {e1C , . . . , ecC } ∪
j
1
{vC
, . . . , vC
}
n
c
VC (S)
VC (S)
KV
T (S)
T 0 (S)
T (S)
e
T -Pfad
β-Kante
β-Kanten-Pfad
T -Pfad
F bzw. f
Wt (F )
Wt (S)
SK(F )
V bzw. v
E bzw. e
R bzw. r
G
k = |G|
gi ∈ G, i = 1, . . . , c
gtrans
h,b
Bedeutung
Menge der Bezugspunkte
Einzugsgebiet des Bezugspunktes ω
das isothetische Transportnetzwerk
Kardinalität von S, d.h. n = |S|
Anzahl der Kanten von C
City-Voronoi-Diagramm
verfeinertes City-Voronoi-Diagramm oder
Quickest-Path-Map
Konstruktionsdiagramm
der Quickest-Path-Graph
der ungerichtetet Quickest-Path-Graph
der inverse Quickest-Path-Graph
ein in S endender Pfad in T (S)
ein Zeiger bei einem Typ-B-Ereignis
der schnellste Pfad entlang einer β-Kante
ein Te-Pfad mit ersetzten β-Kanten
eine Menge von Figuren f ∈ F
Wellenfront zur Zeit t, ausgehend von Figuren
F
Wellenfront zur Zeit t, ausgehend von S
Straight-Skeleton der Menge F von Figuren
eine Menge von Knoten, v ∈ V
eine Menge von Kanten, e ∈ E
eine Menge von Regionen, r ∈ R
die Menge von Geschwindigkeiten auf C
Kardinalität von G
Die gebotene Geschwindigkeit auf eiC
Translationale Geschwindigkeit einer Kante der
Wellenfront
Höhe, Breite bei Untersuchung von
Interferenzen
Fortsetzung auf der nächsten Seite
1.3 Liste verwendeter Variablen
Fortsetzung der letzten Seite
Variable
d(a, b)
Q(a, b)
Def(r), Def(s)
DRS , DLS
DPL
KS , KW , K
σ
τ
~eBoden
~eSeite
l
r
α, β, γ, δ, ϕ
ζ, η, ϑ
eβ
S bzw. s
W bzw. w
w = {ẇ, w}
~
ν, ξ
L = {l1 , . . . , lm }
R = {r1 , . . . , rm }
X , Y, Z
Ψ
T 1, . . . , T d
T = {T 1 , . . . , T d }
κ, λ, µ
fi
4
f = f ◦ f3 ◦ f2 ◦ f1
Bedeutung
City-Metrik-Abstand zwischen a und b
der schnellste Pfad von a nach b
definierendes Objekt der Region r bzw. des
Streifens s
sublokale Ray-Shooting- und LowestIntersection-Datenstrukturen
Datenstruktur für Point-Location
Ähnlichkeitsklasse von Streifen, Knotenstrahlen,
beliebigen Objekten
Anzahl der verschiedenen Ähnlichkeitsklassen
KS
Anzahl der verschiedenen Ähnlichkeitsklassen
KW
der Bodenvektor eines Streifens
der Seitenvektor eines Streifens
linker Bodenpunkt eines Streifens
rechter Bodenpunkt eines Streifens oder Radius
eines Kreises oder Region r ∈ R
Winkel
Kosinusse von Winkeln
β-Kante
Menge von Streifen, s ∈ S
Menge von Knotenstrahlen, w ∈ W
Knotenstrahl mit Fußpunkt und Vektor
beliebige Objekte
Menge der x-Koordinaten linker Bodenpunkte
Menge der x-Koordinaten rechter Bodenpunkte
Menge von x-, y- und z-Koordinaten
zusätzliche Koordinatenachse für die Behandlung der Schräge von Typ-4-Streifen
Stufen eines d-dimensionalen Bereichsbaums
Ein d-dimensionaler Bereichsbaum
Knoten eines Bereichsbaums
Scherung
geometrische Transformation
7
Kapitel 2
Grundstrukturen
In diesem Kapitel beleuchten wir zunächst die beiden Grundstrukturen einer Quickest-Path-Map, das Straight-Skeleton und das City-Voronoi-Diagramm.
Anschließend betrachten wir den von Aichholzer u. a. (2002) vorgestellten Algorithmus zur Konstruktion einer Quickest-Path-Map und legen dar, welche
Ansätze wir übernehmen und welche Problematiken unsere Situation mit sich
bringt.
2.1
Das Straight-Skeleton
Aichholzer u. a. (1995) stellen eine neue interne Struktur einfacher Polygone vor,
das Straight-Skeleton. Ein Straight-Skeleton besteht aus Strecken von Winkelhalbierenden und bildet eine Partition eines gegebenen n-Ecks f in n monotone
Polygone. Wir bezeichnen das Straight-Skeleton des Polygons f mit SK(f ).
Da das Straight-Skeleton der Schlüssel zu dem Algorithmus ist, der in dieser
Arbeit vorgestellt wird, fassen wir in diesem Abschnitt dessen grundsätzlichen
Eigenschaften zusammen. Eine detaillierte Einführung bieten Aichholzer u. a.
(1995) und Aichholzer u. a. (2002). Sei f ein gegebenes, einfaches Polygon in
der Ebene. Wir konstruieren das Straight-Skeleton SK(f ) des Polygons f mit
Hilfe eines Schrumpfprozesses wie folgt: Wir verschieben alle Kanten von f mit
einer konstanten Geschwindigkeit nach innen, so dass jede Kante jeweils parallel
zu ihrer Ausgangslage bleibt. Dabei verändern sich die Längen der Kanten, während sich die Knoten von f auf den Winkelhabierenden der jeweils inzidenten
Kanten bewegen. Das Polygon wird solange geschrumpft bis sich die kombinatorische Gestalt seines Randes verändert. Zwei Typen von Ereignissen können
eine solche Änderung bewirken:
1. Die Länge einer Kante sinkt auf Null, so dass die beiden benachbarten
Kanten im weiteren Verlauf adjazent sind. Der neue Knoten bewegt sich
nun auf der Winkelhalbierenden dieser beiden Kanten.
2. Sei ein konkaver Knoten eines Polygons ein Knoten, der nicht Teil der
konvexen Hülle der Menge der Polygonknoten ist. Eine Kante, und somit
das ganze Polygon wird dadurch gespalten, dass ein konkaver Knoten auf
10
Grundstrukturen
Abbildung 2.1: Ein schrumpfendes
Polygon.
Abbildung 2.2: Das
Straight-Skeleton.
konstruierte
diese Kante stößt. Dabei ergeben sich neue Adjazenzen zwischen den beiden Teilen der gespaltenen Kante und den beiden Kanten, welche zu dem
konkaven Knoten inzident waren.
Man führt den Schrumpfprozess rekursiv für jedes schrumpfende Polygon mit
positivem Flächeninhalt weiter. Ist jede Kante auf die Länge Null geschrumpft,
so ist der Prozess beendet. Daraus ergibt sich die folgende Definition:
Definition 2.1 (Straight-Skeleton) Das Straight-Skeleton SK(f ) des Polygons f ist definiert als die Vereinigung derjenigen Teilstrecken der Winkelhalbierenden, welche durch Knoten des Polygons während des Schrumpfprozesses
ausgezeichnet werden.
Die Abbildungen 2.1 und 2.2 veranschaulichen das Konzept des Straight Skeletons. Abbildung 2.1 zeigt das Ausgangspolygon und das geschrumpfte Polygon
zu verschiedenen Zeitpunkten. Man beachte, dass das Polygon beim Schrumpfprozess letztendlich in zwei disjunkte Polygone zerfällt. Abbildung 2.2 zeigt das
Straight-Skeleton (gepunktet) des Ausgangspolygons auf. In dieser Arbeit wird
die Wellenfront stets durch dünne, durchgezogene Linien dargestellt, und ein
Straight-Skeleton stets durch dickere, gepunktete Linien.
Die Definition des Straight-Skeletons ist erweiterbar auf Mengen von gewichteten Polygonen. Ein gewichtetes Polygon ist ein einfaches Polygon, dessen
Kanten jeweils eine Geschwindigkeit zugeordnet wird, mit der sie sich bei dem
Schrumpfprozess verschieben. Ein solches gewichtetes Straight-Skeleton besteht
im Allgemeinen nicht mehr aus Teilstrecken der Winkelhalbierenden; ein Beispiel
eines gewichteten Polygons und dessen Straight-Skeleton ist in Abbildung 2.4
gegeben. Zum Vergleich ist in Abbildung 2.3 das Straight-Skeleton des Polygons
im ungewichteten Fall gegeben.
Es erscheint schwer eine nicht prozedurale Definition eines Straight-Skeletons für ein Polygon anzugeben. Ein möglicher Ansatz wäre es, aus den Kanten
des Polygons und den Winkelhalbierenden einen planaren Graphen zu konstruieren, so dass ein jeder Knoten Grad drei besitzt. Wie Aichholzer u. a. (1995)
jedoch zeigen, scheitert dieser Ansatz daran, dass auf diese Weise nicht sicher
ein eindeutiger Graph definiert werden kann. Weiterhin geben die Autoren eine geschlossene Definition des ungewichteten Straight-Skeletons mit Hilfe einer
Dachkonstruktion an. Dabei wird an jede Kante eine um 45◦ geneigte Ebe-
2.1 Das Straight-Skeleton
11
e
Abbildung 2.3: Ein
Straight-Skeleton.
einfaches
Abbildung 2.4: Straight-Skeleton
bei stärker gewichteter Kante e.
ne angesetzt. Dann kann das Straight-Skeleton als die Projektion der unteren
Einhüllenden dieser Ebenen und des Ausgangspolygons definiert werden. Allerdings scheitert dieser Ansatz für ein gewichtetes Polygon, wie in Abbildung 2.5
zu erkennen ist.
Wir bezeichnen ein beliebiges gewichtetes Polygon als Figur. Man beachte,
dass die Kantengewichte auch so definiert sein können, dass sich die Kanten
eines Polygons nach außen bewegen, und sich das Polygon ausdehnt. Dies ist
in Abbildung 2.6 aufgezeigt. In dem in dieser Arbeit vorgestellten Algorithmus
wird eine Mischung aus expandierenden und schrumpfenden Figuren genutzt.
Für eine beliebige Menge F von Figuren und einen Startzeitpunkt t0 kann
jede Figur f ∈ F einer parametrisierten Menge Wt (f ) mit t > t0 von Polygonen
zugeordnet werden, welche wir die Wellenfront von P nennen. Für t > t0 ist also
Wt (f ) das geschrumpfte Polygon f zum Zeitpunkt t während des Schrumpfprozesses, den wir im Folgenden Wellenfrontausdehnung nennen. Der Begriff der
Wellenfrontausdehnung wird der Situation in dieser Arbeit insofern treffender
gerecht, als dass wir tatsächlich eine Ausdehnung betrachten welche nur lokal
zu Schrumpfprozessen degeneriert. Die gemeinsame Wellenfront der Menge F
von Figuren
S bezeichnen wir als Wt (F ). Für hinreichend kleine Werte von t gilt
Wt (F ) = f ∈F Wt (f ), doch im Verlauf der Wellenfrontausdehnung können sich
Interaktionen zwischen den Wellenfronten der einzelnen Figuren ergeben, so dass
zwei Figuren zu einer gemeinsamen Wellenfront verschmelzen. In Abbildung 2.7
ist die Entwicklung der Wellenfronten einer Menge F = {f1 , f2 } von Figuren
dargelegt.
Die gemeinsame Wellenfront Wt (F ) erzeugt somit ein eindeutiges Interferenzmuster der einzelnen Wellenfronten Wt (f ), welches wir als Straight-Skeleton
SK(F ) bezeichnen. Die Knoten von Wt (F ) zeichnen die sogenannten Skelettkanten von SK(F ) aus, und die Kanten von Wt (F ) überstreichen und beschreiben
die Regionen von SK(F ). Das Straight-Skeleton SK(F ) definiert eine Partition
der Ebene, deren Knoten einen Grad von mindestens drei besitzen (siehe dazu
die oben genannten Ereignisse), und deren Regionen jeweils von der Kante einer
Figur stammen. Bezeichnen wir die Gesamtzahl der Kanten aller Figuren mit
m, so ist die Komplexität von SK(F ) auf Grund der Planarität des StraightSkeletons somit O(m). Diese allgemeine Sichtweise eines Straight-Skeletons als
das Ergebnis der Entwicklung und Interaktion vieler Figuren nutzen wir bei
12
Grundstrukturen
f
e
Abbildung 2.5: (Eppstein und
Erickson (1999)) Das Dach (gepunktet) eines gewichteten Polygons ist im Allgemeinen nicht die
untere Einhüllende ihrer Dachflächen. Die stark gewichtete Kante e
schneidet aus dem rechten Giebel
die graue Region heraus.
f1
Abbildung 2.6: Die Gewichte lassen
die Kanten nach außen wandern.
f2
Abbildung 2.7: Die Wellenfronten Wt (f1 ) und Wt (f2 ) verschmelzen.
2.2 Das City-Voronoi-Diagramm
13
der Untersuchung und Konstruktion des im folgenden Abschnitt betrachteten
City-Voronoi-Diagramms.
Im Gegensatz zur bekannteren Mittelachse, welche aus allen inneren Punkten eines Polygons f besteht, für die der nächste Punkt auf dem Rand von P
nicht eindeutig ist (siehe zum Beispiel Lee (1982)), besteht das Straight-Skeleton SK(f ) lediglich aus geraden Strecken. Die Mittelachse eines nicht konvexen
Polygons hingegen enthält parabolische Elemente. Beide Strukturen besitzen eine Komplexität welche lediglich linear ist in der Komplexität des Polygons und
sind für konvexe Polygone identisch. Während die Mittelachse das VoronoiDiagramm (siehe Aurenhammer und Klein (2000)) der Kanten und Knoten eines Polygons ist, besitzt das Straight-Skeleton zunächst keine Interpretation im
Sinne eines Voronoi-Diagramms, da die Definition eines Straight-Skeletons nicht
auf Abständen basiert.
Es existiert eine Vielzahl von Anwendungen des Straight-Skeletons; siehe
dazu die Arbeiten von Aichholzer und Aurenhammer (1998), Cheng und Vigneron (2002), Demaine u. a. (2000), Eppstein und Erickson (1999), Lee und
Papadopoulou (2001), sowie die dort enthaltenen Referenzen.
2.2
Das City-Voronoi-Diagramm
Ein Voronoi-Diagramm im Allgemeinen partitioniert ein gegebenes Gebiet für eine Menge von Bezugsobjekten in Regionen gleicher nächster Bezugsobjekte, siehe Aurenhammer und Klein (2000). Nach Aichholzer u. a. (2002) ist das City-Voronoi-Diagramm VC (S) eine Partition der Ebene, welche für jeden Bezugspunkt
ωi ∈ S den Bereich aller Punkte angibt, von denen aus ωi von allen Bezugspunkten am schnellsten erreichbar ist. Dabei bezeichnet S = {ωi | 1 ≤ i ≤ n}
die Menge der n Bezugspunkte. Wir bezeichnen jede Region eines City-VoronoiDiagramms als Einzugsgebiet reg(ωi ) eines Bezugspunktes ωi . Das Einzugsgebiet eines Bezugspunktes ωi ist somit definiert als die Menge aller Punkte p der
Ebene, welche den Bezugspunkt ωi schneller als jeden anderen Bezugspunkt erreichen können. Dabei wird in der Ebene außerhalb des Transportnetzwerkes C
die L1 -Norm verwendet, während auf den c isothetischen Kanten, ejC (1 ≤ j ≤ c)
von C schnellere Fortbewegung möglich ist. Die Mechanik der Kombination aus
der L1 -Norm und dem beschleunigten Transportnetzwerk wird im Detail in Kapitel 3 betrachtet. Das Modell, auf dem diese Arbeit basiert, stammt von Aichholzer u. a. (2002). Sie stellen einen Konstruktionsalgorithmus mit einer Laufzeit
von O(n log n + c2 log c) für das City-Voronoi-Diagramm vor. Erstmals in dieser
Form vorgestellt wurde das City-Voronoi-Diagramm von Abellanas u. a. (2001),
welche viele Grundlagen einer Metrik schnellster Pfade erarbeiteten, von denen wir einige in Abschnitt 3.2 betrachten werden. Darüber hinaus geben die
Autoren für den Fall, dass C aus einer Geraden besteht, einen Konstruktionsalgorithmus für das City-Voronoi-Diagramm an, der für n Bezugspunkte eine
Konstruktionszeit von O(n log n) benötigt. In der Vergangenheit wurden viele
allgemeinere Problemstellungen betrachtet, von denen Gewali u. a. (1990) ein
unserer Situation recht ähnliches Modell nutzen (siehe auch Abschnitt 1.2).
Das City-Voronoi-Diagramm erscheint zunächst nicht verwandt mit dem
Straight-Skeleton. Jedoch findet sich das Konzept der Straight-Skeletons nicht
14
Grundstrukturen
nur bei der Konstruktion eines City-Voronoi-Diagramms wieder, sondern auch
in der resultierenden Partition der Ebene. Dabei betrachten wir das City-Voronoi-Diagramm als das Straight-Skeleton einer Menge von Figuren (siehe Abschnitt 2.1), deren Formen, Entstehungszeitpunkte und Kantengeschwindigkeiten sorgfältig festgelegt werden. In Kapitel 3 untersuchen wir diese Reduktion
des City-Voronoi-Diagramms auf das Straight-Skeleton.
Bei der Konstruktion eines Straight-Skeletons entstehen, wie in Abschnitt 2.1
beschrieben, sogenannte Skelettkanten. Diese bilden eine Obermenge der eigentlichen Voronoi-Kanten, welche die Einzugsgebiete der Bezugspunkte eingrenzen.
Die Skelettkanten verfeinern das City-Voronoi-Diagramm, so dass es möglich
ist den schnellsten Pfad zum nächsten Bezugspunkt zu finden; siehe dazu Abschnitt 3.5. Nach Aichholzer u. a. (2002) nennen wir ein mit Skelettkanten augmentiertes City-Voronoi-Diagramm verfeinertes City-Voronoi-Diagramm VC (S)
für ein gegebenes Netzwerk C und eine Menge von Bezugspunkten S. Abbildung 11.1 zeigt ein komplexes verfeinertes City-Voronoi-Diagramm. VoronoiKanten werden in dieser Arbeit stets mit dickeren gestrichelten Linien dargestellt.
Für den Spezialfall, dass in der Ebene nur ein Bezugspunkt ω existiert, verliert der Begriff des Voronoi-Diagramms gewissermaßen seine ursprüngliche Bedeutung. Wir bezeichnen das verfeinerte City-Voronoi-Diagramm in dieser Arbeit allgemein als Quickest-Path-Map. Zur Konstruktion dieser Quickest-PathMap nutzen wir ein Konstruktionsdiagramm KV . Das Konstruktionsdiagramm
stellt eine weitere Augmentierung des verfeinerten City-Voronoi-Diagramms dar.
Die zusätzlichen Kanten des Konstruktionsdiagramms erhöhen jedoch nicht die
asymptotische Komplexität von KV (siehe Abschnitt 3.4), sie entstehen beim
Konstruktionsprozess als Beiprodukt und werden bei der Pfadsuche nicht genutzt.
2.3
Der Algorithmus von Aichholzer u. a.
Ziel dieser Arbeit ist es die Laufzeit des Algorithmus von Aichholzer u. a. (2002)
zur Konstruktion einer Quickest-Path-Map zu verbessern. Aus diesem Grund
skizzieren wir den Algorithmus von Aichholzer u. a. in diesem Abschnitt. Gegeben ist wie in unserer Situation ein isothetisches Transportnetzwerk C aus
c (sich nicht schneidenden) Segmenten, welche jeweils die Geschwindigkeit g
bieten, sowie n Bezugspunkte. Man beachte, dass nur eine einzige, einheitliche
Geschwindigkeit auf dem Transportnetzwerk geboten wird. Wie der in dieser
Arbeit dargelegte Algorithmus simuliert auch der Algorithmus von Aichholzer
u. a. eine Wellenfrontausdehnung. Er besteht im Wesentlichen aus drei Teilen.
Zunächst werden sämtliche Figuren mit einem Zeitstempel versehen, die während der Wellenfrontausdehnung an Bezugspunkten und Knoten von C entstehen. Dieser Zeitstempel gibt an, wann diese Figur entsteht. Dann werden
auf dieselbe Weise die Figuren vorbereitet, welche im Inneren von Netzwerksegmenten entstehen, und anschließend wird unter Beachtung der vorbereiteten
Zeitstempel für die Gesamtheit von Figuren das Straight-Skeleton berechnet.
Die asymptotische Laufzeit des Algorithmus beträgt O(n log n + c2 log c).
Die Vorbereitung der Figuren verläuft wie folgt: Ein Gitter wird erstellt,
2.3 Der Algorithmus von Aichholzer u. a.
15
indem durch jeden Netzwerkknoten eine horizontale und eine vertikale Gerade
gezogen wird. Abhängig davon, ob ein Segment des Gitters in C enthalten ist
oder nicht, bekommt es das Gewicht 1 oder g. Nun werden zunächst die Knoten
der Gitterkästchen vorbereitet, welche die Bezugspunkte ωi enthalten, sowie die
sogenannten primären Zugangspunkte, das heißt die jeweils ersten Punkte auf
C, die von den Bezugspunkten aus in einer der vier isothetischen Richtungen
erreicht werden. Wird ein Knoten vorbereitet, so werden für ihn der Zeitpunkt
gespeichert, an dem die Wellenfront ihn erreicht, sowie die Richtung, aus der dies
geschieht. Diese Initialisierung benötigt eine Laufzeit von O(n log c). Anschließend wird die kontinuierliche Dijkstra-Methode auf das Gitter angewendet, und
somit werden in einer Laufzeit von O(c2 log c) alle weiteren Knoten des Netzwerks mit einem Zeitstempel versehen.
Mitchell u. a. (1987) entdeckten die kontinuierliche Dijkstra-Methode, welche sich streng am bekannten Algorithmus von Dijkstra (siehe Dijkstra (1959))
orientiert. Der wesentliche Unterscheid besteht darin, dass die Ausbreitung eines Signals nicht nur auf der Kantenmenge eines Graphen möglich ist, sondern
in der gesamten Ebene (oder in einer beliebigen Oberfläche). Dabei wird eine
Wellenfront ausgehend von einer Quelle über die Ebene propagiert, indem jeder
Punkt, auf den die Wellenfront trifft, einen Zeitstempel (oder Distanzstempel )
erhält, und anschließend die Wellenfront weiter ausbreitet. Um O(m) Knoten in
der Ebene mit der Wellenfront zu überstreichen, beträgt die Anzahl notwendiger
Stempel und erneuter Ausbreitungen nur O(m2 ). Bei der Ausführung des kontinuierlichen Dijkstra-Algorithmus wird eine Liste von Intervall-Kandidaten und
eine Prioritätsschlange von Ereignissen aufrechterhalten. Ein Intervall-Kandidat
bildet ein Intervall einer Kante des Gitters, für dessen Punkte eine sogenannte Wurzel bekannt ist, über welche zu einem gegebenen Zeitpunkt während
der Ausführung des Algorithmus der optimale (bis dahin bekannte) Pfad zum
Bezugspunkt (Quelle) möglich ist. Über die Prioritätsschlange wird in chronologischer Reihenfolge abgearbeitet, wie die Wellenfront von den jüngsten Punkten
eines Intervalls weiterverbreitet wird. Bei jeder Weiterverbreitung der Wellenfront ist es möglich, dass bereits eingetragene Intervalle durch Interferenz mit
anderen Intervallen gekürzt werden oder sogar ganz verschwinden. Ist die Prioritätsschlange von Ereignissen letztendlich leer, so ist das gesamte Gitter mit
Intervallen überdeckt, und jeder Knoten besitzt einen endgültigen Stempel. Diese Stempel geben nun für jeden Gitterpunkt an, wann er von der Wellenfront
erreicht wird, und wann demnach eine Figur an diesem Punkt entsteht. Besonders interessant ist die kontinuierliche Dijkstra-Methode, wenn der Ausbreitung
der Wellenfront gewisse Restriktionen auferlegt sind, wie beispielsweise bei der
Anwendung auf die Oberfläche eines Polyeders (siehe Mitchell u. a. (1987)), im
Zusammenhang mit der Umfahrung von Hindernissen (siehe zum Beispiel Mitchell (1993)) oder bei gewichteten Regionen (siehe zum Beispiel Mitchell und
Papadimitriou (1991)).
Nach der Initialisierung der Knoten des Netzwerks werden dann durch einen
Sweep-Line-Algorithmus, der jede Zeile und jede Spalte des Gitters durchläuft,
die primären Zugangspunkte entfernt, welche schneller über einen anderen Bezugspunkt erreicht werden können, und die entsprechenden Vorbereitungsdaten
aktualisiert. Diese primären Zugangspunkte sind Punkte im Inneren von Netzwerksegmenten, an denen Figuren entstehen. Die Autoren zeigen, dass Zeilen
des Gitters derart isoliert betrachtet werden können, da potentielle schnellste
16
Grundstrukturen
Pfade eine Zeile über einen vorbereiteten Gitterknoten betreten; gleiches gilt für
die Reihen. Nach diesem Schritt sind auch alle Punkte mit einem Stempel versehen, an denen die Wellenfront auf das Gitter trifft stattfinden. Die Aufbereitung
dieser Punkte im Inneren von Netzwerksegmenten erfordert eine Laufzeit von
O((n + c) log n), womit alle Figuren in einer Laufzeit von O(n log n + c2 log c)
vorbereitet werden.
Im letzten Schritt werden die Figuren auf spezielle Art und Weise derart angepasst, dass bestehende Algorithmen für die Konstruktion abstrakter VoronoiDiagramme für die Erstellung des Straight-Skeletons genutzt werden können.
Dabei werden insbesondere die randomisiert-inkrementellen Algorithmen von
Mehlhorn u. a. (1991) und Klein u. a. (1993) angesprochen. Die Laufzeit dieser
Algorithmen beträgt O((c + n) log(c + n)) bei linearem Speicherbedarf O(n + c).
2.4
Unser Algorithmus
In diesem Abschnitt betrachten wir, welche bestehenden Ergebnisse wir in dieser Arbeit nutzen. Der generelle Ansatz des Algorithmus zur Konstruktion der
Quickest-Path-Map ist in Abschnitt 10.1 dargestellt. Er basiert auf den Ergebnissen von Aichholzer u. a. (2002) und reduziert die Quickest-Path-Map ebenso
auf einzelne Figuren, deren Straight-Skeletons behandelt werden. Insbesondere
basieren unsere asymptotischen Berechnungen der Laufzeit und des Speicherbedarfs auf der linearen Komplexität der Quickest-Path-Map, welchen wir in
Abschnitt 3.4 darlegen. Im Gegensatz zum Algorithmus von Aichholzer u. a.
(2002) erarbeitet der in dieser Arbeit vorgestellte Algorithmus die Figuren und
die zugehörigen Straight-Skeletons in einem einzigen Prozess, der die Ausdehnung der Wellenfront in direkter Form simuliert. Dabei wird der kontinuierliche
Prozess einer Wellenfrontexpansion an den einzelnen Zeitpunkten der Interaktion, Kollision und Interferenz zwischen Netzwerk und Wellenfront diskretisiert.
Figuren werden erst dann initialisiert, wenn sie tatsächlich von der Wellenfront
erreicht werden.
Eppstein und Erickson (1999) nutzen zur Konstruktion eines Straight-Skeletons den Ansatz einer Dachkonstruktion mit Hilfe der unteren Einhüllenden.
Das Modell, das in dieser Arbeit betrachtet wird, beinhaltet jedoch, wie in Kapitel 6 dargelegt wird, gewichtete Kanten, für die eine Dachkonstruktion, wie
in Abbildung 2.5 bereits illustriert wurde, nicht effizient genug möglich ist. Somit können wir diese Technik zur Konstruktion der Quickest-Path-Map nicht
unmittelbar nutzen.
Der in dieser Arbeit vorgestellte Algorithmus macht dennoch von einer Dachkonstruktion Gebrauch. Das in Abbildung 2.5 verdeutlichte Problem besteht
darin, dass eine stark gewichtete Kante eine weniger gewichtete Kante einschneiden kann. Die Intention der unteren Einhüllenden wird in gewisser Weise
dadurch verfälscht, dass die Kante e jenseits ihrer eigentlichen Existenzberechtigung Einfluss auf das Straight-Skeleton nimmt. Bei ungewichteten Kanten ist
dies implizit unmöglich, da sich Dachkanten mit gleicher Steigung nicht auf diese Weise schneiden können. Für gewichtete Kanten ist es hingegen notwendig,
Interaktionen von Kanten wie in Abbildung 2.5 aufgezeigt zu verhindern. Dies
kann erreicht werden, indem erkannt wird, dass die Ebene, in der die Dachfläche
2.4 Unser Algorithmus
17
von e liegt, nach Abschluss des Dachteils beschränkt werden muss. Das Resultat
ist eine korrigierte untere Einhüllende. Zu diesem Zweck nutzen wir eine Technik aus Eppstein und Erickson (1999). Diese Technik dient dazu nächste Paare
dynamischer Objekte aufrechtzuerhalten und ist in der Lage stets die nächste
Interaktion zwischen den Kanten und Knoten der Figuren und des Netzwerks
vorherzusagen. Dabei werden speziell den Strukturen der Wellenfront angepasste
orthogonale Bereichsanfragen im Raum genutzt. Im nächsten Kapitel betrachten
wir die Mechanik der Wellenfrontausdehnung im Detail.
Kapitel 3
Die Wellenfrontausdehnung
Um die Ausdehnung der Wellenfront, welche wir mit Wt (S) bezeichnen, im
Raum zu betrachten, wie in Abschnitt 2.4 angesprochen, ist es zunächst notwendig, ihre Expansion in der Ebene zu verstehen. Das in Abschnitt 2.1 beschriebene
Straight-Skeleton SK(f ) eines Polygons f ist der Schlüssel zur Konstruktion der
Quickest-Path-Map VC (S). Die Interaktion zwischen den Elementen der Wellenfront, welche zur Konstruktion eines Straight-Skeletons genutzt wird, tritt
auch bei der Erstellung der Quickest-Path-Map auf. Hinzu kommen nun jedoch
die Kollisionen der Wellenfront mit dem Transportnetzwerk C, wodurch neue
Figuren entstehen. Allerdings kann bei einer Quickest-Path-Map nicht mehr
unmittelbar das Modell eines schrumpfenden Polygons betrachtet werden, denn
die Wellenfront startet an einzelnen Punkten, um sich von dort aus über die
Ebene auszubreiten. In diesem Kapitel wird die Mechanik der Wellenfrontausdehnung dargelegt, mit der im Folgenden gearbeitet wird. Dabei wird aus dem
Transportnetzwerk und der L1 -Norm eine neue Metrik geschaffen.
3.1
Das Transportnetzwerk
Wie in Abschnitt 2.2 vorgestellt wird die Ebene mit einem Transportnetzwerk
C erweitert, welches in diesem Abschnitt konkretisiert wird. Ziel einer QuickestPath-Map ist es, Auskunft über zeitlich kürzeste Pfade zu geben. Daher ist es
notwendig, vor einer Beschreibung des beschleunigenden Transportnetzwerks C
festzulegen, wie sich ein Pfad in der Ebene außerhalb von C gestaltet. Es wird
angenommen, dass die Fortbewegung in R2 \C mit Einheitsgeschwindigkeit bezüglich der L1 -Norm stattfindet. Dies bedeutet also, dass in einer Zeiteinheit
genau eine Längeneinheit zurückgelegt wird. Im Folgenden wird die Geschwindigkeit in der Ebene daher einfach als 1 angenommen, im Gegensatz zu den
Geschwindigkeiten, welche auf dem Transportnetzwerk möglich sind.
Das Transportnetzwerk C gibt der Wellenfront ihre Form und spielt daher
bei der Konstruktion der Quickest-Path-Map eine zentrale Rolle. In diesem Abschnitt werden die Charakteristika von C dargelegt. Das Transportnetzwerk ist
ein planarer Graph ohne isolierte Knoten, bestehend aus geraden Kanten, welche isothetisch liegen und einander nicht schneiden. Die Knoten von C werden
20
Die Wellenfrontausdehnung
i
mit vC
(i = 1, . . . , j) bezeichnet und die Kanten mit eiC (i = 1, . . . , c). Allerdings werden die Θ(c) Kanten von C als Segmente bezeichnet, um sie von
den Endpunkten (Knoten) der Kanten und von den Kanten der Wellenfront
zu unterscheiden. Mit seinen Segmenten bietet C in der Ebene Strecken an,
auf denen im Sinne schnellster Pfade eine höhere Fortbewegungsgeschwindigkeit möglich ist, als im Rest der Ebene. Segmente können an jedem beliebigen
ihrer Punkte betreten und verlassen werden und bieten eine von k verschiedenen Geschwindigkeiten. Die Geschwindigkeit, welche ein Segment eiC ∈ C bietet,
wird als gi ∈ G bezeichnet. Die Menge G der möglichen Geschwindigkeiten hat
konstante Kardinalität k. Ohne Beschränkung der Allgemeinheit können wir
annehmen, dass für alle Geschwindigkeiten gi (i = 1, . . . , k), auf dem Netzwerk
gilt: gi > 1, da das Segment eiC sonst keinen Nutzen hat. Weiterhin gilt gi < ∞.
Die Einschränkung, dass C keine isolierten Knoten besitzt, ist aus zwei Gründen
gerechtfertigt. Einerseits hat ein isolierter Knoten offensichtlich keinen Einfluss
auf die Quickest-Path-Map und kann somit gelöscht werden, andererseits gibt es
in einem vernünftigen Transportnetzwerk keine isolierten Knoten. Die folgende
Bemerkung erlaubt es uns, auf eine präzise Differenzierung zwischen der Anzahl
der Segmente und der Elemente des Netzwerks zu verzichten. Um die Einführung unnötiger Variablen zu vermeiden, benutzen wir daher im Folgenden dieser
Arbeit den Parameter c auch als Kardinalität der Elementmenge von C.
Bemerkung 3.1 Für Berechnungen von asymptotischen Laufzeiten ist es irrelevant, ob die Anzahl der Elemente des Transportnetzwerks C oder nur die
Anzahl der Segmente von C verwendet wird.
P
Beweis. In jedem Graphen G(V, E) gilt: 2|E| = v∈V deg(v). Allerdings gilt
bei einem isothetischen Graphen offensichtlich für den Grad eines Knotens v
deg(v) ≤ 4, und somit 2|E| ≤ 4|V |. Da es in C keine isolierten Knoten gibt,
gilt zudem deg(v) ≥ 1 und somit 2|E| ≥ |V |. Es ist also die Anzahl der Knoten
linear in der Anzahl der Kanten und umgekehrt. Die Menge der Elemente von
C ist die Vereinigung der Knoten und der Kanten von C, und somit jeweils
linear in der Anzahl der Kanten und der Anzahl der Knoten des Netzwerks.
3.2
Schnellste Pfade und die City-Metrik
Seien die Punkte a, b ∈ R2 gegeben. Ein Pfad P zwischen den Punkten a und
b ist ein Folge von isothetischen Strecken, welche bei a startet und bei b endet.
Die Länge |P | eines Pfades P ist die Zeit, die benötigt wird, um den Pfad zu
durchlaufen. Mit Hilfe dieser Begriffe formulieren wir die folgende Definition:
Definition 3.1 (schnellster Pfad) Wir bezeichnen den schnellsten Pfad zwischen zwei Punkten a und b mit QC (a, b). Es ist QC (a, b) derjenige Pfad zwischen a und b, der die Zeit minimiert, die man braucht, um von a nach b zu
gelangen.
Der Pfad QC (a, b) ist als Pfad ein isothetischer Polygonzug und ist, mit der
Ausnahme von Spezialfällen, nicht eindeutig. Abbildung 3.1 zeigt eine Auswahl
schnellster Wege zwischen den Punkten a und b in der Ebene, dabei bieten
3.2 Schnellste Pfade und die City-Metrik
21
a
b
Abbildung 3.1: Verschiedene schnellste Wege von a nach b.
die Netzwerksegmente jeweils die Geschwindigeit 2. Schnellste Wege werden in
dieser Arbeit stets gepunktet und gestrichelt dargestellt. Man beachte, dass
QC (a, b) nicht notwendigerweise offenbar ist, denn er stellt eine optimale Kombination aus der Nutzung des Netzwerks und aus Abkürzungen außerhalb des
Netzwerks dar. Basierend auf schnellsten Pfaden definiert die L1 -Norm in der
Ebene zusammen mit dem Transportnetzwerk C eine zeitliche Abstandsfunktion
d wie folgt:
Definition 3.2 (Abstandsfunktion d) Die Abstandsfunktion d : R2 × R2 →
R bildet zwei Punkte a, b ∈ R2 auf die Länge des schnellsten Pfades QC (a, b)
zwischen ihnen ab.
Die Funktion d ist tatsächlich eine Metrik, da für alle a, b, c ∈ R2 gilt:
d(a, b) ≥ 0
d(a, b) = 0 ⇒ a = b
d(a, b) = d(b, a)
d(a, b) ≤ d(a, c) + d(c, b)
(3.1)
(3.2)
(3.3)
(3.4)
Gleichungen 3.1 und 3.2 sind offensichtlich, die Symmetrie in 3.3 ergibt sich
daraus, dass die Segmente von C bidirektional nutzbar sind. Die Dreiecksungleichung (3.4) gilt zunächst für die von der L1 -Norm induzierte Metrik, welche
Manhattan-Metrik genannt wird. Da es im Sinne schnellster Wege stets möglich
ist zwei Wege QC (a, c) und QC (c, b) zu konkatenieren um einen (potentiell suboptimalen) Weg QC (a, b) zu erstellen, gilt die Dreiecksungleichung auch für d.
Nach Aichholzer u. a. (2002) nennen wir die Abstandsfunktion d City-Metrik.
Bezüglich der euklidischen Norm ist ein Kreis KEuklid (a, r) mit Mittelpunkt
a und Radius r wohlbekannt und definiert als die Menge KEuklid (a, r) = {b ∈
R2 | dEuklid (b, a) = r}, wobei dEuklid die von der euklidischen Norm (L2 ) induzierte Metrik ist. Die formale Definition eines Kreises lässt sich aber auch
in Verbindung mit anderen Metriken verwenden. Verwenden wir die City-Metrik, so beschreibt ein City-Metrik-Kreis Kcity (a, t) weiterhin die Menge aller
Punkte, welche zu a den Abstand t haben, jedoch verwenden wir als Abstandsfunktion die City-Metrik. Somit stellt Kcity (a, t) nun die folgende Menge dar:
Kcity (a, t) = {b ∈ R2 | |QC (a, b)| = t}. Da in dieser Arbeit ausschließlich die
City-Metrik verwendet wird, bezeichnen wir einen City-Metrik-Kreis einfach als
Kreis K(a, t). Ein solcher Kreis ist auch die Wellenfront, welche zur Konstrukti-
22
Die Wellenfrontausdehnung
r3
c
1
vC
a
r1 b
d
r2
e1C
g
r4
e
f
h
e2C
ωi
Abbildung 3.2: Regionen r1 bis r4 von Punkten kombinatorisch äquivalenter
Wege nach S für die Punkte a und b, c und d, e und f sowie für g und h.
on der Quickest-Path-Map genutzt und in den nächsten Abschnitten beschrieben
wird.
3.3
Die Wellenfront
Die Wellenfront Wt (ω) ist der Kreis K(ω, t) mit Mittelpunkt ω und Radius t.
Somit besteht die Wellenfront zu jedem Zeitpunkt t aus der Menge aller Punkte
b ∈ R2 , für die |QC (ω, b)| = t gilt, welche also innerhalb von t Zeiteinheiten den
Bezugspunkt ω erreichen können. Mit fortschreitender Zeit t simuliert Wt (ω) somit von ω ausgehend alle möglichen schnellsten Pfade. Die Wellenfront Wt (S) ist
die gemeinsame Wellenfront aller Bezugspunkte ω1 , . . . , ωn , und besteht somit
zunächst aus einer Menge von n Kreisen K(ωi , t). Mit fortschreitender Ausdehnung der einzelnen Wellenfronten vereinigen sie sich zu einer gemeinsamen
Wellenfront.
Simuliert man nun die Wellenfrontausdehnung und speichert man dabei für
jeden Punkt der Ebene, wie er durch die Wellenfront erreicht wurde, so kann
man rückwärts für jeden Punkt den schnellsten Pfad nach S angeben. Es bleibt
also lediglich, ein effizientes Verfahren zur Simulation der Wellenfrontausdehnung zu finden und eine Datenstruktur zu erstellen, welche in der Lage ist, für
jeden Punkt p der Ebene den Weg zu dem Bezugspunkt ωi zu speichern, welcher
von p am schnellsten zu erreichen ist. Da diese Information offensichtlich nicht
für jeden Punkt der Ebene separat gespeichert werden kann, fassen wir Punkte
mit kombinatorisch äquivalentem schnellsten Pfad zu S zu Regionen zusammen.
Dies wird durch das Erstellen der Quickest-Path-Map VC (S) erreicht, welches
die Ebene in Regionen von Punkten kombinatorisch äquivalenter schnellster Pfade zu S partitioniert. Wir bezeichnen zwei schnellste Pfade als kombinatorisch
äquivalent, wenn sie sich lediglich durch den Pfad zu dem ersten genutzten Netzwerkelement unterscheiden, und die Startpunkte jeweils dieselbe relative Lage zu
diesem Element besitzen. In Abbildung 3.2 sind vier solche Regionen zu sehen.
1
Dabei liegen zum Beispiel a und b jeweils links unterhalb des Knotens vC
∈ C,
2
und g und h jeweils oberhalb des Segments eC ∈ C. Wie wir im Folgenden argumentieren werden, kann die Quickest-Path-Map im Zuge einer Simulation der
Wellenfrontausdehnung erstellt werden. Um die Wellenfrontausdehnung effektiv
zu simulieren, ist es zunächst notwendig ihr Verhalten genauer zu untersuchen,
was im Weiteren dieses Kapitels geschieht.
3.3 Die Wellenfront
23
C
C
vW
ω
ω
Abbildung 3.3: Für t ≤ d(ω, C) ist die
Wellenfront Wt (ω) ein L1 -Kreis.
3.3.1
Abbildung 3.4: Start der Wellenfront Wt (ω) als City-Metrik-Kreis.
Wir zeichnen Knoten der Wellenfront,
welche auf C wandern, im Sinne der
Übersichtlichkeit nicht ein.
Der Start der Wellenfront
Bevor ein sogenanntes Ereignis eintritt, also eine Änderung der kombinatorischen Struktur der Wellenfront durch Interaktion der Wellenfront mit dem
Transportnetzwerk oder mit sich selbst, dehnt sich die Wellenfront mit der Zeit
t in vorhersehbarer Weise aus. Liegt ω nicht auf C, so ist die Wellenfront Wt (ω)
bei hinreichend kleinem t ein L1 -Kreis wie in Abbildung 3.3. Um die Ausdehnung der Wellenfront zu verdeutlichen, wird in den meisten Abbildungen nicht
etwa nur die Wellenfront zu einem Zeitpunkt t dargestellt, sondern eine Menge
äquidistanter, konzentrischer Wellenfronten zu früheren und späteren Zeitpunkten. Liegt der Bezugspunkt ω auf C, wie in Abbildung 3.4, so dehnt sich die
Wellenfront entlang der Kanten des Netzwerks mit höherer Geschwindigkeit aus
als im Rest der Ebene. Beim Start der Wellenfront besteht sie aus einer Figur und bei späteren Ereignissen entstehen weitere Figuren. Dabei gilt stets die
folgende offensichtliche aber wesentliche Aussage:
Lemma 3.1 Ein Kreis der City-Metrik besteht nur aus geraden Kanten sowie
aus konvexen und konkaven Ecken.
Beweis. Breitet sich die Wellenfront wie in Abbildung 3.3 dargestellt frei in der
Ebene aus, und nicht zumindest zum Teil entlang eines Netzwerksegements, so
gilt die Behauptung wie bei den L1 -Kreisen der Manhattan-Metrik. In Abbildung 3.5 ist dargestellt wie sich die Wellenfront vom Punkt ω mit Koordinaten
ω = (0, 0) ausgehend ausdehnt. Auf dem Netzwerksegment c, das ω enthält,
sei die Geschwindigkeit gc möglich. Die Wellenfront breitet sich ab dem Zeipunkt 0 entlang c aus. Nach Argumenten aus Abschnitt 3.2 hat ein Punkt
p der Wellenfront im ersten Quadranten zum Zeitpunkt t die Koordinaten
(xp , yp ) = (xp , t − xp /gc ) für 0 < xp < tgc . Die resultierende lineare Funktion
für die Koordinaten der Punkte der Wellenfront im ersten Quadranten ergibt also eine gerade Kante. Eine ähnliche Aussage ist für andere Kanten und Figuren
der Wellenfront möglich. Ausgehend vom Start der Wellenfront folgt nun per
24
Die Wellenfrontausdehnung
y
p
eC
ω
yp
x
xp
Abbildung 3.5: Lage eines Punkts p der Wellenfront.
Induktion über die Menge der Ereignisse, dass die Wellenfront zu jedem Zeitpunkt nur gerade Kanten besitzt. Dazu genügt die Beobachtung, dass bei dem
Verschmelzen zweier Wellenfronten die Geradlinigkeit der Kanten, nach Definition des Straight-Skeletons, bestehen bleibt. Für Ecken ist nichts zu beweisen.
In den folgenden Abschnitten werden eine erste Datenstruktur und die verschiedenen Typen von Ereignissen und Figuren, welche im Verlauf der Wellenfrontausdehnung auftreten, beschrieben.
3.3.2
Eine erste Datenstruktur
Bevor wir die einzelnen Ereignisse im Detail betrachten, sei in diesem Kapitel
dargelegt, wie die Wellenfront in der Ebene durch eine verkettete Liste implementiert werden kann.
Zu Beginn der Wellenfrontausdehnung stellt WS (t) im Allgemeinen eine
Menge von City-Metrik-Kreisen dar, jeweils bestehend aus zunächst vier Knoten
und vier Kanten. Liegt ein Bezugspunkt ωi auf C, so können dies bis zu acht
Knoten und acht Kanten sein, man vergleiche dazu Abbildungen 3.3 und 3.4. Sobald eines der im folgenden Abschnitt beschriebenen Ereignisse eintritt, ändert
sich diese Topologie, und Elemente von WS (t) kommen hinzu oder verschwinden. Die Darstellung der Wellenfront als einfacher Zykel legt eine Datenstruktur
für die Wellenfront nahe: eine Implementierung der Wellenfront als verkettete
Liste aus Kanten und Knoten garantiert schnelles Einfügen und Löschen von Objekten in konstanter Zeit und erlaubt es inzidente Objekte schnell aufzufinden.
Zudem ist eine Liste in der Lage, alle benötigten Informationen der Wellenfront zu speichern, zum Beispiel die Steigung einer Kante. Bei der Beschreibung
sogenannter Typ-D-Ereignisse im folgenden Abschnitt werden wir beobachten,
dass langfristig eine Menge von Zykeln notwendig sein wird, um dem Wesen der
Wellenfront gerecht zu werden.
3.3 Die Wellenfront
3.3.3
25
Typen von Ereignissen
Während der Ausdehnung der Wellenfront tritt eine laut Abschnitt 3.4 linear große Menge von Ereignissen ein, bei denen Elemente von Wt (S) entweder
auf das Transportnetzwerk C oder sogar auf eine weiteres Element der Wellenfront stoßen. Bei jedem Ereignis ändert sich die kombinatorische Gestalt der
Wellenfront. In den folgenden vier Abschnitten untersuchen wir die auftretenden Ereignisse im Einzelnen. Sei zu diesem Zweck eW eine Kante, und vW ein
Knoten der Wellenfront. Sei weiterhin eC ein Segment, und vC ein Endpunkt
eines Segments des Netzwerks. In einigen Fällen wird im Sinne der Übersichtlichkeit auf den Index verzichtet. Um die einzelnen Ereignisse in einem größeren
Zusammenhang zu sehen, sei auf Abbildung 11.1 verwiesen.
Wir gehen bei Ereignissen, die bei der Simulation der Wellenfrontausdehnung
auftreten, im Allgemeinen wie folgt vor:
1. Lösche alle Objekte aus der Wellenfront, welche an einem Ereignis beteiligt
sind, oder zu einem solchen Objekt inzident sind.
2. Schließe alle beteiligten Regionen des Konstruktionsdiagramms ab.
3. Füge entsprechend dem behandelten Ereignis neue Objekte in die Wellenfront ein.
Bei vielen Ereignissen, wie zum Beispiel in Abbildung 3.6 für die Knoten v1 und
v4 , erscheint es nicht notwendig einen Knoten oder eine Kante zu löschen um
nach dem Ereignis wieder ein äquivalentes Objekt in die Wellenfront einzufügen.
Dieser vorsichtige Umgang mit Elementen der Wellenfront, welche an einem Ereignis beteiligt sind, birgt zwar einerseits zusätzliche Komplikationen, andererseits ermöglicht uns eine feinere Zerteilung der Regionen der Quickest-Path-Map
jedoch, effektivere Datenstrukturen für die Vorhersage von Ereignissen zur Verfügung zu stellen; dies wird in Abschnitt 6.6 offenbar. Zusätzlich sichert uns Korollar 3.1 zu, dass durch die zusätzliche Augmentierung der Quickest-Path-Map
zum Konstruktionsdiagramm KV keine Erhöhung der asymptotischen Laufzeit
entsteht. Die zusätzliche Verfeinerung im Konstruktionsdiagramm spielt lediglich bei der Simulation der Wellenfrontausdehnung eine Rolle, für die Pfadsuche
in der fertiggestellten Quickest-Path-Map bergen die Konstruktionskanten lediglich Komplikationen. Daher werden die zusätzlichen Kanten nicht in VC (S)
abgespeichert und inzidente Regionen vereinigt wie in Abbildung 6.15 dargelegt.
Es folgt ein Beschreibung der verschiedenen Ereignistypen im Einzelnen.
26
Die Wellenfrontausdehnung
Eine Ecke der Wellenfront stößt auf das Netzwerk
Angenommen v1 berührt zum Zeitpunkt t0 (grau) die Kante eC wie
v4
in Abbildung 3.6 dargestellt. Entlang
des Segments eC ist nun in beide
v3
v5
eC
Richtungen eine schnellere Geschwinv2
v6
digkeit gegeben und die Wellenfront
v1
entwickelt sich wie dargestellt. Ein
solches Ereignis, bei dem ein Knoten
der Wellenfront auf eine Kante des
Abbildung 3.6: Ein Typ-A-Ereignis.
Netzwerks trifft, nennen wir im Folgenden Typ-A-Ereignis. An der Wellenfront treten bei einem solchen Ereignis die folgenden Änderungen auf:
• Der Knoten v1 wird gelöscht.
• Die beiden zu v1 inzidenten Kanten werden gelöscht.
• Fünf neue Knoten entstehen (v2 , . . . , v6 ).
• Sechs neue Kanten entstehen (dicker).
Eine Kante der Wellenfront rutscht in das Netzwerk
Angenommen die Wellenfront berührt
v3
zum Zeitpunkt t0 (grau) den Knoten vC ,
so dass die Kante eW , wie in Abbildung 3.7 dargestellt, vC berührt. Zum
Zeitpunkt t0 ändert sich die kombinatoeW
v2
rische Gestalt der Wellenfront. Entlang
vC
eC
des Segments eC ist nun eine schnellere
v1
Geschwindigkeit gegeben, und Wt (ω) entwickelt sich wie dargestellt. Ein solches
Ereignis, bei der eine Kante der Wellen- Abbildung 3.7: Ein Typ-B-Ereignis.
front in einen Endpunkt des Netzwerks
rutscht, nennen wir im Folgenden Typ-B-Ereignis. An der Wellenfront treten
bei einem Typ-B-Ereignis die folgenden Änderungen auf:
• Die Kante eW wird gelöscht.
• Drei neue Knoten entstehen
(v1 , v2 , v3 ).
• Vier neue Kanten entstehen.
Eine Kante der Wellenfront verschwindet
1
2
Angenommen die beiden Knoten vW
und vW
, welche zur Kante eW inzident sind,
nähern sich wie in Abbildung 3.8 dargestellt an, so dass eW zum Zeitpunkt t0
(grau) auf die Länge Null schrumpft. Dies kann beispielsweise als Spätfolge eines
Typ-B-Ereignisses geschehen. Man vergleiche dazu, wie sich die Teile der Kante
3.3 Die Wellenfront
27
e1W
1
vW
eW
2
vW
e2W
3
vW
Abbildung 3.8: Ein Typ-C-Ereignis.
entwickeln, welche in Abbildung 3.10 in das erste Typ-B-Ereignis involviert ist.
Entsprechend den beiden zu eW adjazenten Kanten entwickelt sich dieser Teil
3
der Wellenfront und ein neuer Knoten der Wellenfront vW
weiter wie dargestellt.
Ein Ereignis, bei dem eine Kante von Wt (ω) verschwindet, involviert das Transportnetzwerk nicht. Wir bezeichnen es als Typ-C-Ereignis. An der Wellenfront
treten bei einem solchen Ereignis die folgenden Änderungen auf:
• Die Kante eW wird gelöscht.
1
2
• Die beiden zu eW inzidenten Knoten vW
und vW
werden gelöscht.
• Die beiden Kanten e1C und e2C werden gelöscht.
3
).
• Ein neuer Knoten entsteht (vW
• Zwei neue Kanten entstehen (dicker).
Man beachte, dass bei einem Typ-C-Ereignis die Gesamtanzahl der Kanten und
die der Knoten der Wellenfront jeweils um eins abnehmen. Somit verringert ein
solches Ereignis die Komplexität der Wellenfront, im Gegensatz zu allen anderen
Ereignistypen, welche allesamt eine Erhöhung der Komplexität von Wt (S) zur
Folge haben. In manchen Situationen, wie in Abbildung 3.9 dargestellt, kann sich
eine sogenannte Insel ausbilden. Die Wellenfront nutzt die Geschwindigkeit 4 der
beiden Segmente e1C und e2C , kollidiert am Punkt vC des Netzwerks und schließt
dann einen Bereich der Ebene ein, der noch nicht überstrichen wurde. Eine solche
Insel führt zu (mindestens) drei simultan eintretenden Typ-C-Ereignissen, nach
denen insgesamt drei Knoten und drei Kanten verschwinden, und die Wellenfront
somit lokal verschwindet. Abbildung 3.10 zeigt eine spezielle Situation, in der in
einer Insel sogar vier simultane Typ-C-Ereignissen eintreten können. Eine Insel
kann sich jedoch nur nach einem Ereignis des letzten Typs ausbilden, welcher
im folgenden Abschnitt beschrieben wird.
Wellenfront trifft Wellenfront
1
Angenommen der Knoten vW
der Wellenfront trifft auf die Kante eW der Wellenfront, wie in Abbildung 3.11 dargestellt. Dies kann auftreten, wenn ein Teil
der Wellenfront mit Hilfe eines Umwegs über das Netzwerk einen anderen Teil
der Wellenfront überholt. Das weitere Verhalten der Wellenfront hängt nun von
allen an der Kollision beteiligten Kanten und Knoten ab. Auch dieses Ereignis,
bei dem Wt (S) mit sich selbst kollidiert, involviert das Transportnetzwerk nur
28
Die Wellenfrontausdehnung
e1C
v1
vC
v3
v2
vC
v4
v3
v1
v2
e2C
ωi
ωi
Abbildung 3.9: Eine Insel entsteht
und erzeugt drei simultane Typ-CEreignisse.
Abbildung 3.10: Eine spezielle Insel und vier simultane Typ-CEreignisse.
2
vW
1
2
vW
3
1
eW
eW
1
vW
1
vW
2
4
2
4
3
vW
3
vW
Abbildung 3.11: Ein Typ-D-Ereignis.
3
Abbildung 3.12: Andere Sichtweise eines Typ-D-Ereignisses.
insofern, als dass sich eines der oder beide kollidierenden Elemente der Wellenfront auf dem Netzwerk bewegen können. Wir bezeichnen es als Typ-D-Ereignis.
An der Wellenfront treten bei einem solchen Ereignis die folgenden Änderungen
auf:
• Die Kante eW wird gelöscht.
1
• Der Knoten vW
wird gelöscht.
1
• Die beiden zu vW
inzidenten Kanten werden gelöscht.
2
3
• Zwei neue Knoten entstehen (vW
, vW
).
• Vier neue Kanten entstehen (dicker).
Ereignisse vom Typ D haben zwei weitere, wesentlich globalere Effekte auf die
kombinatorische Gestalt der Wellenfront. Durch Typ-D-Ereignisse vereinigen
3.3 Die Wellenfront
29
ω1
ω2
Abbildung 3.13: Ein Typ-D-Ereignis vereint die beiden Wellenfronten von ω1
und ω2 .
sich die zunächst disjunkten Wellenfronten Wt (ωi ) sukzessive zu einer zusammenhängenden, gemeinsamen Wellenfront, siehe Abbildung 3.13. Durch eine
Kollision eines Knotens mit einer Kante innerhalb derselben Zusammenhangskomponente der gemeinsamen Wellenfront Wt (S) hingegen zerfällt die Wellenfront in zwei Zusammenhangskomponenten, während das Innere der Kreisschei”
be“ als Vereinigung kürzester Pfade stets zusammenhängend bleibt. Betrachtet
man die Elemente von Wt (S) wie in Abbildung 3.12 angedeutet, so sind zum
Zeitpunkt vor der Kollision noch die Teile 1 und 2 sowie die Teile 3 und 4 jeweils miteinander verbunden. Zum Zeitpunkt der Kollision berühren sich alle
vier und tauschen ihre Nachbarschaften aus: nun ist Teil 1 mit Teil 3 verbunden
und Teil 2 mit Teil 4. Dieser Zerfall der Wellenfront wurde in Abschnitt 3.3.2
bereits angedeutet.
Abbildung 3.14 zeigt den Zerfall der Wellenfront in zwei Teile in einem größeren Zusammenhang. Dabei zeigt die graue Wellenfront den letzten Zeitpunkt
(im Rahmen der in der Abbildung genutzten Diskretisierung), an dem sie noch
zusammenhängend ist, und die dickere, schwarze Wellenfront zwei unzusammenhängende Teile der Wellenfront zu einem etwas späteren Zeitpunkt. Nach einem
oder mehreren solcher Ereignisse besteht die Wellenfront aus einer Menge von
einfachen Zykeln, da sich bei jedem Zerfall ein bestehender Zykel in zwei Zykel
teilt. Der Begriff der Wellenfront umfasst nach Ereignissen dieser Art die Gesamtheit aller Zykel. Dementsprechend werden mehrere verkettete Listen zum
Speichern der Wellenfront benötigt, eine Liste für jeden Zykel. Offensichtlich
ändert dies nicht die Tatsache, dass nur O(c + n) Speicherbedarf benötigt wird.
3.3.4
Relevanz von Ereignissen
Betrachtet man die Änderungen an der Wellenfront bei jedem der vier beschriebenen Ereignistypen, so lässt sich ohne Beweis folgende Beobachtung zusammenfassend feststellen:
Beobachtung 3.1 Bei jedem Ereignis haben die Änderungen an der Wellen-
30
Die Wellenfrontausdehnung
ω
Abbildung 3.14: Die Wellenfront wird nach einem Typ-D-Ereignis unzusammenhängend.
front jeweils konstanten Umfang.
Die notwendigen Änderungen, welche die Ereignisse an der Wellenfront erfordern, werden im Folgenden nicht im Detail behandelt. Da die benötigte Laufzeit
zur Behandlung eines Ereignisses nach Beobachtung 3.1 O(1) beträgt, genügt
es uns, lediglich die Anzahl und die Entdeckung der behandelten Ereignisse zu
betrachten.
Ein Algorithmus, der die Ausdehnung der Wellenfront simuliert, muss sich
also primär dem Problem stellen, Ereignisse und insbesondere das nächste eintretende Ereignis zu erkennen. Wie im Folgenden dieser Arbeit klar werden wird,
stellen dabei sogenannte virtuelle Ereignisse eine Hürde dar.
Definition 3.3 (Virtuelle Ereignisse und Figuren) Ein virtuelles Ereignis ist eine der Interaktionen aus Abschnitt 3.3.3, welche zu einem gegebenen
Zeitpunkt möglich scheint, jedoch durch ein anderes Ereignis vorweggenommen
und niemals tatsächlich eintreten wird. Die Figur eines virtuellen Ereignisses
ist eine virtuelle Figur.
Abbildungen 3.15 und 3.16 stellen eine einfache Situation dar, in der ein solches
virtuelles Ereignis vorliegt. In Abbildung 3.15 ist der Knoten v1 der Wellenfront
auf Kollisionskurs mit dem Netzwerksegment eC . Das resultierende Typ-A-ErA
eignis am Punkt vC
ist in Hellgrau angedeutet. Abbildung 3.16 stellt denselben
Teil der Wellenfront kurz vor Eintritt des Typ-A-Ereignisses dar. Ein Typ-DEreignis (grau) zwischen v1 und der schnell wandernden Kante eW tritt ein und
verhindert, dass der Knotenstrahl v1 weiterwandert. Somit tritt das Typ-A-Ereignis zwischen v1 und eC nicht ein.
3.3 Die Wellenfront
31
v1
v3
eW
v1
eW
eC
A
vC
v2
Abbildung 3.15: Ein virtuelles Typ-AEreignis bahnt sich an.
eC
v2
Abbildung 3.16: Ein Typ-D-Ereignis
nimmt das virtuelle Typ-A-Ereignis
vorweg.
Offensichtlich stellt es kein Problem dar ab einem gewissen Zeitpunkt während der Wellenfrontausdehnung ein virtuelles Ereignis als virtuell zu entlarven
und dann zu verwerfen, jedoch bedeutet dies, dass dieses virtuelle Ereignis explizit behandelt wird. Eine explizite Behandlung virtueller Ereignisse hätte eine
quadratische Laufzeit des Konstruktionsalgorithmus zur Folge, da im schlimmsten Fall O(n + c) Knoten der Wellenfront mit O(c) Segmenten des Netzwerks
interagieren. Lemma 6.3 in Abschnitt 6.5.1 beweist, dass der effektive Prognosemechanismus des in dieser Arbeit dargelegten Algorithmus dieses Problem
löst.
Breitet sich die Wellenfront Wt (f2 ) einer Figur f2 deckungsgleich mit der
Wellenfront Wt (f1 ) einer anderen, älteren Figur f1 aus, oder wird Wt (f2 ) sogar
ganz von Wt (f1 ) überdeckt, so gilt die Inklusion Wt (f1 ) ⊇ Wt (f2 ). Wir unterscheiden virtuelle Ereignisse von relevanten und von redundanten Ereignissen
wie folgt:
Definition 3.4 (Redundante Ereignisse und Figuren) Existiert eine Figur f1 , so dass für die Figur f2 gilt: Wt (f1 ) ⊇ Wt (f2 ) so ist f2 eine redundante Figur. Ein redundantes Ereignis ist ein Ereignis, welches eine redundante
Figur erzeugt.
In Abbildung 3.17 ist ein Beispiel eines redundanten Ereignisses gegeben, dabei bieten die beiden Netzwerksegmente e1C und e2C dieselbe Geschwindigkeit
(2). Die graue Raute ist die Figur, welche durch das Typ-A-Ereignis zwischen
dem Knoten v1 und dem Segment e2C erzeugt wird, die Knoten dieser Figur sind
nicht eingezeichnet. Es ist gut zu sehen, dass die Wellenfront der neuen (grauen)
Figur deckungsgleich mit der alten Wellenfront verläuft. Bietet das Segment e1C
wie in Abbildung 3.18 sogar eine höhere Geschwindigkeit (3) als Segment e2C
(2), so bleibt die redundante Figur (grau) hinter der alten Wellenfront zurück.
Abbildung 3.19 zeigt ein Gegenbeispiel, hier bietet Segment e2C eine höhere Geschwindigkeit (3) als Segment e1C (2), somit ist das Typ-A-Ereignis zwischen e2C
und v1 nicht redundant sondern erzeugt die graue Figur, welche der alten Wellenfront (gestrichelt) vorauseilt. Ereignisse und Figuren, welche sowohl virtuell
als auch redundant sind, bezeichnen wir als virtuell. Es verbleibt die formale Definition von Ereignissen, welche keine der beiden genannten Definitionen
erfüllen:
32
Die Wellenfrontausdehnung
v2
e2C
e1C
v2
e2C
v1
Abbildung 3.17: Die Wellenfront der
redundanten, neuen Figur (grau) ist
gleichauf mit der alten Wellenfront.
e1C
v1
Abbildung 3.18: Die Wellenfront der
redundanten, neuen Figur (grau) ist
langsamer als die alte Wellenfront.
v2
e2C
e1C
e2C
v1
Abbildung 3.19: Eine nicht redundante Figur (grau) ersetzt zum Teil die
alte Wellenfront.
e1C
Abbildung 3.20: Am rechten Endpunkt von e2C tritt ein redundantes
Typ-B-Ereignis auf.
3.4 Die lineare Größe
33
Definition 3.5 (Relevante Ereignisse und Figuren) Ein relevantes Ereignis ist ein Ereignis, welches weder redundant noch virtuell ist. Die Figur
eines relevanten Ereignisses ist eine relevante Figur.
Die Frage, ob Ereignisse der Typen B, C oder D ebenfalls redundant sein können, erübrigt sich insofern, als dass dies an der asymptotischen Anzahl der
Ereignisse nichts ändert, wie im nächsten Abschnitt aus Satz 3.1 und dessen
Beweis hervorgeht. Intuitiv ist aber klar, dass Ereignisse der Typen C und D
immer eine grundlegende Änderung der kombinatorischen Gestalt der Wellenfront (d.h. Kanten der Wellenfront verschwinden oder werden gespalten, siehe
Abschnitt 3.3.3) mit sich bringen und somit entweder relevant oder virtuell
sind, nicht jedoch redundant. Desweiteren existiert nur eine lineare Anzahl von
Punkten in der Ebene, an denen Typ-B-Ereignisse eintreten können, nämlich die
Knoten des Transportnetzwerks C. Somit können wir feststellen, dass nur eine
lineare Anzahl nicht virtueller Typ-B-Ereignisse auftritt. Auf eine Unterscheidung dieser Ereignisse auf Relevanz und Redundanz wird daher verzichtet. Dass
ein Ereignis vom Typ B tatsächlich redundant sein kann, ist der Vollständigkeit
halber in Abbildung 3.20 aufgezeigt.
3.4
Die lineare Größe
Eine der wichtigsten Voraussetzungen, auf denen die Ergebnisse dieser Arbeit
beruhen, ist die Tatsache, dass eine Quickest-Path-Map VC (S) lineare Komplexität in der Menge der Netzwerkelemente und der Menge der Bezugspunkte
besitzt. Dieses Ergebnis stammt von Aichholzer u. a. (2002) und wird aufgrund
seiner Relevanz in diesem Abschnitt behandelt.
v4
v5
v1
v2
v3
v8
eC
v6
Ereignisse vom Typ B lassen erkennen, dass eine Quickest-Path-Map nicht notwendigerweise zusammenhängend ist, wenn
sich Skelettkanten der Figur eines Typ-BEreignisses parallel oder divergent zu allen
anderen Skelettkanten entwickeln. In Abbildung 3.21 ist eine solche Situation dargestellt.
Die Regionen, welche von solchen unbeschränkten Skelettkanten eingegrenzt werden,
bezeichnen wir im Folgenden als Randregionen. Für den Beweis der linearen Komplexiv7
tät der Quickest-Path-Map ist es jedoch sinnAbbildung 3.21: Die Menge der voll, festzulegen, dass sich alle unbeschränkSkelettkanten (gepunktet) wird ten Skelettkanten in einem Punkt v∞ treffen und dort enden. Dies ändert nichts an
unzusammenhängend.
der Menge der Regionen und Kanten und
fügt lediglich einen Knoten v∞ hinzu. Abbildung 3.22 zeigt an einem einfachen Beispiel, wie der Knoten v∞ einer QuickestPath-Map hinzugefügt wird.
ωi
Da VC (S) eine Partition der Ebene erzeugt, ist VC (S) ein planarer Graph,
dessen Knoten nach Abschnitt 2.1 einen Grad von mindestens 3 besitzen. Nach
34
Die Wellenfrontausdehnung
v∞
ωi
Abbildung 3.22: Der Knoten v∞ .
dem letzten Absatz ist dieser Graph zudem zusammenhängend. In diesem Graphen mit |V | Knoten, |E| Kanten und |F | Regionen gilt also:
3|V | ≤ 2|E|
Da dieser Graph planar und zusammenhängend ist, gilt zudem Eulers Polyederformel:
|V | − |E| + |F | = 2
Zusammen ergibt dies also:
|V | ≤ 2|F | − 4
|E| ≤ 3|F | − 6
Die Anzahl der Knoten und die Anzahl der Kanten ist somit linear in der Anzahl der Regionen. Die Anzahl der Regionen von VC (S) ist jedoch wiederum
beschränkt durch die Gesamtzahl aller Kanten der Figuren der Wellenfrontausdehnung, denn jede einzelne dieser Kanten zeichnet potentiell eine Region von
VC (S) aus.
Da jede Figur nach Abschnitt 3.3.3 aus einer konstanten Menge von Kanten
besteht, verbleibt die Frage, wie viele Figuren relevant sind. In der QuickestPath-Map (ohne die Konstruktionskanten von KV ) erzeugen nur Typ-A- und
Typ-B-Ereignisse Figuren. Wie in Definition 3.4 dargelegt bezeichnen wir eine Figur f als redundant, wenn eine andere Figur f1 exisitert, so dass für die
Wellenfronten dieser Figuren gilt: Wt (f1 ) ⊇ Wt (f ). Ein redundantes Ereignis erzeugt eine redundante Figur. Die Wellenfront erzeugt an den n Bezugspunkten
und an den O(c) Netzwerkknoten von C jeweils eine nicht redundante Figur.
Außerdem treten durch Typ-A-Ereignisse noch Figuren auf, welche innerhalb
eines Netzwerksegmentes entstehen. Im schlimmsten Fall erzeugt jeder der n
Bezugspunkte c Figuren innerhalb von Netzwerksegmenten, was bedeuten würde, dass Θ(c(c + n)) solcher Figuren entstehen können, wie in Abbildung 3.23
für n = 1 aufgezeigt wird. Jedoch zeigt folgendes Lemma, dass nur linear viele dieser Figuren nicht redundant sind. Sei vW zunächst ein Knoten, der bei
einem Typ-A-Ereignis am Punkt vA auf eine Kante des Netzwerks stößt. Wir
bezeichnen denjenigen neu entstandenen Knoten, der sich ausgehend von vA
3.4 Die lineare Größe
35
Abbildung 3.23: Es entstehen Θ(c(c + n)) Typ-A-Ereignisse, viele davon sind
redundant.
kollinear zum Knoten vW der Wellenfront bewegt als den Nachfolger von vW .
In Abbildung 3.6 ist der Knoten v4 der Nachfolger des Knotens v1 .
Lemma 3.2 Sei F eine Figur, welche durch ein Typ-A-Ereignis des Knotens
vW mit dem Netzwerksegment eC erzeugt wurde. Von den Figuren, welche durch
Typ-A-Ereignisse der Nachfolger von vW auf Netzwerksegmenten eC entstehen,
die parallel zu eC liegen, sind höchstens k nicht redundant.
Beweis. Abbildung 3.24 illustriert diesen Beweis. Sei t (grau) der Entstehungszeitpunkt der Figur f . Für jeden Zeitpunkt t0 > t sind die Wellenfronten Wt (f )
und Wt0 (f ) homothetisch. Das bedeutet, sie sind bezüglich einer geometrischen Streckung ähnlich, liegen in einer Ebene und besitzen ein gemeinsames
Streckungszentrum, welches wir homothetisches Zentrum nennen. Auf den Segmenten eiC des Netzwerks C sind k verschiedene Geschwindigkeiten möglich.
Somit kann nur bei maximal k − 1 parallelen Netzwerksegmenten eine Figur
entstehen, deren Wellenfront für ausreichend großes t nicht redundant zur
Wellenfront der Figur Wt (f ) ist, sondern flacher ist (siehe Kapitel 6 für eine
detaillierte Beschreibung der Figuren).
Da jede Figur konstant viele Knoten erzeugt, und nach Lemma 3.2 jeder
Knoten nur konstant viele nicht redundante Typ-A-Ereignisse erzeugt, gibt es
durch Typ-A-Ereignisse nur O(c + n) nicht redundante Figuren. Zusammen mit
den restlichen Figuren ergibt dies insgesamt O(c + n) nicht redundante Figuren.
Für den Fall n = 1 sind dies lediglich O(c). Nach obenstehender Argumentation
entspricht dies der Komplexität der Quickest-Path-Map. Als Ergebnis dieses
Kapitels kann somit der folgende Satz festgehalten werden, welcher die lineare
Komplexität von VC (S) und von VC (S) bestätigt.
Satz 3.1 (nach Aichholzer u. a. (2002)) Die Anzahl der Kanten, der Knoten und der Regionen der Quickest-Path-Map VC (S) ist jeweils linear in der
Anzahl der Netzwerksegmente und Bezugspunkte.
36
Die Wellenfrontausdehnung
vk
ekC
v2
e2C
v1
e1C
eC r
ωi
f
Abbildung 3.24: Ein Knoten der Wellenfront und seine Nachfolger erzeugen höchstens k redundante Typ-AEreignisse.
Abbildung 3.25: Die Unterteilung der
Region r (begrenzt durch gepunktete
Skelettkanten) ∈ VC (S) in die Regionen des Konstruktionsdiagramms KV
(schattiert).
Wie in Abschnitt 2.2 erwähnt, konstruieren wir eine Quickest-Path-Map, welche eine weitere Verfeinerung der Quickest-Path-Map darstellt. Dies geschieht
in Übereinstimmung mit den in Abschnitt 3.3.3 dargelegten Änderungen an
der kombinatorischen Gestalt der Wellenfront durch die einzelnen Ereignisse.
Dort haben wir bereits festgelegt, dass jedes Objekt der Wellenfront, welches
in ein Ereignis involviert ist, aus der Wellenfront gelöscht wird. Eine Region
der Quickest-Path-Map kann somit im Konstruktionsdiagramm weiter unterteilt werden, wie in Abbildung 3.25 durch schattierte Flächen dargestellt. Die
zusätzlichen Kanten wurden dort grau gepunktet. Wir definieren das Kanstruktionsdiagramm wie folgt:
Definition 3.6 (Konstruktionsdiagramm KV ) Das
Konstruktionsdiagramm KV ist eine Verfeinerung der Quickest-Path-Map. Die zusätzlichen
Kanten des Konstruktionsdiagramms sind alle Kanten der Wellenfront, welche
bei Eintreten eines Ereignisses gelöscht werden.
Man beachte, dass die zusätzlichen Kanten des Konstruktionsdiagramms “Momentaufnahmen“ gelöschter Wellenfrontkanten zum Zeitpunkt eines Ereignisses sind. Das Konstruktionsdiagramm wird ausschließlich beim Konstruktionsprozess der Quickest-Path-Map genutzt, für Quickest-Path-Anfragen spielt
das Konstruktionsdiagramm keine Rolle. Das folgende Korollar garantiert uns,
dass die Verfeinerung der Quickest-Path-Map zum Konstruktionsdiagramm die
asymptotische Komplexität nicht erhöht.
Korollar 3.1 (Lineare Größe des Konstruktionsdiagramms KV ) Die
Anzahl der relevanten Ereignisse während der Wellenfrontausdehnung sowie
die Anzahl der Kanten, Knoten und Regionen des Konstruktionsdiagramms KV
ist jeweils linear in der Anzahl der Netzwerksegmente.
3.5 Definierende Objekte und Pfadkodierung
37
Beweis. Nach Satz 3.1 gilt die Aussage für die Quickest-Path-Map. Nach Abschnitt 3.3.3 erzeugt jedes relevante Ereignis mindestens einen Knoten, eine
Kante oder eine Region. Da nach obenstehendem Beweis die Anzahl der Knoten und Kanten der Quickest-Path-Map linear in der Menge der Regionen ist,
tritt bei der Wellenfrontausdehnung nur eine lineare Anzahl von relevanten
Ereignissen auf. Da bei jedem Ereignis nur jeweils eine konstante Anzahl der
genannten Objekte entsteht, ist die Anzahl der einzelnen Objekte im Konstruktionsdiagramm jeweils linear in der Anzahl der Netzwerksegmente und der
Bezugspunkte.
Es sei angemerkt, dass bei einer expliziten Behandlung redundanter Ereignisse nicht nur die Anzahl der Ereignisse auf Θ(c(c + n)) ansteigt, sondern auch die
Komplexität der Quickest-Path-Map. Im Gegensatz zu den in Abschnitt 3.3.4
betrachteten virtuellen Ereignissen treten redundante Ereignisse bei der Wellenfrontausdehnung tatsächlich ein, können jedoch vernachlässigt werden, da sie lediglich redundante Figuren erzeugen. Um eine subquadratische Laufzeit für die
Konstruktion des verfeinerten City-Voronoi Diagramms zu erzielen, ist es sogar
notwendig redundante Ereignisse zu ignorieren, sonst ergäben sich während der
Simulation der Wellenfrontausdehnung Θ(cn) Ereignisse. Mit welcher Technik
diese redundanten Ereignisse vernachlässigt werden, wird in Abschnitt 8.3 dargelegt. Der folgende, letzte Abschnitt dieses Kapitels beschreibt, welcher Aspekt
der Konstruktion der Quickest-Path-Map VC (S) mit Hilfe der Wellenfrontausdehnung letztendlich genutzt wird, um kürzeste Pfade nach S zu ermitteln.
3.5
Definierende Objekte und Pfadkodierung
Da die Anzahl der Ereignisse, welche während der Wellenfrontausdehnung eintreten, endlich ist, gibt es ein letztes Ereignis, ab dem keine weiteren Änderungen
an der kombinatorischen Gestalt der Wellenfront mehr vorgenommen werden.
Durch die Bewegungen der Knoten der Wellenfront und die verschiedenen Ereignisse ist die Quickest-Path-Map nun fertiggestellt. Sie besteht nach Satz 3.1
aus einer Menge von Regionen, deren Kardinalität linear ist in c + n, der Summe der Anzahl von Netzwerkelementen und Bezugspunkten. Regionen sind in
der Regel beschränkt, jedoch bleiben alle Regionen unbeschränkt, welche nach
dem letzten eingetretenen Ereignis noch nicht beschränkt sind. Diese Regionen
sind Randregionen. Wir ordnen jede Region des Konstruktionsdiagramms KV
eindeutig ihrem definierenden Objekt zu.
Definition 3.7 Das definierende Objekt Def(r) einer Region r von KV ist die
Menge Def(r) = {p ∈ r | dC (S, p) ≤ dC (S, p0 ) für alle p0 ∈ r}.
Das definierende Objekt einer Region ist also entweder in S oder das Element
von KV , welches den Punkt oder die Punkte enthält, an dem oder an denen
diejenige Kante der Wellenfront entstanden ist, welche die Region ausgezeichnet
hat. Dies kann eine Kante oder ein Knoten sein.
Nachdem im Folgenden zunächst der algorithmische Konstruktionsprozess
von VC (S) beschrieben wird, spielt die Zuordnung von Regionen und Kanten
zu deren definierenden Objekten bei den eigentlichen Anfragen in Kapitel 9 ei-
38
Die Wellenfrontausdehnung
ne wesentliche Rolle. Diese Zuordnung beinhaltet letztendlich die Information
über den kürzesten Pfad von einem Anfragepunkt zum nächsten Bezugspunkt
ωi , denn dieser Pfad ist im Grunde eine Folge von sukzessiv zugeordneten definierenden Objekten und somit das Inverse eines kürzesten Pfads nach ωi . Dies
bedeutet, dass die Regionen von VC (S) Bereiche ähnlicher kürzester Wege nach
S auszeichnen, denn für alle Punkte einer gegebenen Region ist die Folge definierender Objekte bis hin zu S gleich. In Abschnitt 6.4.2 wird dargelegt, wie
während der Konstruktion der Quickest-Path-Map für jede Region ihr definierendes Objekt gespeichert wird. Man beachte, dass ein Anfragepunkt durchaus
auf einer Skelettkante oder sogar auf einem Knoten der Quickest-Path-Map liegen kann, nicht nur im Inneren der Regionen. Nach Definition der QuickestPath-Map zeichnen Kanten und Knoten von VC (S) Punkte aus, für die kein
eindeutiger schnellster Pfad nach S existiert. Somit kann ein Anfragepunkt auf
einem Knoten oder einer Kante von VC (S) einer beliebigen inzidenten Region
zugeordnet werden. In Kapitel 9 betrachten wir Anfragen im Detail.
Typ-B-Ereignisse bringen eine subtile Besonderheit mit sich: Wenn eine Kante eW in ein Segment ci des Netzwerks rutscht, so entsteht keine Skelettkante,
welche den Ort, an dem eW entsteht, mit ci verbindet, wo die Wellenfront sich
weiter ausdehnt. Die Menge der Skelettkanten kann auf diese Weise unzusammenhängend werden. Dies erscheint zunächst nicht weiter wichtig, spielt jedoch
bei Anfragen an die Quickest-Path-Map (siehe Kapitel 9) eine Rolle.
Definition 3.8 (β-Kanten) Eine β-Kante ist ein Zeiger, der bei einem TypB-Ereignis von dem definierenden Element der involvierten Region zu dem Ort
des Ereignisses zeigt.
Wir erstellen bei jedem Typ-B-Ereignis eine solche β-Kante, und sichern damit,
dass die Kantenmenge der Quickest-PathMap zusammenhängend bleibt. Zusätzlich
speichern wir für jede β-Kante den Winkel
B
vC
eC
ϕ
ϕ, den diejenige Kante der Wellenfront mit
der x-Achse einschließt, welche den Streieβ
fen auszeichnen, der in das Typ-B-Ereigωi
nis involviert ist. Abbildung 3.26 verdeutlicht die Funktion einer β-Kante. In Abschnitt 9.2 werden wir ϕ für die Entschlüsselung schnellster Pfade nutzen. Offensichtlich existiert nur eine lineare Anzahl von βKanten, was die asymptotische Laufzeit der
Abbildung 3.26: Die Kante eβ ist Konstruktion und den Speicherbedarf der
B
von ωi nach vC
gerichtet und Quickest-Path-Map unverändert lässt.
speichert den Winkel ϕ.
Kapitel 4
Die Wellenfront im Raum
In diesem Kapitel wird das Wesen der Wellenfront derart erweitert, dass alle
vier verschiedenen Ereignistypen durch einen einheitlichen Ansatz einem Ereignis des Typs D gleichzusetzen sind. Für Ereignisse des Typs C ist dies ohne
Weiteres möglich, wie in Abschnitt 4.1 dargelegt wird. Erst die Hinzunahme
einer dritten Dimension macht es jedoch möglich, Ereignisse vom Typ A und
vom Typ B als Ereignisse des Typs D zu interpretieren.
4.1
Eine Kante verschwindet
Wie in Abschnitt 3.3.3 dargelegt, ist ein Ereignis vom Typ D eine Kollision der
Wellenfront mit sich selbst. Ein Ereignis des Typs C ist intuitiv keine Kollision
von zwei Elementen der Wellenfront, da zunächst lediglich die Länge einer Kante
der Wellenfront auf Null sinkt. Betrachtet man jedoch, wie in Abbildung 3.8
aufgezeigt, die linke, adjazente Kante e1W und den rechten, inzidenten Knoten
2
vW
der Kante eW , so ergibt sich zwischen diesen beiden Elementen im Zuge
des beobachteten Typ-C-Ereignisses eine Kollision zwischen einem Knoten und
einer Kante der Wellenfront. Somit kann ein Ereignis vom Typ C auch als Typ D
betrachtet werden, wodurch eine Technik zur Prognose von Typ-D-Ereignissen
auch für den Typ C ausreichend ist. Natürlich erfordert dies, dass man das
Ereignis nach der Prognose als Typ-C-Ereignis erkennt; mittels eines schnellen
Nachbarschaftstests der betroffenen Elemente der Wellenfront ist dies jedoch,
im Zuge der Behandlung eines Typ-D-Ereignisses, in konstanter Zeit möglich.
Die Argumente dieses Abschnitts lassen die folgende Beobachtung zu:
Beobachtung 4.1 Jedes Verfahren, welches genutzt werden kann, um Typ-DEreignisse vorherzusagen, ist auch in der Lage, Ereignisse vom Typ C zu erkennen.
Die Prognose von Typ-C-Ereignissen muss somit nicht weiter untersucht werden.
Im Folgenden wird eine ähnliche Aussage auch für Ereignisse vom Typ A und
B getroffen.
40
4.2
Die Wellenfront im Raum
Die Wellenfront als Höhenlinie
Aichholzer u. a. (1995) sprechen eine interessante Interpretation des StraightSkeletons an, die des Dachmodells. Weiterhin nutzen Eppstein und Erickson
(1999) diese Anschauung für ihre Konstruktionstechnik eines Straight-Skeletons. Bei der üblichen Betrachtungsweise des Straight-Skeletons als Partition
eines gegebenen Polygons kann dessen Straight-Skeleton zur Konstruktion eines
Daches genutzt werden, indem Regionen des Straight-Skeletons zu einzelnen
Dachflächen werden, deren Neigung durch ein Gewicht bestimmt wird, welches
der definierenden Polygonkante gegeben wird. In der Ebene entspricht das Gewicht einer Kante der Geschwindigkeit, mit der diese Kante sich bei der Wellenfrontausdehnung bewegt. Der Algorithmus, welcher in dieser Arbeit vorgestellt
wird, macht sich ebenfalls die Hinzunahme einer dritten Dimension zu Nutze. In
diesem Abschnitt wird dargelegt, wie die Quickest-Path-Map nicht nur ebenfalls
eine dreidimensionale Interpretation besitzt, sondern auch, wie diese während
des Konstruktionsprozesses genutzt wird.
Man betrachte im Folgenden die Wellenfront im Raum, wobei die neue
Raumachse die z-Achse sei und die z-Koordinate zur Startzeit 0 sei. Lässt man
die Wellenfront, zusätzlich zu ihrer bisherigen Ausbreitung in Richtung der xund y-Richtung, mit jeder Zeiteinheit in Richtung der z-Achse ansteigen, so
kann sie zu jedem Zeitpunkt als einheitliche Höhenlinie gesehen werden. Während dieser dreidimensionalen Ausdehnung der Wellenfront zeichnen die Kanten
der Wellenfront Flächen aus. Analog zu der Interpretation des Straight-Skeletons eines Polygons als Dachkonstruktion kann die Quickest-Path-Map somit als
Modell eines Terrains interpretiert werden, welches n Abflüsse ωi besitzt, wobei
von jedem Punkt des Terrains durch Abwärtswandern genau ein Abfluss erreicht
werden kann. Abhängig von der Struktur des Netzwerks kann diese Oberfläche
vielfältig sein, doch sie steigt ausgehend von den Elementen von S konstruktionsbedingt streng monoton an (vorausgesetzt gi < ∞). Mit anderen Worten
kann die Quickest-Path-Map zur Konstruktion eines Terrains betrachtet werden, welches garantiert, dass Regenwasser vollständig in Richtung der Abflüsse
ωi , (1 ≤ i ≤ n), den Startpunkten der Wellenfront fließt, ohne Pfützen zu bilden.
Die Anwendung eines drainagierten Terrains mag etwas obskur klingen, doch
die Verwendung einer dritten Dimension ermöglicht es, ein Ereignis vom Typ D
als Kollision zwischen einem Strahl und einer Fläche zu betrachten. Der Strahl
stellt dabei die Bewegung eines Knotens im Zuge der Wellenfrontausdehung
dar, und die Fläche ist die geneigte Region des Terrains, welche von einer Kante ausgezeichnet wurde. Da jedes Element der Wellenfront stets mit konstanter
Geschwindigkeit in z-Richtung wandert, ändert die Hinzunahme einer dritten
Dimension nichts an der Tatsache, dass ein Ereignis eintritt und auch nichts an
dessen Zeitpunkt. Allerdings wird sich im Folgenden herausstellen, dass diese
Sichtweise viele Vorteile birgt. Eine Projektion der im Raum expandierenden
Wellenfront auf die x-y-Ebene ergibt wieder die alte Betrachtungsweise in der
Ebene. Die folgende Beobachtung fasst die Überlegungen dieses Absatzes zusammen:
Beobachtung 4.2 Ein Ereignis vom Typ D besteht bei Betrachtung der Wellenfrontausdehnung im Raum aus der Kollision eines Strahls mit einer Fläche.
4.3 Die Netzwerksegmente als Wände
41
Für solche Ray-Shooting-Anfragen Ray-Shooting-Anfrage gibt es eine Vielzahl
effektiver Techniken, die somit zur Berechnung von Ereignissen vom Typ D verwendet werden können. Wie Ray-Shooting-Anfragen bei der Konstruktion von
VC (S) im Detail durchgeführt werden, wird in den folgenden Kapiteln erläutert.
Im nächsten Abschnitt untersuchen wir zunächst, wie es die Verwendung einer
dritten Dimension möglich macht, die Kollisionen der Wellenfront mit Segmenten des Netzwerks ebenfalls als Ereignisse vom Typ D zu behandeln.
4.3
Die Netzwerksegmente als Wände
Angenommen eC sei eine Kante des Transportnetzwerkes C. Betrachtet man
die Wellenfrontausdehnung, wie im vorigen Abschnitt beschrieben, im Raum,
so ergibt sich eine intuitive Erweiterung für eC : dem zweidimensionalen Netzwerksegment eC wird eine dritte Dimension gegeben. Das Segment e wird in
Richtung der z-Achse zu einer einseitig unbegrenzten Fläche eC erweitert. Dabei bildet die ursprüngliche Kante eC den Boden dieses Streifens, und Strahlen,
welche parallel zur z-Achse nach oben ragen und die Endpunkte von eC als Fußpunkte haben, die Seiten von eC . Erweiterte Kanten von C sind also Flächen im
Raum, und erweiterte Knoten Strahlen. Erweitert man sämtliche Elemente des
Transportnetzwerks C, so erhält man eine Menge von endlos hohen Wänden,
senkrecht aufgebaut auf der x-y-Ebene. Auf diese Weise stehen die Netzwerksegmente auch im Raum bei einer dreidimensionalen Ausdehnung der Wellenfront
für diejenigen Kollisionen vom Typ A und vom Typ B bereit, welche bei einer
Wellenfrontausdehnung in der Ebene aufgetreten wären.
In Abschnitt 4.2 haben wir bereits festgestellt, dass Ereignisse vom
Typ D durch die Hinzunahme der
z-Achse als Kollisionen von Flächen
1
und Strahlen in R3 betrachtet wereC
den können. Die erweiterten Elemen2
te des Transportnetzwerkes sind jeeC
doch ebenfalls Flächen und Strahlen.
Dies legt den Ansatz nahe, Ereignisse, welche die Elemente des TransvW
portnetzwerkes C involvieren, mit eiy
ner ähnlichen Technik zu berechnen.
ωi
vW
Man betrachte Abbildung 4.1. Sei E
e1C
ein Ereignis vom Typ A, wie in Abe2
x C
schnitt 3.3.3 beschrieben, und sei vW
der Knoten, der bei diesem Ereignis E
Abbildung 4.1: Ein Typ-A-Ereignis im auf die Kante e1C des Netzwerks trifft.
Raum.
Nach der Erweiterung der Ebene zum
Raum sieht das Ereignis folgendermaßen aus: der erweiterte Knoten v W trifft als Strahl auf die erweiterte Fläche eC ,
welche von der Kante eC ausgezeichnet wird. Stellt man also zum Zweck der
Ereignisprognose die Elemente des Netzwerks C denen der Wellenfront gleich,
so ist dieses Ereignis E nach der Erweiterung nichts anderes als ein Ereignis
vom Typ D.
z
42
Die Wellenfront im Raum
z
Analog zu Typ-A-Ereignissen lassen sich auch Ereignisse vom Typ
vC
v 2W
B, ebenfalls beschrieben in Abschnitt 3.3.3, als Typ-D-Ereignisse
betrachten. Sei E nun ein Ereignis
eW
vom Typ B, und sei eW die Kane2C
vB
te der Wellenfront, welche bei diesem
Ereignis E in den Endpunkt vC einer
v 1W
2
vW
Kante des Netzwerks rutscht. Nach
1
der Erweiterung dieser Elemente ist
eC
vC
y
ew
das Ereignis E erneut eine Kollisiω
1
i
on eines Strahls mit einer Fläche im
vW
Raum: der erweiterte Netzwerkknox
ten v C ist ein Strahl und trifft die Fläche eW , welche von der Kante eW der
Wellenfront ausgezeichnet wird. Ab- Abbildung 4.2: Ein Typ-B-Ereignis im
bildung 4.2 zeigt diese Situation auf, Raum.
dabei zeigt vB den Ort des Typ-BEreignisses E im Raum auf. Das folgende Lemma fasst die Ergebnisse dieses
Kapitels zusammen:
Lemma 4.1 Betrachtet man die Wellenfrontausdehnung im Raum, indem die
Elemente des Transportnetzwerk um eine Ausdehnung in z-Richtung erweitert
werden, und die Bewegung der Wellenfront eine konstante z-Komponente erhält,
so können Ereignisse vom Typ A, B, C und D jeweils als Kollision eines Strahls
mit einer Fläche in R3 hervorgesagt werden.
Beweis. Für Typ C ist nach Beobachtung 4.1 nichts weiter zu beweisen. In
diesem Abschnitt haben wir argumentiert, dass Ereignisse vom Typ A oder vom
Typ B nach einer Erweiterung der Elemente von C als Kollisionen von Strahlen und Fläche im Raum betrachtet werden können. Zu guter Letzt sind nach
Beobachtung 4.2 Typ-D-Ereignisse im Raum ebenfalls derartige Kollisionen.
Im Folgenden übernehmen wir im Sinne der Übersichtlichkeit für einen erweiterten Knoten v die Bezeichnung v. Flächen, welche durch erweiterte Kanten
ausgezeichnet werden bezeichnen wir mit s. Desweiteren sprechen wir im Folgenden ohne weitere Erwähnung von erweiterten Objekten, wenn wir Kanten oder
Knoten betrachten. Gesucht ist also eine Technik zur effektiven Berechnung von
Kollisionen von Strahlen und Fläche im Raum. Dies würde genügen, um sämtliche Ereignisse, die während der Wellenfrontausdehnung auftreten, vorherzusagen. Die Vorhersage von Ereignissen macht es notwendig, die Erkennung der
in Abschnitt 3.3.4 beschriebenen virtuellen Ereignisse und die zeitliche korrekte
Ordnung der eintretenden Ereignisse genauer zu betrachten. Letzteres sowie die
dafür eingesetzte Technik beschreibt das folgende Kapitel.
Kapitel 5
Der Kern
Die einzelnen Ereignisse, welche während der Wellenfrontausdehnung in der
Ebene auftreten, haben wir in Kapitel 3 erläutert. In Kapitel 4 habe wir dargelegt, dass durch Hinzunahme einer dritten Dimension Ereignisse vom Typ
A, B, C und D mit Hilfe von gewöhnlichen Ray-Shooting-Anfragen vorhergesagt werden können. Mit Hilfe eines vereinheitlichten Ansatzes wurden dazu
die Elemente des Transportnetzwerks den Elementen der Wellenfront gleichgesetzt. Somit ist es möglich, alle Typen von Ereignissen mit einer einheitlichen
Technik vorherzusagen. In diesem Kapitel betrachten wir den Kern der Technik,
mit welcher entdeckte Ereignisse zeitlich geordnet werden und die Wellenfrontausdehnung für den Konstruktionsalgorithmus der Quickest-Path-Map simuliert
wird.
Eine kontinuierliche Ausdehnung der Wellenfront kann selbstverständlich
nicht unmittelbar gehandhabt werden, notwendig ist eine Zeitdiskretisierung.
Im Folgenden wird ein Konzept dargelegt, wie VC (S) durch einen zeitdiskreten Prozess konstruiert werden kann. Herzstück des Ansatzes ist ein Satz von
Eppstein und Erickson (1999), erstmalig aufgestellt von Eppstein (1995). Dieser
Satz, beschrieben in Abschnitt 5.2, erlaubt es auf effektive Weise, mit Hilfe von
Ray-Shooting-Anfragen und deren Inversen, genannt Lowest-Intersection-Anfragen, während der Wellenfrontausdehnung stets das nächste eintretende Ereignis
zu bestimmen.
5.1
Die Diskretisierung
Als Zeitpunkte, nach denen die Wellenfrontausdehnung zur Konstruktion diskretisiert wird, werden die in Kapitel 3 beschriebenen Ereignisse betrachtet,
welche die kombinatorische Gestalt der expandierenden Wellenfront verändern.
Zwischen diesen Ereignissen expandiert die Wellenfront auf vorhersehbare, lineare Weise, so dass der Zeitraum zwischen einem Ereignis und dem zeitlich
nächsten Ereignis in konstanter Zeit abgehandelt werden kann. Die Anzahl der
Zeitpunkte, an denen ein Ereignis stattfindet, ist linear in der Komplexität von
VC (S). Nach Abschnitt 2.1 ist dieser Wert wiederum linear in der Summe der
Netzwerksegmente des Transportnetzwerks C und der Bezugspunkte. Folglich
44
Der Kern
ist es ausreichend O(c + n) viele diskrete Zeitpunkte der Wellenfrontausdehnung
zu betrachten, um VC (S) vollständig konstruieren zu können.
Das Ziel eines zeitdiskreten Konstruktionsalgorithmus sollte demnach sein,
nicht wesentlich mehr Ereignisse als die notwendigen O(c + n) zu betrachten,
um eine optimale Laufzeit zu erzielen. Warum aber sollte ein Algorithmus mehr
Ereignisse betrachten als auftreten? Die Antwort auf diese Frage wurde in Abschnitt 3.3.4 gegeben: Es tritt während der Konstruktion von VC (S) eine große
Zahl von virtuellen Ereignissen auf. Diese Ereignisse tragen nicht zur Komplexität von VC (S) bei, und können somit von einem Konstruktionsalgorithmus
vernachlässigt werden – allerdings muss ein Ereignis zu diesem Zweck zunächst
als virtuell erkannt werden. Offensichtlich muss dies implizit geschehen, denn
nach Argumenten aus Abschnitt 3.3.4 würde eine explizite Betrachtung virtueller Ereignisse die Gesamtzahl der betrachteten Ereignisse auf Θ(cn) erhöhen. In
Abschnitt 6.5.1 wird bewiesen, dass der in dieser Arbeit dargelegte Algorithmus
die Behandlung virtueller Ereignisse vollständig auf implizite Weise verrichtet.
Dies bedeutet, dass virtuelle Ereignisse die asymptotische Laufzeit nicht erhöhen.
5.2
Die globale Prognose
Eppstein und Erickson (1999) stellen ein Verfahren vor, um die Interaktionen
zwischen Kanten und Knoten eines schrumpfenden Polygons zu simulieren, mit
dem Ziel das Straight-Skeleton (siehe Abschnitt 2.1) des Polygons zu konstruieren. Mit Hilfe einer Technik von Eppstein (1995) zum Aufrechterhalten von
Extrema binärer Funktionen, reduziert sich das Problem, die korrekte Folge von
Interaktionen zwischen Kanten und Knoten zu finden, auf die folgenden zwei
Anfrageprobleme:
1. Ray-Shooting-Anfrage: Halte eine dynamische Menge von Dreiecken im
Raum aufrecht, so dass Anfragen der Form: Welches Dreieck trifft ein
”
Anfragestrahl zuerst?“ effizient beantwortet werden können.
2. Lowest-Intersection-Anfrage: Halte eine dynamische Menge von Strahlen
im Raum aufrecht, so dass Anfragen der Form: Welcher Strahl bildet mit
”
einem Anfragedreieck den Schnittpunkt mit der geringsten z-Koordinate?“
effizient beantwortet werden können.
Diese Technik bildet einen wichtigen Bestandteil des in dieser Arbeit vorgestellten Algorithmus zur Konstruktion von VC (S), und wird im Folgenden als
Blackbox betrachtet, welche wir globale Prognose nennen. Im nächsten Absatz
wird der für uns relevante Satz von Eppstein und Erickson (1999) sowie einige formelle Bezeichnungen erläutert, um die Schnittstelle zur oben genannten
Technik darzulegen.
Seien R und B dynamische Mengen von Objekten, und sei eine Funktion
d : R × B → R gegeben. Die Funktion d sei eine beliebige Distanzfunktion,
welche in konstanter Zeit berechnet werden kann. In unserem Algorithmus wird
die Funktion d die Zeit repräsentieren, die zwei Objekte noch von einer Kollision trennt. Ähnlich den im letzten Absatz genannten Objekten werden die in
5.3 Lokale Prognosen
45
unserem Algorithmus genutzten Mengen von Objekten zum einen die Bahnen
der Knoten der Wellenfront sein, und zum anderen die Flächen, welche von den
Kanten der Wellenfront überstrichen und beschrieben werden.
Definition 5.1 Eine Datenstruktur unterstützt sogenannte Minimierungsanfragen zwischen den Mengen R und B, wenn für jedes Objekt r ∈ R ein Objekt
b ∈ B bestimmt werden kann, so dass d(r, b) minimal ist, und umgekehrt.
Der folgende Satz von Eppstein und Erickson garantiert nun, dass mit Hilfe von
Minimierungsanfragen das nächste Paar zwischen den Mengen R und B schnell
bestimmt werden kann:
Satz 5.1 (Eppstein und Erickson (1999)) Angenommen es ist nach einer
Vorverarbeitungszeit von P (n) möglich, eine Datenstruktur der Größe S(n) aufrechtzuerhalten, welche Einfüge- und Löschoperationen sowie Minimierungsanfragen unterstützt, jeweils in einer asymptotischen Laufzeit von T (n). Dann ist
es möglich, nach einer Vorverarbeitungszeit von O(P (n) + nT (n)) das nächste
Paar zwischen R und B aufrechtzuerhalten. Dabei wird ein Speicherbedarf von
O(S(n)) benötigt, für Einfügeoperationen eine Laufzeit von O(T (n) log n) und
2
für Löschoperationen eine Laufzeit von O(T (n)(log n) ).
Mit Hilfe dieses Satzes reduziert sich also das Problem die nächste Veränderung der Wellenfront zu finden auf das Problem Minimierungsanfragen zwischen
den Elementen der Wellenfront zu beantworten. In dem folgenden Abschnitt
werden die Minimierungsanfragen kurz besprochen, während sie in Kapitel 8 im
Detail betrachtet werden.
5.3
Lokale Prognosen
Die in Satz 5.1 geforderten Minimierungsanfragen fordern zwei verwandte Arten von Anfragen. Betrachtet man zunächst die Wellenfrontausdehnung, so ist
es notwendig eine Datenstruktur bereitzustellen welche, abgesehen von der Speicherung der dynamischen Wellenfront, in der Lage ist die folgenden beiden Anfragen zu beantworten:
1. Ray-Shooting-Anfrage: Welche Kante trifft ein Anfrageknoten auf seiner
Bahn zuerst?
2. Lowest-Intersection-Anfrage: Welcher Knoten bildet mit einer Anfragekante den Schnittpunkt mit der geringsten z-Koordinate?
Man beachte, dass wir bei diesen Anfragen von erweiterten Knoten und Kanten
sprechen. Die Elemente der Wellenfront werden im folgenden Kapitel genauer
betrachtet, und somit werden dort auch diese beiden Anfragen konkretisiert,
welche wir lokal nennen. Stehen diese beiden Anfragen zur Verfügung, und
ist d wie oben beschrieben die Zeit, die zwei Objekte noch von einer Kollision trennt, so kann nach Satz 5.1 die nächste Kollision zwischen einer Kante
und einem Knoten innerhalb der entsprechenden Laufzeit vorhergesagt werden.
46
Der Kern
Lokale Vorhersagen werden wie in Kapitel 8 beschrieben durch sublokale Anfragen gespeist. Abschnitt 8.7 verdeutlicht, wie lokale Vorhersagen aus sublokalen
Vorhersagen erstellt werden. Sublokale Vorhersagen stellen lediglich Ereignisse zwischen bestimmten Gruppen von Objekten fest. Wie diese Gruppen von
Objekten eingeteilt werden, betrachten wir im folgenden Kapitel.
Man beachte, dass die beiden degenerierten Fälle, eine Kollision von zwei
Knoten oder von zwei Kanten, durch diese Vorhersage ebenfalls abgedeckt sind.
Zu dem Zeitpunkt da zwei Knoten miteinander kollidieren, treffen auch die
Kanten, welche inzident zu diesen Knoten sind, am Punkt der Kollision ein. Andererseits trifft bei einer Kollision von zwei Kanten auch mindestens je einer der
inzidenten Knoten der Kanten auf die jeweils andere Kante. Somit werden diese
speziellen Ereignisse ebenfalls regulär entdeckt, sie haben lediglich größere Auswirkungen auf die Form der Wellenfront, da sie im Grunde mehrere Ereignisse
in einem vereinen.
Ereignisse, welche von Minimierungsanfragen geliefert werden, sind potentiell virtuell. Wie in Abschnitt 3.3.4 beschrieben, sind Ereignisse genau dann
virtuell, wenn mit Hilfe von lokaler Information zunächst ein zukünftiges Eintreten berechnet werden kann, im Laufe der Wellenfrontausdehnung allerdings
andere Ereignisse, welche die teilnehmenden Objekte involvieren, dieses Ereignis verhindern. Es ist allerdings nicht notwendig, ein jedes von einer Minimierungsanfrage geliefertes Ereignis auf dessen Virtualität zu prüfen, denn sollte
ein virtuelles Ereignis an die globale Prognose übergeben werden, so liegt es
an ihr, das virtuelle Ereignis nicht global vorherzusagen. Ein virtuelles Ereignis
hat also zunächst keine negativen Auswirkungen auf die Laufzeit, sollte es aber
von der globalen Prognose vorhergesagt werden, so ist tatsächlich eine Prüfung
notwendig, um die korrekte Konstruktion von VC (S) zu garantieren. Allerdings
wird in Lemma 6.3 im folgenden Kapitel bewiesen, dass die globale Prognose
kein virtuelles Ereignis vorhersagt.
Kapitel 6
Elemente der Wellenfront
In Kapitel 5 haben wir argumentiert, wie eine zeitliche Diskretisierung des Expansionsprozesses einer Wellenfront genutzt wird, um VC (S) zu konstruieren.
Wie bei den meisten Problemen, bei denen eine Lösung mit geringer Laufzeit
gefunden werden soll, spielen auch in dieser Arbeit die Datenstrukturen der genutzten Objekte eine wesentliche Rolle. In Abschnitt 3.3.3 legten wir dar, dass
für die Simulation der Wellenfrontausdehnung das Konstruktionsdiagramm KV
genutzt wird, die zusätzlichen Konstruktionskanten jedoch nicht in der QuickestPath-Map VC (S) gespeichert werden. In diesem Kapitel betrachten wir die Elemente von KV , die bei der Konstruktion von VC (S) im Raum (siehe Kapitel 4)
genutzt werden, und zeigen, warum die spezielle Wahl dieser Objekte eine gute
Laufzeit möglich macht.
Wie in Kapitel 4 bereits angesprochen, ist es sinnvoll die Wellenfront als
zyklisch verkettete Liste von Knoten und Kanten zu modellieren, da dies die
Bestandteile der Wellenfront sinnvoll repräsentiert. Diese beiden Objekte und
ihr Verhalten während der Wellenfrontausdehnung sind zwar relativ einfach zu
beschreiben, bedürfen aber einiger begrifflicher Klärungen. Diese wird in den
folgenden Abschnitten vorgenommen. Das wichtigste Ergebnis und Abschluss
dieses Kapitels ist Lemma 6.5, welches aussagt, dass jedes auftretende Ereignis
einem von einer konstanten Anzahl von Schemata folgt, und es somit möglich
ist, eine konstante Anzahl von speziell abgestimmten Datenstrukturen zu seiner
Vorhersage zu nutzen. Dadurch wird eine gute Laufzeit möglich. In Kapitel 7
wird dann eine geometrische Transformation vorgestellt, welche die genutzten
Objekte derart transformiert, dass eine weitere Verbesserung der Laufzeit möglich wird.
6.1
Figuren
Die Elemente von KV entstehen nach Abschnitt 3.3 beim Start der Wellenfront
und bei den nachfolgenden Ereignissen. Jedes Ereignis erzeugt eine Figur, und
das Interferenzmuster aller Figuren ergibt schließlich KV . In Abschnitt 3.3.3
haben wir bereits einige Figuren als Beispiele der Ereignistypen A und B betrachtet. Man beachte dabei, dass bei Typ-C- und Typ-D-Ereignissen keine
48
Elemente der Wellenfront
v4
v4
v1
v1
v3
v3
v2
v2
Abbildung 6.1: Eine 0-Nadel entsteht Abbildung 6.2: Eine 1-Nadel entsteht
beim Start der Wellenfront an Bezugs- bei Typ-B-Ereignissen an Endpunkten
punkten.
des Transportnetzwerks.
v4
v4
v1
v3
v2
v3
v1
v2
Abbildung 6.3: Eine 2-Nadel entsteht Abbildung 6.4: Eine innere 2-Nadel
bei Typ-B-Ereignissen an Ecken des entsteht bei Typ-A-Ereignissen.
Transportnetzwerks.
neuen Figuren entstehen, sondern lediglich besondere Vorfälle der Interferenz
der Wellenfronten verschiedener Figuren auftreten. Da wir in diesem Kapitel
eine detailliertere Untersuchung und eine Klassifizierung der Elemente von KV
vornehmen, ist in diesem Abschnitt eine Übersicht der relevanten Figuren in der
Ebene gegeben.
Abbildungen 6.1 bis 6.6 zeigen repräsentativ die auftretenden Figuren auf.
Die Geschwindigkeiten der schnell wandernden Knoten der Wellenfront sind jeweils aus der Menge G der k möglichen Geschwindigkeiten. Wir bezeichnen die
einzelnen Figuren als j-Nadeln, wobei j die Anzahl der spitzen Knoten der Wellenfront einer Figur angibt. Es gilt, dass 0 ≤ j ≤ 4 ist, da der Grad des Netzwerks
vier ist. In den Abbildungen ist zum Vergleich jeweils ein gestrichelter L1 -Kreis
eingezeichnet. Einige Ereignisse können als Typ A oder B behandelt werden,
wie zum Beispiel unmittelbar nach dem Start der Wellenfront in Abbildung 3.14,
wo eine Ecke der Wellenfront auf einen Endpunkt des Netzwerks trifft. Es bleibt
der Implementierung überlassen, wie solche Ereignisse gehandhabt werden. Aus
der Überlegung dass sich j-Nadeln gleichen Typs nur durch die Geschwindigkeiten auf den involvierten Netzwerksegmenten und durch Spiegelungen und
Drehungen um 90◦ unterscheiden, halten wir die folgenden Beobachtung fest:
Beobachtung 6.1 Es existiert nur eine konstante Anzahl von verschiedenen
Figuren.
6.2 Knoten und Strahlen
49
v4
v4
v1
v3
v3
v1
v2
v2
Abbildung 6.5: Eine 3-Nadel entsteht Abbildung 6.6: Eine 4-Nadel entsteht
bei Typ-A-Ereignissen an Knoten des bei Typ-A-Ereignissen an Knoten des
Transportnetzwerks mit Grad 3.
Transportnetzwerks mit Grad 4.
Auf eine detaillierte Untersuchung aller möglichen Figuren wird verzichtet, die
Anzahl möglicher Figuren liegt jedoch offensichtlich bei etwa O(k 4 ) (siehe Abschnitt 10.4). Figuren sind die Schlüssel zur Ausdehnung der Wellenfront, da
die Interferenz der einzelnen Wellenfronten die gemeinsame Wellenfront ergibt.
Um speziell abgestimmte Datenstrukturen zur Vorhersage von Ereignissen zu
konstruieren, betrachten wir in den folgenden Abschnitten das Spektrum der
möglichen Interferenzen im Detail.
6.2
Knoten und Strahlen
Ein Knoten stellt eine Ecke der Wellenfront dar. Jeder Knoten ist inzident mit
genau zwei Kanten der Wellenfront, da die Wellenfront, wie in Kapitel 4 erläutert, eine Menge von disjunkten Zykeln ist. Somit kann ein Knoten eine konkave
oder eine konvexe Ecke darstellen. Ein Knoten bewegt sich während der Expansion auf einem Strahl, dessen Fußpunkt der Entstehungspunkt des Knotens ist.
In der Geometrie ist ein Strahl bekanntlich eine Halbgerade, also eine einseitig
unbeschränkte Strecke. Im Folgenden benutzen wir allerdings die leicht abgewandelte Definition eines Knotenstrahls, welche der Intuition folgt, dass sich ein
Knoten während der Wellenfrontausdehnung mit endlicher Geschwindigkeit entlang eines Strahls bewegt, genauer gesagt mit der Ausbreitungsgeschwindigkeit
der Wellenfront in dieser Richtung:
Definition 6.1 (Knotenstrahl) Der Knotenstrahl eines Knotens der Wellenfront ist die orientierte Strecke zwischen dem Entstehungspunkt eines Knotens und seiner aktuellen Position während der Wellenfrontausdehnung. Orientiert ist die Strecke vom Entstehungspunkt in Richtung der aktuellen Position.
Ein Knotenstrahl ist nur solange definiert, wie der entsprechende Knoten an der
Wellenfront teilhat.
Sobald ein Knotenstrahl in ein Ereignis verwickelt ist, also mit einem anderen
Element der Wellenfront oder mit einem Element des Transportnetzwerkes kollidiert, ist er nicht weiter Element der zukünftigen Wellenfront, da an seiner
50
Elemente der Wellenfront
Position eine Änderung der Wellenfront stattfindet. Tatsächlich wird ein Knoten aus technischen Gründen auch dann aus der Wellenfront genommen, und
durch einen neuen ersetzt, wenn eine inzidente Kante in ein Ereignis verwickelt
ist, siehe dazu Abschnitt 3.3.3.
Definition 6.2 (Lebenszeit) Die Lebenszeit eines Knotens der Wellenfront
ist die Zeitspanne ab dem Ereignis seiner Entstehung bis zu dem Ereignis, welches seine Löschung aus der Wellenfront veranlasst.
Für einen Knotenstrahl werden lediglich dessen Fußpunkt, Entstehungszeitpunkt, Richtung und Geschwindigkeit gespeichert. Diese Daten genügen um die
diskretisierte Wellenfrontexpansion durchzuführen. Ist die Lebenszeit eines Knotenstrahls beendet, so wird er als orientierte Kante in der Quickest-Path-Map
abgespeichert. Die Orientierung der Kante entspricht der Richtung, in der sie
von der Wellenfront ausgezeichnet wurde. Dabei unterscheiden wir die folgenden
zwei Typen von Kanten:
Definition 6.3 (Pionier-Kanten) Pionier-Kanten sind Skelettkanten, welche
durch einen entsprechend der City-Metrik wandernden Punkt der Wellenfront
ausgezeichnet werden. Ein Knotenstrahl, der eine Pionier-Kante erzeugt, ist ein
Pionier-Knotenstrahl.
Definition 6.4 (gezogene Kanten) Gezogene Kanten sind Skelettkanten,
welche das Resultat von zwei Pionier-Kanten der Wellenfront sind, die schräg
(oder sogar frontal) aufeinandertreffen, und durch nahegelegene Netzwerksegmente beschleunigt werden. Ein Knotenstrahl, der eine gezogene Kante erzeugt,
ist ein gezogener Knotenstrahl.
Während bei gezogenen Kanten
kein
Punkt der Wellenfront im Zuv1
ge der Ausbreitung der Wellenfront
tatsächlich auf dem entsprechenden
v3
Knotenstrahl gewandert ist, entsteeW
hen Pionier-Kanten durch Knotenstrahlen, welche auch eine isolierte
v4
Figur erzeugen würde. Somit sind
vD
eC
Pionier-Kanten stets isothetisch. Eine Figur, welche an der Spitze eiv2
nes gezogenen Knotenstrahls startet,
kann der Geschwindigkeit des KnoAbbildung 6.7: Knotenstrahl v1 tenstrahls hingegen nicht folgen. Ge(Lebenszeit beendet) ist eine Pionier- nerell gilt, dass Pionier-Kanten direkt
Kante, v2 (auf eC ) ein Pionier- der City-Metrik folgen, und gezogeKnotenstrahl, v3 und v4 gezogene ne Kanten die unselbständigen Ergebnisse der Interferenz von zwei KanKnotenstrahlen.
ten sind, welche jeweils durch PionierKanten aufgespannt werden. Für ein Beispiel dieser Kantentypen betrachte man
Abbildung 6.7. Die beiden Knotenstrahlen v1 und v2 (auf eC wandernd) sind
vor dem Typ-D-Ereignis an Punkt vD Pionier-Knotenstrahlen. Nach dem Ereignis ist v2 weiterhin ein Pionier-Knotenstrahl, die Lebenszeit von v1 ist jedoch
6.3 Parameter von Knotenstrahlen
51
beendet und damit v1 eine Pionier-Kante. Die beiden Knotenstrahlen v3 und
v4 sind gezogene Knotenstrahlen und werden jeweils von v1 und v2 gezogen.
Die Unterscheidung dieser beiden Kantentypen wird bei der Suche nach schnellsten Pfaden in Kapitel 9 erneut relevant. Jede Skelettkante ist entweder eine
Pionier-Kante oder eine gezogene Kante, da jeder Knotenstrahl entweder der
City-Metrik ensprechend wandert oder nicht. Wir betrachten einige Spezialfälle
in Abschnitt 10.3.3.
Das Ziel die Konstruktionszeit von VC (S) zu minimieren macht es notwendig,
die Datenstrukturen für die Minimierungsanfragen optimal auf die gegebenen
Elemente der Wellenfront abzustimmen. Dazu sei zunächst die Definition von
ähnlichen Streifen gegeben:
Definition 6.5 (Ähnlichkeitsklasse) Zwei Knotenstrahlen sind genau dann
ähnlich, wenn ihre Richtungen und Geschwindigkeiten übereinstimmen. Eine
Ähnlichkeitsklasse von Knotenstrahlen enthält alle Knotenstrahlen einer bestimmten Richtung und Geschwindigkeit.
Somit unterscheiden sich zwei ähnliche Knotenstrahlen lediglich in den Koordinaten ihrer Fußpunkte. Im folgenden Abschnitt untersuchen wir die auftretenden
Knotenstrahlen bezüglich ihrer Richtungen und Geschwindigkeiten.
6.3
Parameter von Knotenstrahlen
Abhängig davon, wie ein Knoten entsteht, und welche Geschwindigkeiten auf
den Netzwerksegmenten existieren, kann ein Knoten eine von mehreren möglichen Geschwindigkeiten und Richtungen haben. Obgleich diese Parameter für
die Praxis eine große Rolle spielen, genügt für die theoretischen Überlegungen
die Beobachtung, dass die Anzahl der verschiedenen möglichen Geschwindigkeiten konstant ist. Pionier-Knotenstrahlen sind einfach zu klassifizieren, da sie in
direkter Weise vom Netzwerk abhängen. Etwas komplexer ist diese Abhängigkeit allerdings bei gezogenen Knotenstrahlen. In Abschnitt 6.1 wurde dargelegt,
welche Figuren auftreten. Wir unterscheiden fünf wesentliche Entstehungssituationen für Knotenstrahlen durch Interferenz von Figuren, welche wir in diesem
Abschnitt betrachten. Dabei beruhen derer drei auf orthogonal zueinander und
zwei auf parallel wandernden Knoten der Wellenfront. Die aufgezeigten Situationen und erschlossenen Formeln sind allgemein, lediglich die Geschwindigkeiten
der involvierten Pionier-Knotenstrahlen müssen angepasst werden.
Abbildung 6.8 zeigt auf, wie die Wellenfront zum Zeitpunkt t in den inneren Knoten vC des Transportnetzwerks C läuft und sich dort weiter ausbreitet.
Der Rand der grauen Region zeigt die Wellenfront der 2-Nadel, welche bei vC
entstanden ist, zum Zeitpunkt t + 3. Die Kante eW ist zum Zeitpunkt t + 3
wie dargestellt nach oben gewandert und bildet am Schnittpunkt v1 durch Interferenz mit der neuen Figur einen gezogenen Knotenstrahl. Dabei bieten in
Abbildung 6.8 die Segmente e1C und e2C die Geschwindigkeiten g1 = 2 beziehungsweise g2 = 3. Betrachtet man die Zeit, die die Wellenfront benötigt, von
vStart nach v1 zu gelangen sowohl auf direktem Weg (h) als auch indirekt (über
das Netzwerk und b), so ergibt sich für die Parameter h, b, und α1 und den
Vektor ~v (v1 ) des Knotenstrahls in dieser Situation Folgendes (als Vektornorm
52
Elemente der Wellenfront
wurde hier die euklidische Norm verwendet):
e2C (g2 = 3)
eW
v1
h
α1
vStart
vC
b
e1C (g1 = 2)
Abbildung 6.8: Eine Knoten der Wellenfront biegt ab und wandert weiter.
h=
b
h
+
+b
g1
g2
tan α1 =
1+
h
=
b
1−
⇒
1
g1
1
g2
=
1
1
h 1−
=b 1+
g2
g1
(6.1)
g2 (g1 + 1)
g1 (g2 − 1)
(6.2)
b
+3
g1
g1 (g2 − 1) g2 (g1 + 1)
b h
,
=
,
~v (v1 ) =
3 3
g1 g2 + 1 g1 g2 + 1
√
q
2
2
h +b
1
||~v (v1 )|| =
=
g22 + g12 + 2(g1 g2 )(g1 g2 + g2 − g1 )
3
g1 g2 + 1
h=
(6.3)
(6.4)
(6.5)
Die im letzten Abschnitt dargestellte Situation kann auch auf Typ-A-Ereignisse
angewendet werden. Dabei wird für die Geschwindigkeit g1 des Knotenstrahls,
der das Ereignis erzeugt, die Geschwindigkeit g1 = 1 angenommen.
Abbildung 6.9 zeigt auf, wie die Kante eW der Wellenfront zum Zeitpunkt t
auf die Ecke vC läuft, und sich von dort aus zwei Knotenstrahlen rechtwinkelig
zueinander auf den Segmenten e1C und e2C ausbreiten. Die graue Region zeigt
die Wellenfront der 2-Nadel, welche bei vC entstanden ist, zum Zeitpunkt t + 3.
Als Resultat der beiden schnellen Pionier-Knotenstrahlen auf den Segmenten
entsteht zwischen ihnen ein gezogener Knotenstrahl. Der Punkt v2 gibt an, wo
sich dieser mittlere Knotenstrahl zum Zeitpunkt t + 3 befindet. Die Segmente
e1C und e2C bieten wieder die Geschwindigkeiten g1 = 2 beziehungsweise g2 = 3.
Betrachtet man die Zeit, die die Wellenfront benötigt, um von vC nach v2 zu
gelangen sowohl über e1C als auch indirekt über e2C , so gilt hier für die Parameter h, b, und α2 und den Vektor ~v (v2 ) des Knotenstrahls in dieser Situation
Folgendes:
6.3 Parameter von Knotenstrahlen
53
e2C (g2 = 3)
eW
v2
h
vC
α2
b
e1C (g1 = 2)
Abbildung 6.9: Zwei Knoten der Wellenfront entstehen und divergieren rechtwinkelig.
b
h
+h=
+b
g1
g2
tan α2 =
1−
h
=
b
1−
⇒
1
g1
1
g2
=
1
1
=b 1−
h 1−
g2
g1
(6.6)
g2 (g1 − 1)
g1 (g2 − 1)
(6.7)
b
+h
g1
g1 (g2 − 1) g2 (g1 − 1)
b h
,
=
,
~v (v2 ) =
3 3
g1 g2 − 1 g1 g2 − 1
√
q
2
2
h +b
1
||~v (v2 )|| =
=
2g12 g22 − 2g12 g2 − 2g1 g22 + g22 + g12
3
g1 g2 − 1
3=
(6.8)
(6.9)
(6.10)
In Abbildung 6.10 ist analog zu den vorangegangenen Abbildungen dargestellt, welche Interferenz zwei orthogonal konvergierende Knoten der Wellenfront
erzeugen. Im Sinne der Übersichtlichkeit wurde auf die in vC entstandene Figur verzichtet. Die beiden Referenzknoten sind in dieser Abbildung nur eine
Zeiteinheit voneinander entfernt. Wieder gelangen wir nach kurzer Überlegungen zu den folgenden Parametern und zum Vektor ~v (v3 ) des neuen gezogenen
Knotenstrahls:
e2C (g2 = 2)
v3
α3
h
vC
b
e1C (g1 = 3)
Abbildung 6.10: Zwei Knoten der Wellenfront kollidieren rechtwinkelig.
54
Elemente der Wellenfront
b
h
h−
=b−
g1
g2
⇒
1+
h
tan α3 = =
b
1+
1
g1
1
g2
1
h 1+
g2
=
1
=b 1+
g1
g2 (g1 + 1)
g1 (g2 + 1)
(6.11)
(6.12)
b
+3=h
g1
b h
g1 (g2 + 1) g2 (g1 + 1)
~v (v3 ) =
,
=
,
3 3
g1 g2 − 1 g1 g2 − 1
p
√
(g2 (g1 + 1))2 + (g1 (g2 + 1))2
h2 + b 2
||~v (v3 )|| =
=
3
g1 g2 − 1
(6.13)
(6.14)
(6.15)
Abbildung 6.11 zeigt auf, welche Interferenz zwei parallel wandernde Knoten
der Wellenfront erzeugen, wenn sie sich in entgegengesetzte Richtungen bewegen.
Wir betrachten wieder die Zeitpunkte t und t + 3. In dieser Situation ergeben
sich die folgenden Werte:
e1C (g1 = 4)
b
α4
h
v4
e2C (g2 = 2)
Abbildung 6.11: Zwei Knoten der Wellenfront wandern parallel aneinander vorbei.
b
b
=
− h ⇒ 2h(g1 g2 ) = b(g1 − g2 )
g1
g2
h
g1 + g2
tan α4 = =
b
2g1 g2
b
h=
+1
g1
2g1 g2 g1 + g2
~v (v4 ) = (b, h) =
,
g1 − g2 g1 − g2
p
p
(2g1 g2 )2 + (g1 + g2 )2 )
||~v (v4 )|| = h2 + b2 =
g1 − g2
h−
(6.16)
(6.17)
(6.18)
(6.19)
(6.20)
6.3 Parameter von Knotenstrahlen
55
Schließlich ist in Abbildung 6.12 dargelegt, welche Interferenz zwei parallel
wandernde Knoten der Wellenfront erzeugen, wenn sie sich in derselben Richtungen bewegen:
e1C (g1 = 3)
α5
v5
h
b
e2C (g2 = 2)
Abbildung 6.12: Zwei Knoten der Wellenfront wandern parallel nebeneinander.
b
b
+h=
− h ⇒ h(g1 g2 ) = b(g1 + g2 )
g1
g2
h
g1 − g2
tan α5 = =
b
2g1 g2
b
h=3−
g
1
2g1 g2 g1 − g2
b h
,
=
~v (v5 ) =
,
3 3
g2 + g1 g2 + g1
p
(2g1 g2 )2 + (g1 − g2 )2
||~v (v5 )|| =
g2 + g1
(6.21)
(6.22)
(6.23)
(6.24)
(6.25)
Zwei Pionier-Knotenstrahlen verlaufen laut vergangenem Abschnitt isothetisch. Bis auf Drehungen und Spiegelungen können zwei isothetisch verlaufende
Knotenstrahlen nur eine der fünf dargelegten relativen Orientierungen besitzen.
Da jede Kante der Wellenfront aus einer Figur stammt, besitzt auch jede Kante
derartige Knotenstrahlen als Begrenzungen, auch wenn diese oftmals nicht zu
sehen sind, da sie gewissermassen virtueller Natur sind und Regionen der Ebene überstreichen, die von der Wellenfront schon besucht wurden. Somit kann
jede Interferenz zweier Kanten der Wellenfront durch eine der fünf dargelegten
Situationen erklärt werden, bei entsprechenden Geschwindigkeiten g1 und g2
auf e1C beziehungsweise e2C . Nun sind im Transportnetzwerk nur k verschiedene Geschwindigkeiten für g1 beziehungsweise g2 möglich. Somit können wir die
folgenden Beobachtungen machen:
Beobachtung 6.2 Die Anzahl der verschiedenen möglichen Geschwindigkeiten
von Knotenstrahlen ist konstant.
56
Elemente der Wellenfront
Beobachtung 6.3 Die Anzahl der verschiedenen Richtungen, in die sich ein
Knotenstrahlen bewegen kann, ist konstant.
Nach Argumenten des letzten
Abschnitts
sind 5 relative Oriene2C
tierungen interferierender PionierKnotenstrahlen möglich, sowie durch
v2
die L1 -Norm und das Netzwerk k +
1 verschiedene Geschwindigkeiten für
Pionier-Knotenstrahlen. Somit ist ofv5
fenbar, dass (abgesehen von Drev1
hungen und Spiegelungen) 5(k +
1)2 Paarungen verschiedener PionierKnotenstrahlen (und somit gezogene Knotenstrahlen) möglich sind, und
(k +1) Pionier-Knotenstrahlen. Es sei
e1C
noch einmal angemerkt, dass die Siv4
v3
tuationen wie in den Abbildungen 6.8
bis 6.12 dargestellt, in einem komplexen Netzwerk keineswegs stets so isoliert und offensichtlich sind. Man beAbbildung 6.13: Erst v2 wird durch v4 trachte als Beispiel Abbildung 6.13.
und v5 erzeugt.
Der Blick auf die Pionier-Knotenstrahlen v3 , v4 und v5 lässt zwei Interferenzen erkennen, welche jeweils der Situation wie aus Abbildung 6.8 entsprechen. Zunächst erzeugen v3 und v5 den gezogenen Knotenstrahl v1 , dessen
Lebenszeit bei dem Typ-C-Ereignis (grau) mit dem Knotenstrahl v6 endet. Ab
diesem Ereignis interferieren die beiden Knotenstrahlen v4 und v5 und erzeugen
den gezogenen Knotenstrahl v2 . Der Knotenstrahl v2 ist weder kollinear zu v1 ,
noch bewegt er sich mit derselben Geschwindigkeit.
Das wesentliche Ergebnis dieses Abschnitts ergibt sich direkt aus den Beobachtungen 6.2 und 6.3 wie folgt:
Lemma 6.1 Die Anzahl τ der verschiedenen Ähnlichkeitsklassen von Knotenstrahlen ist konstant.
6.4
Kanten und Streifen
Das zweite Objekt, aus dem sich die Wellenfront neben den Knoten zusammensetzt, sind die Kanten zwischen den Knoten. Nachdem wir in den vorangegangenen Abschnitten gezeigt haben, dass nur konstant viele Geschwindigkeiten und
Winkel bei Knotenstrahlen auftreten können, ist das Ergebnis dieses Abschnittes, dass nur eine konstante Anzahl von verschiedenen Typen von Regionen in
KV auftreten kann. Dies wird gezeigt mit Hilfe einer Untersuchung der Kanten
der Wellenfront und der Flächen, welche die Kanten während der Wellenfrontausdehnung auszeichnen, genannt Streifen.
6.4 Kanten und Streifen
6.4.1
57
Kanten
Wie schon in Abschnitt 6.2 erwähnt, ist eine Kante der Wellenfront begrenzt
von zwei Knoten der Wellenfront. Diese Kanten sind der Schlüssel zu den Regionen von VC (S), und verdienen daher eine genauere Betrachtung. Da eine Kante
der Wellenfront durch ihre beiden Endpunkte vollständig definiert ist, lässt sich
das Verhalten der Kanten durch das der Knotenstrahlen erklären. Der Begriff
der Lebenszeit einer Kante wird analog zur Lebenszeit eines Knotens in Abschnitt 6.2 definiert. Die Lebenszeit einer Kante beginnt somit zum Zeitpunkt
des erstmaligen Auftretens in der Wellenfront und endet sobald die Kante oder
einer der begrenzenden Knoten in ein Ereignis verwickelt ist.
Zunächst sei jedoch s eine beliebige Kante zum Zeitpunkt ihrer Entstehung.
Die Frage, welche Steigung und welche translationale Geschwindigkeit eine Kante in der Ebene hat, kann mit Hilfe der Figuren und der Pionier-Kanten beantwortet werden. Die konstante Anzahl an verschiedenen Geschwindigkeiten auf
dem Transportnetzwerk und die L1 -Norm in der Ebene lassen nach Beobachtung 6.1 nur konstant viele verschiedene Figuren zu, und somit auch nur konstant viele verschiedene Steigungen und translationale Geschwindigkeiten von
Kanten.
Beobachtung 6.4 Die Anzahl der verschiedenen Steigungen und translationalen Geschwindigkeiten von Kanten ist konstant.
Zerlegt man Figuren in die einzelnen 1-Nadeln aus denen sie bestegtrans
hen, wie in den Abbildungen in Abα
vW
schnitt 6.1 in gestrichelten Linien angedeutet, so lässt sich die Steigung eieC (g = 4)
ner Kante an der Geschwindigkeit des
involvierten
Pionier-Knotenstrahls
Abbildung 6.14: Steigung einer Kante festlegen. Als Beispiel sei vW ein mit
der Wellenfront.
Geschwindigkeit g auf dem Segment
eC in negativer x-Richtung wandernder Knotenstrahl. So ergibt sich wie in Abbildung 6.14 dargestellt für die
Steigung α der inzidenten Kante eW : α = arctan(1/g). Weiterhin gilt für die
translationale Geschwindigkeit gtrans von eW mit Hilfe einiger Trigonometrie
(siehe zum Beispiel Bronstein u. a. (2001)):
s
r
12 · g 2
1
gtrans =
=g
2
2
1 +g
1 + g2
eW
Um das dynamische Verhalten einer Kante während der Wellenfrontausdehnung zu untersuchen, ist es notwendig nicht nur die initialen Endpunkte
der Kante und deren Lage, sondern auch die Richtungen der Knotenstrahlen
beider Endpunkte zu betrachten. Aus Beobachtung 6.1 ergibt sich direkt die
folgende Beobachtung:
Beobachtung 6.5 Die Anzahl der verschiedenen Ausbreitungsrichtungen von
Kanten ist konstant.
58
Elemente der Wellenfront
Sowohl die Steigung, die translationale Geschwindigkeit als auch die Ausbreitungsrichtung von Kanten der Wellenfront werden durch die inzidenten Knotenstrahlen festgelegt. Für eine Kante der Wellenfront ergeben sich also die
folgenden Parameter:
• Die Koordinaten der Endknoten (die anfangs möglicherweise identisch
sind)
• Die Klasse der Knotenstrahlen, die zu den Endknoten gehören
Die Klassifizierung der Flächen, welche von den Kanten der Wellenfront überstrichen und beschrieben werden, ist der Schlüssel zur effektiven Vorhersage
von Ereignissen in den Datenstrukturen der sublokalen Prognosen, und wird im
folgenden Abschnitt vorgenommen.
6.4.2
Streifen
Durch die Bewegungen der Kanten im Rahmen der Wellenfrontausdehnung
zeichnet eine Kante während ihrer Lebenszeit eine Fläche aus.
Definition 6.6 Der Streifen einer Kante ist die Fläche, welche die Kante im
Zuge der Wellenfrontausdehnung während ihrer Lebenszeit auszeichnet.
Der Begriff der Lebenszeit eines Streifens wird analog zu der auszeichnenden
Kante definiert. Man beachte, dass während der Lebenszeit eines Streifens
nicht notwendigerweise bekannt ist, wann, wie und ob dieser Streifen jemals
beschränkt wird. Erst bei einem für diesen Streifen global vorhergesagten Ereignis ist bekannt, wie dieser Streifen abgeschlossen wird. Solange ein Streifen
nicht in ein zukünftiges Ereignis involviert ist, wird somit angenommen, dass er
sich weiter ausbreitet.
Für die Vorhersage von Ereignissen werden somit potentiell wesentlich größere Streifen verwendet, als zu späteren Zeitpunkten überhaupt vorhanden. Dieser
Sachverhalt führt uns erneut zum Konzept der virtuellen Ereignisse (siehe Abschnitt 3.3.4), welches in Abschnitt 6.5.1 untersucht wird.
Abbildung 6.15 zeigt eine Wellenfrontausdehnung, in der bereits 14 Streifen
auftreten, deren Lebenszeit zum Teil schon beendet sind. Da sich die inzidenten
Knoten einer Kante während der Wellenfrontausdehnung auf Strahlen bewegen,
und die Lebenszeit einer Kante mit einem Ereignis endet, welches die Kante
selbst oder ihre Endknoten betrifft, kann ein Streifen höchstens 4 Seiten haben.
Ab Ende seiner Lebenszeit nimmt ein Streifen nicht mehr an der Wellenfrontausdehnung teil und verändert sich somit nicht mehr weiter. Dies bedeutet, dass
jeder Streifen am Ende seiner Lebenszeit zu einer Region der Quickest-PathMap beiträgt. Zum Zeitpunkt der Entstehung einer Kante wird festgestellt, wo
sie entstanden ist. Dies ist zunächst entweder ein Punkt oder eine Kante von
KV . Im Falle eines Punkts wird er als Ort der Entstehung dieser Kante abgespeichert und bei Ablauf der Lebenszeit der Kante dem ausgezeichneten Streifen
als definierendes Objekt (siehe Abschnitt 3.5) zugewiesen und gespeichert. In
Abbildung 6.15 entstehen die Streifen 5, 8, 9, 12, 13, 14 an einer Kante. Dies bedeutet, dass der entstehende Streifen die zu dieser Kante inzidente Region von
6.4 Kanten und Streifen
59
12 8
11
eC7
14 10 9 6
1 2
13 5
ω 3
4
Abbildung 6.15: Streifen von KV .
VC (S) erweitert. Bei Ablauf der Lebenszeit dieses Streifens wird er somit der
adjazenten Region hinzugefügt, und erhält dadurch implizit dasselbe definierende Objekt. Abbildung 6.15 zeigt, wie die Streifen 1, 5, 8 und 13 gemeinsam eine
Region (weiß begrenzt) bilden, welche durch den Streifen 1 erzeugt wurde und
durch die restlichen drei erweitert wurde.
Analog zum definierenden Objekt einer Region r wird der Winkel ϕ, den die
Kante, welche r auszeichnet, mit der x-Achse einschließt, für die Region r gespeichert. In Kapitel 9 werden wir darlegen, wie wir Anfragen an die Quickest-PathMap beantworten, indem wir mit Hilfe der definierenden Objekte und der gespeicherten Winkel die Ausdehnung der Wellenfront zurückverfolgen, um einen
schnellsten Pfad nach S zu finden.
Mit dem Ziel durch speziell abgestimmte Datenstrukturen die Laufzeit der
Konstruktion der Quickest-Path-Map zu optimieren, gilt es nun zu untersuchen,
wie ein Streifen aussehen kann. Die vorangegangenen Kapitel lassen schon erwarten, dass auch für Streifen eine Klassifizierung möglich ist. Ebenso wie bei
der Definition ähnlicher Knotenstrahlen aus Abschnitt 6.2 wird zu diesem Zweck
definiert, wann sich Streifen ähnlich sind.
Definition 6.7 Zwei Streifen s1 und s2 werden als ähnlich bezeichnet wenn
Folgendes gilt:
• Es existiert eine paarweise Zuordnung zwischen den Seiten von s1 und
s2 , so dass die Seiten eines Paares dieselbe Richtung haben und entweder
beide beschränkt, einseitig unbeschränkt oder unbeschränkt sind.
• Die Streifen s1 und s2 entstehen entweder beide an einem Punkt, oder
jeweils an einer Kante der Wellenfront, mit gleicher Neigung.
Zwei Streifen sind demnach ähnlich, wenn ihre Ecken die gleichen Winkel einschließen, und eine vergleichbare Form haben, während die Längen der Seiten
völlig verschieden sein können. Abbildung 6.16 zeigt zwei Streifen derselben
60
Elemente der Wellenfront
Klasse (s1 und s2 ) und zwei anderer Klassen (s3 und s4 ). Mit Hilfe der Definition ähnlicher Streifen folgt aus den Beobachtungen 6.4 und 6.5 direkt das
folgende Lemma:
Lemma 6.2 Die Anzahl σ der verschiedenen möglichen Ähnlichkeitsklassen
von Streifen ist konstant.
z
s1
s4
s3
s2
y
x
Abbildung 6.16: Die Streifen s1 und s2
gehören derselben Klasse an, s3 und s4
hingegen anderen.
Das Ziel ist es nun, für jede Ähnlichkeitsklasse von Streifen eine spezielle, effektive Datenstruktur für Minimierungsanfragen bereitzustellen. In
jeder einzelnen dieser Datenstrukturen müssen dann entweder RayShooting-Anfragen oder Lowest-Intersection-Anfragen beantwortet werden. Da nun innerhalb jeder Datenstruktur alle Streifen ähnlich sind, ist
es möglich eine Minimierungsanfrage
mit Hilfe einer geometrischen Transformation, welche den Ähnlichkeitsklassen der Knotenstrahlen und Streifen angepasst ist, durch eine orthogonale Bereichsanfrage zu ersetzen. Eine solche Anfrage kann dann in polylogarithmischer Laufzeit beantwortet
werden.
Die oben angesprochene Transformation wird in Kapitel 7 beschrieben. In Kapitel 8 werden die orthogonalen
Bereichsanfragen beschrieben, welche als Ergebnis der Klassifizierung der Streifen und der Transformation die Minimierungsanfragen ersetzen. Da die Formen
der verschiedenen auftretenden Streifen jedoch vielfältig sind, zeigt der folgende Abschnitt zunächst auf, welche generellen Typen von Streifen auftreten, da
diese Typen sowohl durch die Transformation als auch durch die Anfragen unterschiedlich gehandhabt werden müssen. Im Rest dieses Kapitels wird anschließend gezeigt, dass mit Hilfe der Streifen alle auftretenden Ereignisse vorhergesagt werden, und dass darüber hinaus ein impliziter Mechanismus verhindert,
dass es durch die Streifen zu verfrühten oder falschen Ereignisprognosen kommt.
6.4.3
Streifentypen
Für die algorithmische Handhabung werden vier Typen von Streifen unterschieden. Sie unterscheiden sich in ihrer Form und ihrer Entstehungsgeschichte während der Wellenfrontausdehnung. Da Streifen Teile von Regionen erzeugen, wird
im Folgenden der Begriff eines definierenden Objekts auch im Zusammenhang
mit Streifen verwendet. Das definierende Objekt Def(s) eines Streifens s ist somit die Menge Def(s) = {p ∈ s | dC (S, p) ≤ dC (S, p0 ) für alle p0 ∈ s}. Das
definierende Objekt einer Region von VC (S) stimmt in der Regel mit dem definierenden Objekt eines ihrer Streifen überein. Dies ist zum Beispiel in Abbildung 6.15 für Streifen 1 und die weiß gestrichelte Region der Fall. Zum Zeitpunkt
6.4 Kanten und Streifen
61
e1C
Typ 1
Typ 2
Typ 3
Typ 4
e2C
ω
s3
s2
s1
Abbildung 6.17: Die vier verschiedenen Streifentypen, jeweils in anderen Grautönen. Typ 3 wird ersetzt durch Typ 1 und 2.
seiner Entstehung ist ein Streifen nicht größer als sein definierendes Objekt. Die
Streifen lassen sich mit Hilfe von zwei Merkmalen klassifizieren: zum einen ist
dies ihr definierendes Objekt, und zum anderen ist es die relative Lage der begrenzenden Knotenstrahlen. Wie in Abschnitt 3.5 bereits beschrieben, besitzt
jede Region von VC (S) ein definierendes Objekt.
Da ein Streifen das Produkt einer im Zuge der Wellenfrontausdehnung wandernden Kante ist, besitzt jeder Streifen während seiner Lebenszeit stets zwei
Knotenstrahlen als Seiten. In Tabelle 6.1 werden die vier verschiedenen Streifentypen und ihre Merkmale aufgelistet. Eine wesentliche Rolle spielen dabei die
beiden Knotenstrahlen eines Streifens. Diese Unterscheidung ist in erster Linie
für die Weiterverarbeitung der Streifen relevant, welche in Kapitel 7 vorgestellt
wird. Abbildung 6.17 zeigt die vier verschiedenen Typen von Streifen auf, wobei
Streifentyp
1
2
3
4
Definierendes Objekt
Knoten
Kante
Kante
Kante
Richtung der Strahlen
divergent
parallel
divergent
konvergent
Tabelle 6.1: Die verschiedenen Streifentypen.
jeder Streifentyp mit einem anderen Grauton unterlegt ist. Streifen vom Typ 3
werden sofort bei der Entstehung durch einen Typ-1-Streifen und einen Typ2-Streifen ersetzt und werden bei der Simulation der Wellenfrontausdehnung
nicht weiter behandelt, da sie eine größere Komplexität besitzen als die restlichen Streifen. Jedoch rechtfertigt die besondere Entstehungsgeschichte eines
solchen Streifens seine gesonderte Auflistung an dieser Stelle. In Abbildung 6.17
wird Streifen s3 durch die beiden Streifen s1 und s2 ersetzt. Bei der Speicherung
abgehandelter Streifen in der Quickest-Path-Map werden substituierte Typ-3Streifen wieder zusammengefügt und als solche der Region angefügt, welche
inzident ist zu der Kante, an der der Typ-3-Streifen entstanden ist. Ebenso werden alle Streifen der Typen 2 und 4 des Konstruktionsdiagramms der Region
von VC (S) hinzugefügt, welche sie erweitern. Auch in Abbildung 6.17 sind also
Regionen von VC (S) durch Knotenstrahlen begrenzt, nicht etwa durch Konstruktionskanten. Ein Streifen vom Typ 4 unterscheidet sich insofern von den
62
Elemente der Wellenfront
anderen Typen, als dass er bereits bei der Entstehung beschränkt ist und drei
nicht parallele Kanten besitzt, während die restlichen Streifentypen zunächst
eine unbeschränkte Fläche abdecken und lediglich zwei nicht parallele Kanten
besitzen. Diese Tatsache erfordert in den Kapiteln 7 und 8 eine besondere Behandlung von Typ-4-Streifen.
6.5
Die Interaktionen der Streifen
In den vorangegangenen Abschnitten haben wir untersucht, welche Formen
Streifen annehmen können. Die Einordnung der Streifen in Ähnlichkeitsklassen erlaubt weiterhin eine effektive, lokale Vorhersage von Ereignissen. Bevor
ein Ereignis durch die globale Prognose zeitlich korrekt in den Prozess der Konstruktion von VC (S) eingefügt werden kann, stellt sich jedoch die Frage, ob ein
Ereignis, welches anhand eines Streifens vorausgesagt wird, möglicherweise von
virtueller Natur ist. Wie in Abschnitt 3.3.4 argumentiert, hätte eine explizite
Behandlung solcher Ereignisse eine mindestens quadratische Laufzeit zur Folge.
Wie das Problem der virtuellen Ereignisse implizit gelöst wird, wird im folgenden Abschnitt geschildert. Andererseits zeigen wir in Abschnitt 6.5.2, dass
während der Wellenfrontexpansion kein Ereignis stattfinden kann, welches nicht
von mindestens einer Minimierungsanfrage vorhergesagt wird. Den Abschluss
dieses Kapitels bildet dann Abschnitt 6.6, wo zusammenfassend dargelegt wird,
wie der Konstruktionsalgorithmus für VC (S) die in diesem Kapitel entwickelten
Ergebnisse nutzt, um eine subquadratische Laufzeit zu erzielen.
6.5.1
Bescheidene Streifen
Die in Abschnitt 6.4.3 beschriebenen, vorausberechneten Streifen decken bei der
Vorhersage von Ereignissen in den meisten Fällen eine Fläche ab, welche größer als die endgültige Fläche ihrer Region sein wird. In diesem Abschnitt wird
die Frage geklärt, ob die Menge virtueller Ereignisse, welche die zunächst unbeschränkten oder abgeschätzten (bei Typ 4) Streifen bei den lokalen Prognosen
hervorrufen, die Laufzeit des Konstruktionsalgorithmus durch globale Vorhersagen negativ beeinflussen. Die Antwort sei schon einmal vorweggenommen, sie
lautet nein. Im folgenden Beweis wird klar, dass dies an der sorgfältigen Konstruktion der Streifen liegt, welche lediglich einen Bereich abdecken, den sie bei
ungehinderter Ausbreitung tatsächlich erreichen würden. In folgendem Lemma
sei diese Beobachtung festgehalten.
Lemma 6.3 Die Menge der globalen Ereignisprognosen ist linear in der Komplexität von VC (S).
Zunächst sei jedoch noch einmal dargelegt, was genau zu beweisen ist. Dazu führen wir einen neuen Begriff ein. In jedem Fall, da ein Streifen an einem Ereignis
teilnimmt, wird er abgeschlossen und wird dann entweder einer bestehenden
Region von VC (S) hinzugefügt oder erzeugt eine neue. Er ist somit beschränkt
und nimmt an der weiteren Wellenfrontausdehnung nicht mehr teil. Einen solchen Streifen nennen wir im Folgenden abgehandelt. Dies bedeutet, dass nur ein
Streifen, während er noch nicht abgehandelt ist, potentiell zur Prognose von
6.5 Die Interaktionen der Streifen
63
virtuellen Ereignissen führt. Nach Abschnitt 5.3 haben virtuelle Ereignisse keinen negativen Einfluss auf die Laufzeit, solange sie nicht global vorhergesagt
werden, sondern nur von lokalen oder sublokalen Minimierungsanfragen an die
globale Vorhersage weitergegeben werden. Es bleibt also zu zeigen, dass ein jedes
virtuelles Ereignis, das einen noch nicht abgehandelten Streifen als Teilnehmer
hat, niemals global vorhergesagt werden darf.
Beweis. Da Streifen vom Typ 3 durch Paare von Streifen von Typ 1 und 2
ersetzt werden, wird Typ 3 im Einzelnen nicht weiter untersucht. Sei nun s
ein noch nicht abgehandelter Streifen, und e ein Ereignis welches s involviert.
Ist e nicht virtuell, so ist nichts zu beweisen. Sei e also ein virtuelles Ereignis.
Angenommen dieses Ereignis wird nun von der globalen Vorhersage als das
nächste Ereignis berechnet. Dies bedeutet, dass kein anderes Ereignis mehr
zuvor eintritt, insbesondere keines, welches s involviert. Da ein Streifen aber
nach Konstruktion lediglich den Bereich abdeckt, welchen er bei Ausbleiben von
Ereignissen tatsächlich ausfüllen wird, bedeutet das Ausbleiben von Ereignissen
vor dem Eintreten von e, dass der Streifen s das Ereignis e sowohl zeitlich als
auch räumlich tatsächlich erreicht. Folglich ist e kein virtuelles Ereignis, was ein
Widerspruch zur Annahme ist. Somit gilt, dass die während des Prozesses der
Wellenfrontausdehnung genutzten Streifen keine virtuellen Ereignisse erzeugen,
welche global vorhergesagt werden. Nach Abschnitt 5.3 ergibt sich also durch
virtuelle Ereignisse keine asymptotische Vergrößerung der Menge von global
prognostizierten Ereignissen.
Nun ist gezeigt, dass die Auswahl der global prognostizierten Ereignisse die
Komplexität von VC (S) nicht überschreitet, also keine zusätzliche Laufzeit benötigt wird, um virtuelle Ereignisse noch nach der globalen Prognose als virtuell
zu erkennen. Mit anderen Worten ist gezeigt, dass durch die globale Vorhersage
nicht zuviel vorhergesagt wird; zu zeigen bleibt nun im Gegenzug, dass auch
nicht zu wenige Ereignisse vorhergesagt werden. Diese Frage wird im nächsten
Abschnitt behandelt.
6.5.2
Für jedes Ereignis ein Streifen
Bisher haben wir dargelegt, welche Rolle die Streifen bei der Wellenfrontausdehnung spielen, und gezeigt, dass die Menge der Ereignisse, in welche Streifen
involviert sind, höchstens linear in der Komplexität von VC (S) ist. In diesem
Abschnitt werden wir zeigen, dass tatsächlich mindestens all diejenigen Ereignisse, welche bei der Wellenfrontausdehnung auftreten (und somit zur Komplexität von VC (S) beitragen), durch eine globale Prognose für ein Ereignis mit
einem Streifen vorhergesagt werden. Als Resultat ergibt sich dann aus diesem
Abschnitt und aus Abschnitt 6.5.1, dass durch die diskretisierte Prognose von
Ereignissen mit Hilfe der Streifen einerseits alle bei der Wellenfrontausdehnung
auftretenden Ereignisse behandelt werden, andererseits aber auch nicht mehr
Ereignisse als notwendig.
Lemma 6.4 Für jedes Ereignis, welches während der Wellenfrontausdehnung
eintritt, wird ein Ereignis mit einem Streifen global vorhergesagt.
64
Elemente der Wellenfront
Beweis. Angenommen e sei ein Ereignis, welches bei der Wellenfrontausdehnung auftritt. Da jeder Punkt der Wellenfront Element mindestens eines
Streifens ist, involviert jedes Ereignis der Wellenfrontausdehnung mindestens
einen Streifen. Im Konstruktionsalgorithmus deckt aber ein jeder Streifen ab
dem Zeitpunkt seiner Entstehung den maximalen Bereich ab, den er potentiell
(beim Ausbleiben weiterer Ereignisse) erreichen kann. Somit wird jedes Ereignis von mindestens einer Minimierungsanfrage erkannt. Nach Satz 5.1 wird ein
Ereignis, welches nicht virtuell ist, von der globalen Prognose zum korrekten
Zeitpunkt schließlich vorhergesagt.
6.6
Anzahl der Datenstrukturen
In Lemma 6.4 wurde gezeigt, dass ein jedes Ereignis der Wellenfrontausdehnung
als ein Ereignis mit einem Streifen entdeckt wird. Wir haben in Abschnitt 5.3
dargelegt, welche Minimierungsanfragen notwendig sind, um ein Ereignis zu
entdecken. Wenden wir nun die Ergebnisse aus Kapitel 4 an, in dem wir die
Wellenfront und das Netzwerk um eine dritte Dimension erweitert haben, so
reduziert sich die globale Prognose darauf, geeignete Datenstrukturen für RayShooting-Anfragen und Lowest-Intersection-Anfragen jeweils zwischen Streifen
und Knotenstrahlen im Raum bereitzustellen, und diese Anfragen durchzuführen. Die Technik von Eppstein und Erickson (1999), welche wir in Kapitel 5
besprochen haben, liefert dann jederzeit das nächste eintretende Ereignis. Betroffene Minimierungs-Datenstrukturen werden anschließend aktualisiert, und
an der Wellenfront die dem Ereignis entsprechenden Änderungen vorgenommen.
In den vergangenen Abschnitten haben wir folgendes gezeigt:
1. Die Anzahl der Ähnlichkeitsklassen von Strahlen ist konstant; siehe Lemma 6.1 in Abschnitt 6.3.
2. Die Anzahl der Ähnlichkeitsklassen von Streifen ist konstant; siehe Lemma 6.2 in Abschnitt 6.4.2.
Dies bedeutet, dass es möglich ist, mit einer konstanten Anzahl von Datenstrukturen für jede Kombination aus einer Klasse von Streifen und einer Klasse von
Knotenstrahlen eine spezielle Datenstruktur zur Verfügung zu stellen. Im Folgenden sagen wir, dass eine solche Datenstruktur die entsprechenden Klassen
von Streifen und Knotenstrahlen bedient; diese müsste dann, nach Argumenten
der beiden oben zitierten Lemmata, lediglich mit einer Richtung und einer Geschwindigkeit von Knotenstrahlen arbeiten, sowie mit nur einer Lage und Form
von Streifen im Raum. Das folgende Lemma fasst dies als ein wichtiges Ergebnis
dieses Kapitels zusammen:
Lemma 6.5 Jedes Ereignis lässt sich, als Kollision eines Streifens mit einem
Strahl, einer von konstant vielen angepassten Datenstrukturen zuordnen.
Eppstein und Erickson (1999) nutzen in ihrem Ansatz zur Konstruktion eines Straight-Skeletons eine Technik von Agarwal und Matoušek (1994) für
6.6 Anzahl der Datenstrukturen
65
Ray-Shooting-Datenstrukturen und stellen eine eigene Technik für Lowest-Intersection-Datenstrukturen vor. Beide Datenstrukturen unterstützen Einfüge-,
Lösch- und Anfrageoperationen in einer asymptotischen Laufzeit von O(n3/5 )
bei einem Speicherbedarf von O(n8/5 ). Das folgende Kapitel beschäftigt sich
damit, wie das Datenmaterial der Wellenfront, bestehend aus Knotenstrahlen
und Streifen, mit Hilfe angepasster Datenstrukturen auf eine Art und Weise zur Ereignisprognose genutzt werden kann, welche eine Laufzeit von nur
O(polylog(c + n)) pro Minimierungsanfrage benötigt, und einen Speicherbedarf
von O((c+n)polylog(c+n)). Durch die sorgfältige Vorbereitung der Streifen und
die Einteilung der Streifen und Knotenstrahlen in Ähnlichkeitsklassen ist es uns
möglich, Minimierungsanfragen auf orthogonale Bereichsanfragen zu vereinfachen. Dadurch erreichen wir eine nur polylogarithmische Laufzeit pro Anfrage.
Im folgenden Kapitel beschreiben wir diese Vereinfachung des Datenmaterials.
Kapitel 7
Eine Vereinfachung der
Daten
Mit dem Ziel die asymptotische Laufzeit des Konstruktionsalgorithmus für
VC (S) zu verbessern, untersuchen wir in diesem Kapitel eine Technik zur Beschleunigung der lokalen Minimierungsanfragen. Auf die Strahlen und die Streifen der Wellenfront wird eine geometrische Transformation f angewendet, welche es erlaubt, innerhalb einer Minimierungsanfrage lediglich orthogonale Strukturen zu untersuchen. Diese Transformation f besteht aus einer Verkettung von
mehreren Scherungen im Raum. Da f für jedes Objekt in konstanter Zeit durchgeführt werden kann, entsteht keine Erhöhung der asymptotischen Laufzeit. Die
verketteten Scherungen bringen die Objekte einer Datenstruktur in eine relative
Lage im Raum, welche es möglich macht Minimierungsanfragen durch schnelle
orthogonale Bereichsanfragen zu beantworten. Die Transformation f kann auch
als eine weitere Koordinatentransformation angesehen werden.
Die Transformation f gestaltet sich für beide Arten von Minimierungsanfragen gleich, daher wird erst im folgenden Kapitel auf den Ablauf dieser lokalen
Anfragen eingegangen. In Lemma 6.5 haben wir gezeigt, dass es möglich ist jede
Kombination aus einem Knotenstrahl und einem Streifen einer von konstant
vielen Datenstrukturen zuzuordnen. Dabei ist jeweils die Ähnlichkeitsklasse der
beiden Objekte für die Wahl der Datenstruktur ausschlaggebend. Für jede solche Kombination werden für die Minimierungsanfragen zwei Datenstrukturen
bereitgestellt, eine für Ray-Shooting-Anfragen und eine für Lowest-IntersectionAnfragen. Ist eine Datenstruktur D für die Kombination der Streifenklasse KS
und der Klasse KW von Knotenstrahlen vorgesehen, so sagen wir D bedient KS
und KW . Ein jedes Objekt, welches nun im Zuge der Wellenfront entsteht, wird
entsprechend seiner Ähnlichkeitsklasse in alle Datenstrukturen eingefügt, welche
diese Klasse bedienen. Für jede dieser Datenstrukturen ist die Transformation
f speziell angepasst, so dass jedes Objekt, bevor es eingefügt wird, durch f
verändert wird.
Der folgende Abschnitt beschreibt die Transformation f . In Abschnitt 7.1.6
betrachten und lösen wir ein Problem, das durch die Dynamik der in statischen
Datenstrukturen gespeicherten Knotenstrahlen entsteht. In den letzten beiden
68
Eine Vereinfachung der Daten
Abschnitten dieses Kapitels beweisen wir, dass unsere dargelegte Vereinfachung
der Wellenfrontobjekte korrekt ist, das heißt dass für einen Knotenstrahl w und
einen Streifen s folgende Invariante gilt: w trifft s während der Wellenfrontausdehnung zum Zeitpunkt t genau dann, wenn f (w) f (s) zum Zeitpunkt t trifft.
7.1
Orthogonalisierende Scherungen
In diesem Abschnitt führen wir die Transformation f an einem Streifen vom
Typ 2 durch. Wie in Abschnitt 6.4.3 dargelegt, besitzen die verschiedenen Streifentypen unterschiedliche Geometrien, so dass die Scherung für jeden der drei
relevanten Typen angepasst werden muss. In Abschnitt 7.3 wird kurz dargelegt,
welche Anpassungen dabei notwendig sind, da das generelle Verfahren jedoch
nach der folgenden beispielhaften Durchführung offensichtlich wird, verzichten
wir auf eine detaillierte Behandlung der Transformationen für die restlichen
Streifentypen. Die resultierenden orthogonalen Anfragen werden anschließend
in Kapitel 8 im Detail beschrieben.
Die Transformation f verändert das Datenmaterial, bestehend aus den Streifen und Strahlen, wie in Kapitel 6 vorgestellt, mit dem Ziel, Interaktionen einfacher vorhersagen und zeitlich vergleichen zu können. Dabei ist es notwendig, dass
die Transformation bezüglich der Ergebnisse und der Zeitpunkte der Kollisionen
invariant ist, so dass VC (S) nicht verfälscht wird. Die Invarianz bezüglich der
Ergebnisse und deren Zeitpunkte ist, wie in Abschnitt 7.2 gezeigt wird, gegeben.
Sei nun s ein Streifen der Ähnlichkeitsklasse KS und von Typ 2.
Weiterhin sei w ein Knotenstrahl
der Ähnlichkeitsklasse KW . Der
Knotenstrahl w besteht aus dem
Fußpunkt ẇ und dem Vektor w.
~
Abbildung 7.1 stellt dar, wie der
~
w w
Streifen s (Typ 2) und der Knos
tenstrahl w im Raum liegen. Die
ẇ
beiden Datenstrukturen, in welche diese beiden Objekte eingey
fügt werden, zeichnen sich durch
~eSeite
die Merkmale der beiden Ähnlichl
keitsklassen aus, welche sie be~eBoden
r
x
dienen. Nach Definition 6.5 zeichnet eine Klasse von KnotenstrahAbbildung 7.1: Ein Streifen und ein Strahl len die Richtung und Geschwinim Raum.
digkeit der Knotenstrahlen aus.
Nach Definition 6.7 und mit Hilfe
von Tabelle 6.1 wird eine Klasse von Streifen durch den Typ, den Vektor der
Seiten und den Vektor des Bodens der Streifen definiert (bei Streifen vom Typ
1 sind Boden und Seite austauschbar). Betrachtet man Streifen vom Typ 2, so
ist also eine gegebene Datenstruktur D für die Klassen KW und KS durch die
folgenden Daten spezifiziert:
z
• Der normierte Vektor ~eBoden /||~eBoden || zwischen den beiden Bodenpunkten
7.1 Orthogonalisierende Scherungen
69
l und r der Streifen, mit (xl < xr )∨((xl = xr )∧(yl < yr )), und l+~eBoden =
r.
• Der normierte Vektor ~eSeite /||~eSeite || der Seiten der Streifen, ausgehend
von l beziehungsweise r.
• Der (nicht normierte) Vektor w
~ der Anfragestrahlen.
Ein Streifen s dieser Ähnlichkeitsklasse wird definiert durch die x-, y- und zKoordinaten der beiden Eckpunkte l und r. Dabei sei angemerkt, dass weniger Daten ausreichen um s eindeutig zu beschreiben, da die Vektoren ~eBoden
und ~eSeite bereits implizit durch die Ähnlichkeitsklasse gegeben sind. Für einen
Knotenstrahl w genügt es, seinen Entstehungszeitpunkt und die x-, y- und zKoordinaten xẇ , yẇ , zẇ des Fußpunktes ẇ zu speichern.
Ziel der Transformation f ist es, diese speziellen Datenstrukturen durch lineare Transformationen zu orthogonalisieren, damit Bereichsanfragen die gewöhnlichen Ray-Shooting-Anfragen und die Lowest-Intersection-Anfragen ersetzen können. Zu diesem Zweck werden Streifen derart transformiert, dass
sie parallel zur x-y-Ebene liegen, und ihre Seiten parallel zur x- beziehungsweise zur y-Achse sind, während Strahlen in Richtung der positiven z-Achse
zeigen. In Worten soll f dabei stets folgende Invariante garantieren: Strahl w
trifft den Streifen s zur Zeit t0 ⇔ der Strahl f (w) trifft den Streifen f (s) zur
Zeit t0 . Die Funktion f besteht aus vier Teilen f 1 , f 2 , f 3 und f 4 , so dass gilt:
f = f 4 ◦ f 3 ◦ f 2 ◦ f 1 . Die folgenden Abschnitte beschreiben die einzelnen Stufen
von f . Dabei wird der Punkt q = (xq , yq , zq ) ∈ R3 als Beispiel bis zum Ende
durchgeschleift. Relevante Punkte wie l, r, ẇ und so weiter werden somit durch
q vertreten. Es gelten die Bezeichnungen ~eBoden = (xBoden , yBoden , zBoden ) und
~eSeite = (xSeite , ySeite , zSeite ).
7.1.1
Ausrichtung des Koordinatensystems
Vor der Anwendung von f wird
das Koordinatensystem derart gedreht, dass der Vektor w
~ der
Knotenstrahlen in Richtung der
γ3 z
positiven z-Achse liegt. Eine
α3
x
Drehung des Koordinatensystems
β3
kann durch Anwendung einer
γ1
Drehungsmatrix M auf jedes Obβ1
jekt, das in die Datenstruktur
γ2 α1
D aufgenommen werden soll, ery
reicht werden. Sind x, y, z die neuα2
en Koordinatenachsen, so werden
β2
für die Drehung die Richtungskox
sinusse dieser Vektoren benötigt,
das
heißt die Kosinusse der Winy
kel zwischen den neuen und den
alten, jeweils positiv orientierten
Abbildung 7.2: Winkeldefinition bei DreKoordinatenachsen. Dazu werden
hung des Koordinatensystems.
die Winkel zwischen den Achsen
z
70
Eine Vereinfachung der Daten
wie in Abbildung 7.2 definiert. Es gelten für die Richtungskosinusse die folgenden Bezeichnungen, welche in Tabelle 7.1 zur Verdeutlichung zusammengefasst
sind.
ζ1 = cos α1
η1 = cos β1
ϑ1 = cos γ1
ζ2 = cos α2
η2 = cos β2
ϑ2 = cos γ2
ζ3 = cos α3
η3 = cos β3
ϑ3 = cos γ3
Die Drehungsmatrix M , welche die Koordinaten aller Objekte derart transforIm Bezug auf die alten Achsen
x
y
z
Richtungskosinus der neuen Achsen
x
y
z
ζ1
ζ2
ζ3
η1
η2
η3
ϑ1
ϑ2
ϑ3
Tabelle 7.1: Bezeichnungen der Richtungskosinusse bei Koordinatentransformation durch Drehung.
miert, dass sie dem neuen Koordinatensystem angepasst sind, hat im Allgemeinen folgende Gestalt:


ζ1 ζ2 ζ3
M =  η1 η2 η3 
ϑ1 ϑ2 ϑ3
In unserem Fall ist es wie oben angesprochen ausreichend, die Drehungsmatrix
M derart zu gestalten, dass Knotenstrahlen in Richtung der positiven z-Achse
zeigen. Sei der Vektor w
~ der Knotenstrahlen, welche die Datenstruktur D bedient, wie folgt gegeben: w
~ = (xw~ , yw~ , zw~ ). Der Winkel ϕ zwischen zwei Vektoren
~a und ~b im Raum ist gegeben durch
cos ϕ =
~a~b
|~a||~b|
Somit berechnen sich die Winkel α3 , β3 und γ3 der neuen z-Achse z mit den
alten Koordinatenachsen wie folgt:
 
xw~
1 0 0  yw~ 
zw~
xw~
cos α3 =
=
= ζ3
|w|
~
|w|
~
 
xw~
0 1 0  yw~ 
zw~
yw~
cos β3 =
=
= η3
|w|
~
|w|
~
 
xw~
0 0 1  yw~ 
zw~
zw~
cos γ3 =
=
= ϑ3
|w|
~
|w|
~
7.1 Orthogonalisierende Scherungen
71
Mit Hilfe der neuen z-Achse z in Richtung w
~ ist es weiterhin möglich die Ebene
Ex,y zu definieren, in der die beiden neuen Koordinatenachsen x und y liegen,
da dies die Ebene ist, welche orthogonal zu w
~ liegt und den Ursprung enthält:
Ex,y = {~
p | w~
~ p = 0}
Alle Vektoren in dieser x-y-Ebene liegen orthogonal zu z, zudem wird gefordert, dass weder ~eSeite noch ~eBoden parallel zur x- oder y-Achse liegen. Dies ist
aus technischen Gründen notwendig, um degenerierte Situationen während der
Durchführung der Transformation f zu vermeiden. Wir wählen also die Richtung x beliebig aber mit den Bedingungen x ⊥ w,
~ x ∦ ~eSeite und x ∦ ~eBoden . Die
Richtung der neuen y-Achse y wird anschließend durch die Orthogonalitätsbedingungen x ⊥ y und z ⊥ y, und durch das rechts- beziehungsweise linkshändige
Koordinatensystems eindeutig festgelegt. Rechtshändige beziehungsweise linkshändige Koordinatensysteme werden durch die gegenseitige Aufeinanderfolge
der positiven Koordinatenachsen bei der Drehung um den Ursprung im Gegenuhrzeigersinn beziehungsweise im Uhrzeigersinn definiert (siehe zum Beispiel
Bronstein u. a. (2001)). Mit Hilfe der neuen Koordinatenrichtungen lassen sich
die übrigen Richtungskosinusse in der Drehungsmatrix M bestimmen.
Eine detaillierte Beschreibung einer Drehung des Koordinatensystems im Raum
bieten zum Beispiel Bronstein
s
u. a. (2001) oder Wille (1997).
Es sei angemerkt, dass der
Streifen s nicht parallel zur
r
neuen
z-Achse und somit zu
~eBoden
~eSeite
w
~ sein kann, denn dann wäl
w
~
re w
~ linear abhängig von den
w
beiden Vektoren ~eBoden und
y
~eSeite . Ist dies aber der Fall,
ẇ
so kann niemals eine Kollision
zwischen dem Knotenstrahl w
x
und dem Streifen s auftreten.
Eine Datenstruktur für eine
Abbildung 7.3: Ein Streifen und ein Strahl solche Kombination aus Ähnnach der Ausrichtung des Strahls in positiver lichkeitsklassen ist also sinnz-Richtung.
los und wird nicht erstellt.
Abbildung 7.3 zeigt die Situation des Streifens s und des Knotenstrahls w nach der Ausrichtung.
z
7.1.2
Ausrichtung der Streifenseiten orthogonal zur xAchse
In diesem Abschnitt wird die erste Scherung der Transformation f , genannt f 1
dargelegt. Es genügt bei dieser Scherung die Projektion der Streifen und der Fußpunkte auf die x-y-Ebene zu betrachten, wie in Abbildung 7.4 dargestellt. Ziel
von f 1 ist es, den Vektor ~eSeite zur x-Achse zu orthogonalisieren. Abbildung 7.4
zeigt die Ausgangssituation in schwarz und die Situation nach Anwendung von
72
Eine Vereinfachung der Daten
z
r1 1
~eBoden
r1
r
~eBoden
ẇ
y
~e1Seite
ẇ1
l1
~eSeite
x
~e1Seite
~e1Boden
l
Abbildung 7.4: Die Auswirkungen
von f 1 in der x-y-Ebene.
l1
w
~1 = w
~
w1
y
ẇ1
x
Abbildung 7.5: Das Ergebnis von f 1 im
Raum.
f 1 in grau, jeweils projiziert auf die x-y-Ebene. In Abbildung 7.5 ist das Ergebnis
der ersten Scherung im Raum zu sehen. Man betrachte folgende Funktion:
xSeite
3
1
∀p = (xp , yp , zp ) ∈ R : f (p) = xp − yp ·
, y p , zp
ySeite
Dies verändert den Beispielpunkt q sowie ~eSeite und ~eBoden wie folgt (man beachte das sich beispielsweise ẇ analog zu q entwickelt):
xSeite
, y q , zq
f 1 (q) = q 1 = (x1q , yq1 , zq1 ) = xq − yq ·
ySeite
1
1
f 1 (~eBoden ) = ~e1Boden = (x1Boden , yBoden
, zBoden
)
x
Seite
, yBoden , zBoden
= r1 − l1 = xBoden − yBoden ·
ySeite
1
1
f 1 (~eSeite ) = ~e1Seite = (x1Seite , ySeite
, zSeite
) = (0, ySeite , zSeite )
Nach Anwendung dieses ersten Teils f 1 sind die Streifenseiten parallel zur yz-Ebene. Abbildung 7.5 verdeutlicht wie der Streifen und der Fußpunkt des
Knotenstrahls nach Durchführung der ersten Scherung im Raum liegen. Sei
durch die beiden Punkte ẇ und ṡ eine Gerade % gegeben, welche parallel zur
z-Achse verläuft. Ein Blick auf die Definition von f 1 zeigt uns, dass gilt:
xẇ = xṡ ∧ yẇ = xṡ ⇔ xf 1 (ẇ) = xf 1 (ṡ) ∧ yf 1 (ẇ) = xf 1 (ṡ)
(7.1)
Somit ist das Bild f 1 (%) der Geraden % wieder eine Gerade, welche parallel zur
z-Achse verläuft. Der inverse Schluss, dass jede vertikale Gerade im Bild von f 1
als Urbild eine vertikale Gerade hat, ist ebenfalls gültig.
7.1.3
Ausrichtung der Streifenböden orthogonal zur yAchse
Es genügt auch in diesem Teil f 2 der Transformation f , die Projektion der Streifen und der Fußpunkte auf die x-y-Ebene zu betrachten. Ziel des zweiten Teiles
7.1 Orthogonalisierende Scherungen
73
z
r
1
~e2Boden
ẇ2 ẇ1
~e2Seite
r2
w
~2 = w
~
y
~e1Boden
~e2Seite
~e1Seite l2
l2
r2
~e2Boden
w2
l1
y
ẇ2
x
x
Abbildung 7.7: Das Ergebnis von f 2 im
Raum.
Abbildung 7.6: Die Auswirkungen
von f 2 in der x-y-Ebene.
ist es, den Vektor ~e1Boden zur y-Achse zu orthogonalisieren. Abbildung 7.6 zeigt
die Transformation wieder projiziert auf die x-y-Ebene. In Abbildung 7.7 ist
das Ergebnis der zweiten Scherung im Raum zu sehen. Man betrachte folgende
Funktion:
1
yBoden
3
2
∀p = (xp , yp , zp ) ∈ R : f (p) = xp , yp − xp · 1
, zp
xBoden
Dies verändert q 1 , ~e1Seite und ~e1Boden wie folgt:
2
1
2
f (q ) = q =
(x2q , yq2 , zq2 )
x2q = xq − yq ·
=
x1q , yq1
−
x1q
y1
· Boden
, z1
x1Boden q
xSeite
ySeite
xSeite
yq2 = yq − xq − yq ·
ySeite
·
yBoden
xBoden − yBoden ·
!
xSeite
ySeite
zq2 = zq
2
2
f 2 (~eBoden ) = ~e2Boden = (x2Boden , yBoden
, zBoden
)
xSeite
= r2 − l2 = xBoden − yBoden ·
, 0, zBoden
ySeite
2
2
f 2 (~eSeite ) = ~e2Seite = (x2Seite , ySeite
, zSeite
) = (0, ySeite , zSeite )
Nach Durchführung dieses zweiten Teils f 2 sind die Streifenböden parallel zur xz-Ebene. Betrachten wir wieder die vertikale Gerade % durch die beiden Punkte
ẇ und ṡ, so zeigt uns ein Blick auf die Definition von f 2 , dass gilt:
xẇ = xṡ ∧ yẇ = xṡ ⇔ xf 2 (ẇ) = xf 2 (ṡ) ∧ yf 2 (ẇ) = xf 2 (ṡ)
(7.2)
Das Bild f 2 (%) der Geraden % ist also wieder eine Gerade, welche parallel zur
z-Achse verläuft, der inverse Schluss ist ebenfalls gültig.
74
Eine Vereinfachung der Daten
z
r3
3
r
r2
~e3Seite
~e2Seite
z
~e2Boden
~e3Boden
3
2
w
~ =w
~
l
l3
w3
x
Abbildung 7.8: Die Auswirkungen
von f 3 in der x-z-Ebene.
7.1.4
y
ẇ3
w
~2
2
ẇ3 ẇ
l
~e3Boden
3
x
Abbildung 7.9: Das Ergebnis von f 3 im
Raum.
Ausrichtung der Streifenböden parallel zur x-Achse
In dieser dritten Scherung f 3 der Transformation f genügt es, die Projektion
der Streifen und der Fußpunkte auf die x-z-Ebene zu betrachten. Ziel des dritten Teils ist es, den Vektor ~e2Boden zur x-Achse zu parallelisieren. Bislang genoss
er noch eine Ausdehnung in z-Richtung. Abbildung 7.8 zeigt die Transformation projiziert auf die x-z-Ebene. In Abbildung 7.9 ist das Ergebnis der dritten
Scherung im Raum zu sehen. Man betrachte folgende Funktion:
2
zBoden
3
3
∀p = (xp , yp , zp ) ∈ R : f (p) = xp , yp , zp − xp · 2
xBoden
Dies verändert q 2 , ~e2Seite und ~e2Boden wie folgt:
2
3
3
3 3 3
2 2 2
2 zBoden
f (q) = q = (xq , yq , zq ) = xq , yq , zq − xq · 2
xBoden
x
Seite
x3q = xq − yq ·
ySeite
!
xSeite
yBoden
3
yq = yq − xq − yq ·
·
Seite
ySeite
xBoden − yBoden · xySeite
!
xSeite
zBoden
3
zq = zq − xq − yq ·
·
Seite
ySeite
xBoden − yBoden · xySeite
3
3
f 3 (~eBoden ) = ~e3Boden = (x3Boden , yBoden
, zBoden
)
xSeite
3
3
= r − l = xBoden − yBoden ·
, 0, 0
ySeite
3
3
f 3 (~eSeite ) = ~e3Seite = (x3Seite , ySeite
, zSeite
) = (0, ySeite , zSeite )
Nach Durchführung der Scherung f 3 sind die Streifenböden orthogonal zur yz-Ebene, und somit parallel zur x-Achse. Erneut gilt für die vertikale Gerade %
durch die beiden Punkte ẇ und ṡ, nach Definition von f 3 :
xẇ = xṡ ∧ yẇ = xṡ ⇔ xf 3 (ẇ) = xf 3 (ṡ) ∧ yf 3 (ẇ) = xf 3 (ṡ)
(7.3)
7.1 Orthogonalisierende Scherungen
75
z
r4
z
~e4Seite
~e3Boden
~e4Seite l4
l4 , r 4
l3 , r 3
w
~4 = w
~
w4
~3
w
~4 w
ẇ4
ẇ
~e4Boden
ẇ
y
3
y
4
x
Abbildung 7.10: Die Auswirkungen Abbildung 7.11: Das Ergebnis von f 4 im
von f 4 in der y-z-Ebene.
Raum.
Wieder ist also das Bild f 3 (%) der Geraden % eine vertikale Gerade und auch
der inverse Schluss gültig.
7.1.5
Ausrichtung der Streifenkanten parallel zur y-Achse
Es genügt in diesem Teil f 4 der Transformation f die Projektion der Streifen
und der Fußpunkte auf die y-z-Ebene zu betrachten. Ziel der vierten Scherung
ist es, den Vektor ~e3Seite zur y-Achse zu parallelisieren, bislang genoss er noch eine
Ausdehnung in z-Richtung. Abbildung 7.10 zeigt die Transformation projiziert
auf die y-z-Ebene. In Abbildung 7.11 ist das Ergebnis der dritten Scherung im
Raum zu sehen. Man betrachte folgende Funktion:
3
4
∀p = (xp , yp , zp ) ∈ R : f (p) =
z3
xp , yp , zp − yp · Seite
3
ySeite
Dies verändert q 3 , ~e3Seite und ~e3Boden wie folgt:
4
4
f (q) = q =
(x4q , yq4 , zq4 )
x4q = xq − yq ·
=
x3q , yq3 , zq3
−
yq3
z3
· Seite
3
ySeite
xSeite
ySeite
!
x
y
Seite
Boden
yq4 = yq − xq − yq ·
·
Seite
ySeite
xBoden − yBoden · xySeite
!
xSeite
zBoden
4
zq = zq − xq − yq ·
·
Seite
ySeite
xBoden − yBoden · xySeite
!! xSeite
yBoden
zSeite
− yq − xq − yq ·
·
·
Seite
ySeite
xBoden − yBoden · xySeite
ySeite
76
Eine Vereinfachung der Daten
4
4
f 4 (~eBoden ) = ~e4Boden = (x4Boden , yBoden
, zBoden
)
xSeite
4
4
= r − l = xBoden + yBoden ·
, 0, 0
ySeite
4
4
f 4 (~eSeite ) = ~e4Seite = (x4Seite , ySeite
, zSeite
) = (0, ySeite , 0)
Nach Durchführung der Scherung f 4 sind die Streifenböden orthogonal zur y-zEbene, und somit parallel zur x-Achse. Schließlich gilt auch hier für die vertikale
Gerade % durch die beiden Punkte ẇ und ṡ, nach Definition von f 4 :
xẇ = xṡ ∧ yẇ = xṡ ⇔ xf 4 (ẇ) = xf 4 (ṡ) ∧ yf 4 (ẇ) = xf 4 (ṡ)
(7.4)
Somit ist auch das Bild f 4 (%) der Geraden % eine vertikale Gerade und auch bei
dieser Scherung ist der inverse Schluss gültig.
Im nächsten Abschnitt dieses Kapitels untersuchen wir, wie durch ein zeitkorrigiertes Einfügen von Knotenstrahlen in die Datenstrukturen der LowestIntersection-Anfragen nicht nur die Koordinaten des Fußpunktes, sondern auch
der Zeitpunkt der Entstehung berücksichtigt werden, um der Ausbreitung eines
Knotenstrahls Rechenschaft zu tragen.
7.1.6
Die Zeitkorrektur
Abgesehen von der offensichtlich inversen Natur von Lowest-Intersection-Anfragen und Ray-Shooting-Anfragen unterscheiden sich diese beiden Minimierungsanfragen in einem weiteren, subtileren Merkmal. Während bei RayShooting-Anfragen die gespeicherten Objekte sofort nach ihrer Einfügung in
eine Datenstruktur eine vorläufig endgültige, statische Rolle spielen, sind die
in den Datenstrukturen der Lowest-Intersection-Anfragen gespeicherten Knotenstrahlen dynamische Objekte, bei denen die dynamischen Spitzen der Knotenstrahlen relevant für Ereignisse sind und nicht die statischen Fußpunkte.
In diesem Abschnitt untersuchen wir,
z
was beim Speichern von Knotenstrahlen beachtet werden muss, um ihrer
dynamischen Natur gerecht zu werden.
Man betrachte eine gegebene Datenstruktur DLI für sublokale Lowestw2
Intersection-Anfragen mit dem Streiẇ2
fen s, das heißt in DLI sind lediglich Knotenstrahlen einer Ähnlichs
w1
keitsklasse gespeichert, und die Any
ẇ1
frageobjekte an DLI sind Streifen von
ebenfalls nur einer Ähnlichkeitsklasse. Seien die beiden Knotenstrahlen
x
w1 und w2 in DLI gespeichert, dabei
sei w1 derjenige Knotenstrahl, dessen
Abbildung 7.12: Zwar ist Fußpunkt von
Fußpunkt ẇ1 eine geringere z Koordiw2 näher an s, dennoch erreicht w1 den
nate besitzt als der Fußpunkt ẇ2 von
Streifen früher, da w1 älter ist.
w2 . Somit wurde w1 zu einem früheren Zeitpunkt während der Simulati-
7.1 Orthogonalisierende Scherungen
77
on der Wellenfrontausdehnung in DLI eingefügt als w2 . Angenommen die beiden
Knotenstrahlen w1 und w2 bewegen sich, wie in Abbildung 7.12 dargestellt, auf
den Streifen s zu. Der Fußpunkt ẇ1 ist weiter von s entfernt als ẇ2 . Beachtet
man nicht, dass sich Knotenstrahlen mit endlicher Geschwindigkeit ausbreiten,
so würde man nun als Antwort einer Lowest-Intersection-Anfrage möglicherweise den Knotenstrahl w2 bekommen. Abhängig von der Geschwindigkeit der
beiden Knotenstrahlen ist es jedoch möglich, dass w1 die richtige Antwort ist, da
dieser Knotenstrahl bereits mehr Zeit hatte, sich auszubreiten – Zeit, in der sich
w1 dem Streifen s proportional zu seiner Ausbreitungsgeschwindigkeit genähert
hat.
Eine Möglichkeit diese Dynamik der Knotenstrahlen handzuhaben wäre, bei
jedem Ereignis die Fußpunkte aller gespeicherten Knotenstrahlen auf den Punkt
zu korrigieren, den sie mittlerweile erreicht haben. Bei O(c + n) Ereignissen und
O(c + n) Knotenstrahlen scheitert dies jedoch an der erforderlichen Anzahl von
Θ((c + n)2 ) Korrekturen. Da die Ausbreitung eines Knotens aber bereits zum
Zeitpunkt seiner Entstehung bekannt ist, ist es möglich diesen Zeitpunkt zusammen mit den Koordinaten des Fußpunktes zu verrechnen. Wir betrachten die
Zeitkorrektur zunächst in der Situation vor Durchführung der Transformation
f.
Beobachtung 7.1 Fügt man zum Zeitpunkt tw > t0 für einen Knotenstrahl
w den Fußpunkt ẇ = (xẇ , yẇ , zẇ ) mit den zeitkorrigierten Koordinaten ẅ =
(xẅ , yẅ , zẅ ) = (ẇ − wt
~ w ) in DLI ein, so repräsentieren die in DLI zeitkorrigiert
eingetragenen Fußpunkte zu jedem Zeitpunkt die relative Position der Spitzen
der gespeicherten Knotenstrahlen.
Beweis. Angenommen die Knotenstrahlen w1 und w2 mit Vektor w
~ entstehen
zu den Zeitpunkten t1 und t2 mit t1 < t2 während der Wellenfrontausdehnung.
In der Zeit ∆t = t2 − t1 wandert w1 um ∆t||w||
~ in Richtung w.
~ Somit ist ab
der Entstehung von w2 die relative Position der Spitze von w1 zu der von w2
bezüglich der Koordinaten der Fußpunkte um ∆t||w||
~ in Richtung w
~ verschoben.
Fügt man die Knotenstrahlen w1 und w2 wie beschrieben in DLI ein, so ist die
relative Position der korrigierten Fußpunkte ẅ1 und ẅ2 von w1 beziehungsweise
w2 wie folgt:
ẅ1 − ẅ2 = (ẇ1 − wt
~ 1 ) − (ẇ2 − wt
~ 2 ) = ẇ1 − ẇ2 + ∆tw
~
Betrachtet man die relative Position der Spitzen w
b1 (t) und w
b2 (t) von w1 beziehungsweise w2 , also der Punkte im Raum, welche die Knotenstrahlen ausgehend
von ihren Fußpunkten zum Zeitpunkt t erreicht haben, so ergibts sich Folgendes:
w
b1 (t) − w
b2 (t) = (ẇ1 − w(t
~ − t1 )) − (ẇ2 − w(t
~ − t2 )) = ẇ1 − ẇ2 + ∆tw
~
Wie behauptet entspricht somit die relative Position der Spitzen von w1 und
w2 in der Wellenfrontausdehnung der relativen Position der zeitkorrigierten
Fußpunkte.
Man beachte, dass diese Zeitkorrektur durchaus auch nach der Transformation f durchgeführt werden kann. Im Sinne der Anschaulichkeit haben wir zur
Erläuterung der Zeitkorrektur jedoch nicht transformierte Objekte gewählt. Für
78
Eine Vereinfachung der Daten
eine Implementation empfiehlt es sich, die Zeitkorrektur nach Durchführung der
Transformation f einzubauen, da der Vektor w
~ dadurch parallel zur z-Achse ist.
Fügt man Knotenstrahlen wie beschrieben zeitkorrigiert in Lowest-Intersection-Datenstrukturen ein, so gilt es dies bei Anfragen an diese Datenstrukturen
zu beachten. Stellt man zum Zeitpunkt ts eine Anfrage mit einem Streifen s,
so lässt sich aus den zeitkorrigierten Fußpunkten und s die Zeit berechnen, die
ab dem Start der Wellenfront bis zur Kollision verstreicht. Nun ist es jedoch
möglich, dass ein zeitkorrigierter Knotenstrahl derart verschoben wird, dass er
s trifft, obwohl er das in der Wellenfrontausdehnung nicht tut. In einem solchen
Fall wäre der berechnete Zeitpunkt der (falsch vorhergesagten) Kollision tk < ts ,
er läge somit in der Vergangenheit. Eine einfache Prüfung lässt uns dieses Ereignis verwerfen, jedoch führt eine explizite Behandlung solcher Ereignisse zu
O((c + n)2 ) Prüfungen. Im folgenden Absatz betrachten wir eine Lösung dieser
Problematik.
Bei der Lowest-Intersection-Anfrage mit dem Streifen s an die entsprechend Abschnitt 7.1.1 ausgerichtete Datenstruktur DLI zum Zeitpunkt ts berücksichtigt man lediglich die Knotenstrahlen, für deren Zeitpunkt tk der Kollision mit s gilt: tk ≥ ts . Dies sind all die Knotenstrahlen w mit Fußpunkten
ẇ = (xẇ , yẇ , zẇ ) und Punkte ṡ = (xṡ , yṡ , zṡ ) der Kollision mit s, für die gilt:
(zṡ − zẇ )/||w||
~ ≥ ts und somit zṡ ≥ zẇ +ts ||w||
~ beziehungsweise zẇ ≤ zṡ −ts ||w||
~
(man beachte, dass w
~ nun parallel zur z-Achse ist). Diese Prüfung lässt sich einfach in der letzten Stufe der im folgenden Kapitel beschriebenen Datenstrukturen implementieren (siehe Abschnitt 8.4.3). Mit anderen Worten bedeutet dies,
dass die Anfrage, die mit dem Streifen s zum Zeitpunkt ts erfolgt, ebenfalls
zeitkorrigiert wird. Dazu wird der ausgerichtete Streifen s für die Anfrage um
ts ||w||
~ in negativer z-Richtung verschoben. Auf diese Weise lässt sich direkt die
verbleibende Zeit bis zu einer Kollision berechnen. Intuitiv erscheint es bei einer zeitkorrigierten Anfrage möglich, dass der Streifen s zwar hinter der Spitze
eines Knotenstrahls w, aber vor seinem ursprünglichen Fußpunkt liegt. Somit
läge s auf der Trajektorie des Strahls w. Diese Situation ist selbstverständlich
nicht möglich, da s einen Ort besucht, den die Wellenfront durch w bereits besucht hat. Durch ein anderes Ereignis wäre also vor der globalen Vorhersage
einer solchen Kollision die Lebenszeit von entweder s oder w beendet worden,
möglicherweise sogar durch eine Kollision von s mit w.
In den folgenden Abschnitten wird ohne weitere Erwähnung angenommen,
dass Knotenstrahlen, wie in Beobachtung 7.1 beschrieben, in die Lowest-Intersection-Datenstrukturen eingefügt werden, und Lowest-Intersection-Anfragen
durch die oben beschriebene Zeitkorrektur angepasst werden.
7.2
Korrektheit der Transformation
Die Korrektheit der Transformation f wird in zwei Schritten bewiesen. Zunächst
wird gezeigt, dass eine Gerade durch den Strahl vor und nach der Transformation
den selben Streifen trifft. Dann wird gezeigt, dass der getroffene Streifen vor
und nach der Transformation den Abstand und die relative Lage zum Fußpunkt
des Strahls beibehält. Damit ist nicht nur gezeigt, dass die Transformation das
Ergebnis einer Minimierungsanfrage nicht verändert, sondern auch, dass das Bild
7.2 Korrektheit der Transformation
79
der Transformation dazu verwendet werden kann, den Zeitpunkt der Kollision
zu errechnen.
Sei w ein Knotenstrahl. Nach der Ausrichtung des Koordinatensystems trifft
eine Gerade durch den Knotenstrahl w mit Fußpunkt ẇ = (xẇ , yẇ , zẇ ) ∈ R3
genau dann den Streifen s, wenn es einen Punkt ṡ = (xṡ , yṡ , zṡ ) ∈ s auf dem
Streifen s gibt mit xẇ = xṡ und yẇ = yṡ . Es ist also zu zeigen: xẇ = xṡ und
yẇ = yṡ ⇔ xf (ẇ) = xf (ṡ) und yf (ẇ) = yf (ṡ) In den vergangenen Abschnitten
haben wir diese Behauptung durch die Gleichungen 7.1 bis 7.4 jedoch für die
vier einzelnen Teile f 1 , . . . , f 4 der Transformation f bereits gezeigt. Da nach
Definition von f gilt: f = f 4 ◦ f 3 ◦ f 2 ◦ f 1 , ist die Behauptung gezeigt. Somit
wird eine vertikale Gerade durch f auf eine vertikale Gerade abgebildet, und
das Bild einer Gerade durch einen Knotenstrahl trifft dieselben Streifen wie das
Urbild.
Noch zu zeigen ist, dass sich die relative Lage und der Abstand zwischen
ẇ und ṡ nicht ändern, vorausgesetzt ẇ und ṡ haben die gleichen x- und yKoordinaten. Basierend auf den Ergebnissen des letzten Absatzes ist dies gleichbedeutend mit der Aussage, dass die Transformation f eine vertikale Strecke auf
eine vertikale Strecke gleicher Länge abbildet. Die folgende simple Überlegung
zeigt die Behauptung direkt: Scherungen f 1 und f 2 lassen z-Koordinaten gänzlich unangetastet. Scherungen f 3 und f 4 verändern die z-Koordinaten eines
Punktes proportional zu dessen x- respektive y-Koordinaten (was offensichtlich
für Punkte auf einer vertikalen Gerade gewährleistet ist).
Nach diesen beiden Schritten ist somit garantiert, dass sowohl der Abstand
zwischen ẇ und ṡ als auch deren relative Lage durch f beibehalten werden.
Zudem sichert diese Invarianz, dass der Vektor w
~ des Knotenstrahls w ebenfalls transformationsinvariant ist. Das folgende Lemma fasst das Ergebnis der
Transformation f zusammen:
Lemma 7.1 (Transformation f ) Der Knotenstrahl w trifft den Streifen s genau dann, wenn der Knotenstrahl f (w) den Streifen f (s) trifft. Zudem ist der
Weg, den der Strahl bis zur Kollision zurücklegt, nach der Transformation gleich
lang wie vor der Transformation
Nach Lemma 7.1 kann somit nach der Transformation zẇ − zṡ zu Berechnung
des Zeitpunktes der Kollision herangezogen werden. Demnach gilt für zwei Knotenstrahlen w1 und w2 darüber hinaus: w1 trifft s zeitlich vor w2 genau dann,
wenn gilt f (w1 ) trifft f (s) zeitlich vor f (w2 ). Weder kann also ein Knotenstrahl
einen zweiten überholen“, noch können zwei Streifen ihre relative Lage tau”
schen. Man beachte, dass die Ergebnisse von Lemma 7.1 keineswegs für jede
Verkettung von Scherungen oder sogar für lineare Transformationen im Allgemeinen gelten. Erst die sorgfältige Wahl der einzelnen Scherungen ermöglicht
es uns, die Minimierungsanfragen zu vereinfachen und zugleich die Ergebnisse
dieser Anfragen nicht zu verändern.
Zusammenfassend haben wir in diesem Abschnitt eine ursprüngliche Minimierungsanfrage im Raum in eine orthogonale Minimierungsanfrage transformiert. Im nächsten Kapitel werden wir betrachten, wie diese orthogonale Minimierungsanfrage in eine orthogonale Bereichsanfrage umgewandelt wird, welche
schnell beantwortet werden kann. Zunächst beleuchten wir jedoch im letzten
Abschnitt dieses Kapitels noch, wie die dargelegte Transformation f an die ver-
80
Eine Vereinfachung der Daten
schiedenen Streifentypen angepasst wird.
7.3
Die Anpassung der Transformation f
In den vergangenen Abschnitten wurde die Transformation f für Streifen vom
Typ 2 vorgestellt. Wie in Abschnitt 7.1 angesprochen, erfordert die unterschiedliche Geometrie der verschiedenen Streifentypen (siehe Abschnitt 6.4.3) eine Anpassung der Transformation f an Streifen des Typs 1 beziehungsweise 4. Davon
sind alle diejenigen Datenstrukturen betroffen, welche eine Ähnlichkeitsklasse
von Typ-1-Streifen beziehungsweise Typ-4-Streifen bedienen. Ein Streifen vom
Typ 1 hat dieselbe Form wie ein Typ-2-Streifen, bis auf die Tatsache, dass er
abgesehen vom Boden nur an einer Seite beschränkt ist statt an zwei und zudem
nur einen Fußpunkt besitzt. Die notwendigen Änderungen für Typ-1-Streifen an
der Transformation bestehen somit trivialerweise nur aus einigen Streichungen.
Die verschiedenen Ähnlichkeitsklassen von Knotenstrahlen machen keine konzeptionellen Änderungen an f notwendig, lediglich die in Abschnitt 7.1.1 dargelegte Ausrichtung des Koordinatensystems muss dem Vektor der bedienten
Knotenstrahlen entsprechen.
Streifen vom Typ 4 bedürfen allerdings einer besonderen Betrachtung.
Sei s nun ein solcher Streifen. Nach
Boden
Abschnitt 6.4.3 ist s ein Dreieck, und
Schräge
lässt sich als solches nicht vollständig
eC
orthogonalisieren. Zunächst wird festv2
gelegt, wie die Kanten des dreieckigen Streifens identifiziert werden, sies
he dazu Abbildung 7.13. Der Boden
v1
ω
ist die erste Kante von s, die vollSeite
ständig von der Wellenfront Wt (S) erreicht wird. Als Seite wird dann dieAbbildung 7.13: Bezeichnung der Kan- jenige der übrigen Kanten von s deten eines Typ-4-Streifens.
finiert, welche kürzer ist. Die dritte
Kante wird als Schräge bezeichnet.
Nach der herkömmlichen Ausrichtung des Koordinatensystems nach der Strahlenklasse erfolgt nun die Durchführung der Transformation in gewohnter Form
wie für Typ-1-Streifen. Das Ergebnis ist ein transformierter Streifen f (s), der
parallel zur x-y-Ebene liegt und dessen Boden und Seite parallel zur x-Achse
respektive y-Achse sind. Abhängig von der Ähnlichkeitsklasse kann die Schräge
von f (s) nun unterschiedliche Winkel mit der x- und der y-Achse einschließen. Für Streifen dieses Typs muss in der orthogonalen Bereichsanfrage eine
von der Ähnlichkeitsklasse abhängige, weitere Koordinatenrichtung in der x-yEbene eingeführt werden, mehr dazu in Abschnitt 8.6.
Kapitel 8
Die Minimierungsanfragen
Nachdem wir die der entsprechenden Ähnlichkeitsklasse angepasste Transformation f durchgeführt haben, werden Streifen und Knotenstrahlen in bedienende Datenstrukturen eingefügt. In diesem Kapitel beschreiben wir diese Datenstrukturen für die lokalen Minimierungsanfragen. Ebenfalls in diesem Kapitel
betrachten wir die Vorgehensweise des Konstruktionsalgorithmus für einen Streifen vom Typ 2 und einen gegebenen Knotenstrahl w. Wie in Kapitel 7 legen wir
am Ende dieses Kapitels in Abschnitt 8.6 kurz dar, inwiefern Datenstrukturen,
die einen anderen Streifentyp bedienen, entsprechend angepasst werden.
Die Einordnung von Streifen in Ähnlichkeitsklassen reduziert die Menge der
notwendigen Daten, welche wir für Streifen nach der Transformation f speichern.
Für den Streifen s werden innerhalb einer Datenstruktur nur noch die folgenden
Daten genutzt (in Ray-Shooting-Datenstrukturen werden diese gespeichert, und
in Lowest-Intersection-Datenstrukturen werden sie für Anfragen genutzt):
• die x-Koordinate xf (l) des transformierten Bodenpunktes f (l),
• die x-Koordinate xf (r) des transformierten Bodenpunktes f (r),
• die y-Koordinate yf (l) des transformierten Bodenpunktes f (l) (man beachte, dass nach der Transformation gilt: yf (l) = yf (r) ), sowie
• die z-Koordinate zf (l) des Streifens, der nach der Transformation orthogonal zur z-Achse steht
Für den Strahl w wird lediglich die Information über den Fußpunkt ẇ gespeichert, da Strahlen in jeder Datenstruktur in Richtung der positiven z-Achse
liegen (in Lowest-Intersection-Datenstrukturen werden diese gespeichert, und
in Ray-Shooting-Datenstrukturen werden sie für Anfragen genutzt):
• die x-Koordinate xf (ẇ) des transformierten Fußpunkts f (ẇ),
• die y-Koordinate yf (ẇ) des transformierten Fußpunkts f (ẇ) und
• die z-Koordinate zf (ẇ) des transformierten Fußpunkts f (ẇ)
82
Die Minimierungsanfragen
Nach Kapitel 5 ist es notwendig die folgenden Arten von Anfragen zu beantworten:
1. Ray-Shooting-Anfrage: Welchen Streifen trifft ein Anfragestrahl w als
nächstes?
2. Lowest-Intersection-Anfrage: Welcher Strahl trifft einen Anfragestreifen s
als nächstes?
Mit Hilfe dieser lokalen Anfragen liefert Satz 5.1 das global nächste Ereignis,
und die diskretisierte Konstruktion von VC (S) kann um einen weiteren Schritt
fortgesetzt werden. In einer Ray-Shooting-Datenstruktur werden Streifen eingefügt, jedoch keine Knotenstrahlen. Letztere werden als Anfragestrahlen an
die Datenstruktur gesendet, welche dann das Ergebnis dieser Anfrage liefert.
Analog dazu werden in einer Lowest-Intersection-Datenstruktur Knotenstrahlen
eingefügt und keine Streifen. Eine Anfrage erfolgt dann durch einen Anfragestreifen, für den die Datenstruktur ein Ergebnis liefert. Nach Abschnitt 6.6 steht
(mit einigen wenigen Ausnahmen, siehe Abschnitt 7.1.1) für jede Kombination
aus einer Streifenklasse und einer Klasse von Knotenstrahlen eine Datenstruktur zur Verfügung. Dies bedeutet, dass eine lokale Anfrage sofort in mehrere
sublokale Anfragen aufgeteilt wird, welche dann an diese einzelnen sublokalen
Datenstrukturen gestellt werden. Der Streifen s ist somit in einer Menge von
Ray-Shooting-Datenstrukturen gespeichert, die so groß ist wie die Menge verschiedener Klassen von Knotenstrahlen, und wird bei einer Lowest-IntersectionAnfrage an eine ebenso große Menge von Lowest-Intersection-Datenstrukturen
gesendet. Umgekehrt ist der Knotenstrahl w in einer Menge von Lowest-Intersection-Datenstrukturen gespeichert, die so groß ist wie die Menge der Streifenklassen, und wird bei einer Ray-Shooting-Anfrage an eine ebenso große Menge
von Ray-Shooting-Datenstrukturen gesendet. Man betrachte die sublokalen Vorhersagen in Abbildung 10.1 zur Anschauung, dabei beziffert τ die Anzahl der
Klassen von Knotenstrahlen und σ die Anzahl der Streifenklassen.
Wird eine Minimierungsanfrage gestellt, so liefern zunächst konstant viele
sublokale Datenstrukturen, welche die Ähnlichkeitsklasse des angefragten Objekts bedienen, ein Ergebnis. Ein solches Ergebnis genügt der Anfrage: Welches
Objekt der Klasse K trifft das Anfrageobjekt zuerst? Aus dieser konstant großen
Menge von sublokalen Prognosen wird dann durch einen Ergebnisfilter, der in
Abschnitt 8.7 beschrieben wird, in konstanter Zeit die lokale Prognose festgestellt. Die lokale Prognose genügt der Anfrage: Welches Objekt hat als erstes
eine Interaktion mit dem Anfrageobjekt?
Im Folgenden dieses Kapitels werden die Datenstrukturen der sublokalen Minimierungsanfragen und die dort durchgeführten orthogonalen Bereichsanfragen
betrachtet.
8.1
Die Datenstrukturen
Anfragen
für
Ray-Shooting-
Nach der Durchführung der in Kapitel 7 beschriebenen Transformation werden Streifen und Knotenstrahlen in speziell für diese Klassen von Streifen und
8.1 Die Datenstrukturen für Ray-Shooting-Anfragen
83
Knotenstrahlen vorgesehene Datenstrukturen eingefügt. Wir betrachten in diesem Abschnitt diejenige Datenstruktur DRS , welche alle Streifen einer Klasse
speichert und Ray-Shooting-Anfragen für beliebige Knotenstrahlen einer festen
Klasse beantwortet. Sei der Anfragestrahl w gegeben und der Streifen s gespeichert in DRS . Für den Streifen s werden die x-Koordinaten der Bodenpunkte,
die y-Koordinate des Bodens und die z-Koordinate des Streifens genutzt. Es
sei noch einmal erwähnt dass nach der Transformation ein Typ-2-Streifen orthogonal zur z-Achse steht, und zudem all seine Seiten parallel zu einer der
Koordinatenachsen sind.
Als Datenstruktur kommt ein vierstufiger Bereichsbaum zum Einsatz, den
wir mit T = {T 1 , T 2 , T 3 , T 4 } bezeichnen, wobei T i die Strukturen der i. Stufe
bezeichnen. Eine ausführliche Beschreibung mehrstufiger Bereichsbäume bieten
de Berg u. a. (2001). Eine Untersuchung der asymptotischen Größe und Konstruktionszeit von DRS wird in Abschnitt 10 vorgenommen. In jeder Stufe des
Bereichsbaumes wird ein balancierter, binärer Suchbaum, zum Beispiel ein AVLSuchbaum eingesetzt.
Definition 8.1 (AVL-Baum) Ein balancierter Baum ist ein Baum, in dem
sich für jeden Knoten die Höhe des rechten und des linken Kinds um höchstens
1 unterscheiden.
Die Invariante, dass der binäre Suchbaum stets balanciert ist, wird durch Rotationen garantiert, welche nach Einfüge- und Löschoperationen durchgeführt
werden. Eine Rotation ist eine lokale Operation an einem Baum, welche die
Verzeigerungsstruktur eines Baums ändert, dabei aber die Eigenschaften eines
binären Suchbaumes erhält. Da dies jedoch nicht zentraler Punkt dieser Arbeit
ist, wird für eine detaillierte Beschreibung von AVL-Bäumen auf Cormen u. a.
(2001) oder auf Ottmann und Widmayer (2001) verwiesen. Eine umfassende Beschreibung dynamischer mehrstufiger Bereichsbäume bietet Lamoureux (1996),
unter anderem werden dort Laufzeiten von Einfüge-, Lösch- und Anfrageoperationen detailliert untersucht und bewiesen. Zusammenfassend hat ein d-stufiger
Bereichsbaum T basierend auf AVL-Bäumen mit m gespeicherten Werten die
folgenden, für uns relevanten Eigenschaften:
• Die Bäume jeder Stufe von T haben eine Tiefe von O(log m).
• Einfüge- und Löschoperationen (inklusive der Balancieroperationen) für T
d
benötigen eine Laufzeit von O((log m) ).
d
• Anfragen an T benötigen ebenfalls eine Laufzeit von O((log m) ).
Im Folgenden werden zunächst die Datenstruktur, dann der Ablauf einer Anfrage beschrieben. Auf eine Beschreibung der Einfüge-, Lösch- und Balancieroperationen wird verzichtet. Innerhalb einer Datenstruktur werden in den nächsten
Abschnitten folgende Bezeichnungen benutzt:
• Die Menge der gespeicherten Streifen: S = {s1 , . . . , sm }
• Die Menge der x-Koordinaten der linken Bodenpunkte: L = {l1 , . . . , lm }
• Die Menge der x-Koordinaten der rechten Bodenpunkte: R = {r1 , . . . , rm }
84
Die Minimierungsanfragen
• Die Menge der y-Koordinaten der Böden: Y = {y1 , . . . , ym }
• Die Menge der z-Koordinaten der Streifen: Z = {z1 , . . . , zm }
Es gilt also, dass jeder Streifen si ∈ S mit 1 ≤ i ≤ m definiert wird durch
die Koordinaten li , ri , yi , zi . Die Ähnlichkeitsklasse von Anfragestrahlen, welche DRS bedient, ist die Klasse des Knotenstrahls w. Über den Anfragestrahl
w werden bei einer Ray-Shooting-Anfrage an DRS die Koordinaten xw , yw , zw
des (transformierten) Fußpunkts ẇ gesendet. In den folgenden vier Abschnitten
werden die vier Stufen des Bereichsbaumes DRS dargelegt. Anschließend wird
ein Ray-Shooting-Anfragealgorithmus vorgestellt.
8.1.1
Die erste Stufe der Datenstruktur
Die erste Stufe der Datenstruktur bildet ein balancierter, binärer Suchbaum, in
dem die Blätter die einzelnen Streifen vertreten. Als Schlüsselmenge fungiert
L. Betrachtet man die Projektion der Streifen und des Anfragestrahls auf die
x-y-Ebene, so dient diese Stufe dem folgenden Zweck: Finde alle Streifen, für
die ẇ rechts der Geraden durch ihre linken Seiten liegt. Der Baum der ersten
Stufe wird als T 1 bezeichnet. Jeder Knoten κ des Baumes enthält neben dem
Schlüssel einen Zeiger auf die Wurzel einer Datenstruktur der zweiten Stufe,
die wir als Unterbaum von κ, oder kurz mit T 2 (κ) bezeichnen. Man bezeichnet
die Menge der zu den Blättern korrespondierenden Streifen, welche unterhalb
eines Knotens κ liegen, als die kanonische Untermenge von κ. Die kanonische
Untermenge eines Knotens κ wird als S(κ) bezeichnet
8.1.2
Die zweite Stufe der Datenstruktur
Die zweite Stufe der Datenstruktur bildet ein Menge von balancierten, binären
Suchbäumen, in denen wieder die Blätter die einzelnen Streifen vertreten. Als
Schlüsselmenge fungiert nun R. Betrachtet man die Projektion der Streifen und
des Anfragestrahls auf die x-y-Ebene, so dient diese Stufe dem folgenden Zweck:
Finde alle Streifen, für die ẇ links der Geraden durch ihre rechten Seiten liegt.
Sei nun T 2 (κ) der Unterbaum des Knotens κ. Der Baum T 2 (κ) enthält nun als
Blätter die Menge der x-Koordinaten der rechten Bodenpunkte der Streifen in
S(κ). Erneut gilt: jeder Knoten λ des Baumes T 2 (κ) enthält neben dem Schlüssel
einen Zeiger auf die Wurzel einer Datenstruktur der dritten Stufe, die wir als
Unterbaum von λ, oder kurz mit T 3 (λ) bezeichnen. Der Begriff der kanonischen
Untermenge wird hier in gleicher Weise wie in der ersten Stufe verwendet.
8.1.3
Die dritte Stufe der Datenstruktur
Die dritte Stufe der Datenstruktur ist analog zur zweiten Stufe aufgebaut. Als
Schlüsselmenge fungiert nun Y. Betrachtet man wieder die Projektion auf die
x-y-Ebene, so dient diese Stufe dem folgenden Zweck: Finde alle Streifen, für die
ẇ oberhalb der Geraden durch ihre Böden liegt. Der Unterbaum eines Knotens
der dritten Stufe µ wird nun bezeichnet als T 4 (µ).
8.2 Orthogonale Bereichsanfrage ersetzt Ray-Shooting-Anfrage
8.1.4
85
Die vierte Stufe der Datenstruktur
Die vierte und letzte Stufe der Datenstruktur bildet wieder eine Menge von
balancierten, binären Suchbäumen, in denen erneut die Blätter die Streifen vertreten. Als Schlüsselmenge fungiert nun Z. In dieser Stufe werden all diejenigen
Streifen gefunden, welche oberhalb von ẇ liegen. Da der Anfragestrahl w sich
von ẇ ausgehend in positiver z-Richtung ausdehnt (siehe Abschnitt 7.1.1), sind
dies die Streifen, deren Erweiterung zu einer Ebene im Raum von w getroffen
werden. Sei nun T 4 (µ) der Unterbaum der vierten Stufe des Knotens µ aus
der dritten Stufe. Nach Konstruktion besitzt µ einen Zeiger auf die Wurzel von
T 4 (µ). Der Baum T 4 (µ) enthält nun als Blätter die Menge von Streifen S(µ).
Die vierte Stufe enthält keine weiteren Zeiger.
8.2
Orthogonale Bereichsanfrage ersetzt RayShooting-Anfrage
Der im vorangegangenen Abschnitt beschriebene vierstufige Bereichsbaum zur Umsetzung von Ray-Shooting-Anfragen ist in Abµ
bildung 8.1 (nach de Berg u. a. (2001)) veranλ
schaulicht, wobei in jeder Stufe nur ein durchT 3 (λ)
T1
suchter Baum dargestellt ist (in der Regel sind
dies in den Stufen zwei bis vier jeweils mehre2
κ
T (κ)
re). Bei einer Anfrage mit dem Knotenstrahl
w werden Bäume jeder Stufe dieser Datenstruktur DRS von oben bis unten durchlaufen.
Dabei werden die in DRS gespeicherten Streifen in jeder der Stufen eins bis drei bezüglich
Abbildung 8.1: Ein vierdimen- einer ihrer Seiten darauf getestet, ob sie in
der Projektion auf die x-y-Ebene ẇ enthalsionaler Bereichsbaum.
ten können. Die vierte Stufe findet aus diesen
Streifen schließlich den Streifen sAntwort , der im Raum am nächsten oberhalb
ẇ liegt, also denjenige Streifen, der vom Anfragestrahl w als erstes getroffen
wird. Der folgende Algorithmus 1 beschreibt den Ablauf einer Anfrage. Durch
diesen Algorithmus ist es möglich Ray-Shooting-Anfragen mit einem Anfragestrahl w in der Menge aller momentan gespeicherten Streifen einer gegebenen
Ähnlichkeitsklasse durchzuführen. Eine Ray-Shooting-Anfrage im Sinne der Minimierungsanfragen aus Abschnitt 5.3 erfordert allerdings, dass alle Streifen
in die Anfrage einbezogen werden – nicht nur die eines bestimmten Typs (eine
Einschränkung bilden redundante Ereignisse, welche wir im folgenden Abschnitt
betrachten). Die Laufzeit der in Algorithmus 1 beschriebenen Anfrage entspricht
4
der in Abschnitt 8.1 dargelegten Laufzeit von O((log m) ), für einen Beweis dieser Laufzeit wird auf die oben genannten Quellen verwiesen. Man beachte, dass
beim Durchsuchen der vierten Stufe des Bereichsbaums automatisch bei demjenigen Streifen si geendet wird, dessen z-Koordinate zsi minimal ist unter allen
Streifen sj mit z-Koordinaten zsj ≥ zw . Dies ist insofern wichtig, als dass eine
explizite Durchsuchung aller getroffener Streifen nach dem Streifen mit minimaler z-Koordinate die (hohe) asymptotische Laufzeit von O(c + n) hätte.
T 4 (µ)
86
Die Minimierungsanfragen
Algorithmus 1 Beantwortung einer Ray-Shooting-Anfrage durch eine orthogonale Bereichsanfrage.
Anforderung: Datenstruktur DRS , Koordinaten xw , yw , zw des Fußpunkts ẇ
von Anfragestrahl w.
Ergebnis: Erster von w getroffener Streifen in DRS .
1: zmin ← ∞
2: sAntwort ← ∅
3: ẇ ← f (ẇ) (Transformation f siehe Abschnitt 7)
4: Durchsuche T 1 mit xr , markiere bei jedem Abbiegen nach links den Unterbaum des rechten Bruders.
5: Prüfe das Blatt explizit, markiere es gegebenenfalls.
6: Durchsuche die markierten Bäume in T 2 mit xw , markiere bei jedem Abbiegen nach rechts den Unterbaum des linken Bruders.
7: Prüfe das Blatt explizit, markiere es gegebenenfalls.
8: Durchsuche die markierten Bäume in T 3 mit yw , markiere bei jedem Abbiegen nach links den Unterbaum des rechten Bruders.
9: Prüfe das Blatt explizit, markiere es gegebenenfalls.
10: Durchsuche die markierten Bäume in T 4 mit zw , und gib in jedem durchsuchten Baum denjenigen Streifen, in dessen Blatt geendet wird, an die
folgende Abfrage weiter:
11: Für jeden weitergegebenen Streifen si mache
12: falls zsi ≤ zmin dann
13:
sAntwort ← si und zmin ← zsi
14: ende
15: Gib als Antwort sAntwort aus.
In Abschnitt 8.7 wird dargelegt, wie wir aus den sublokalen Minimierungsanfragen mit den einzelnen Klassen von gespeicherten Streifen das lokale Ergebnis
der Minimierungsanfrage bezüglich aller gespeicherter Streifen bilden, um es an
die globale Prognose weiterzugegeben.
8.3
Redundante Typ-A-Ereignisse
In Abschnitt 3.3.4 haben wir definiert, was ein redundantes Typ-A-Ereignis
ist, und in Abschnitt 3.4 argumentierten wir, dass die lineare Komplexität der
Quickest-Path-Map und die lineare Anzahl der relevanten Ereignisse während
der Simulation der Wellenfrontausdehnung nur dann garantiert werden können,
wenn redundante Ereignisse ignoriert werden. Angenommen es werden bei einer
gegebenen Ray-Shooting-Anfrage alle entsprechenden sublokalen Datenstrukturen angefragt, dann werden offensichtlich auch redundante Ereignisse vorhergesagt. In diesem Abschnitt legen wir dar, wie alle sublokalen Anfragen vermieden
werden, welche redundante Typ-A-Ereignisse melden.
In den Abbildungen 3.17, 3.18 und 3.19 ist dargestellt, wie sich nach einem
Typ-A-Ereignis an dem Segment si des Transportnetzwerks die Geschwindigkeit gi auf die Neigung der Kanten el und er der Wellenfront auswirkt, welche
inzident zu dem neuen Wellenfrontknoten v sind, der sich orthogonal von si fortbewegt. Zwischen der Neigung von Kanten und der Geschwindigkeit auf einem
8.4 Die Datenstrukturen für Lowest-Intersection-Anfragen
87
Netzwerksegment gilt bei Typ-A-Ereignissen die in Abschnitt 6.4.1 dargelegte Abhängigkeit. Die Frage, ob eine Anfrage mit dem Knotenstrahl v an eine
sublokale Ray-Shooting-Datenstruktur DRS redundante Ereignisse liefert, kann
demnach mit Hilfe der Neigung der zu v inzidenten Kanten der Wellenfront und
der Geschwindigkeit gi der in DRS gespeicherten Streifen beantwortet werden.
Zu diesem Zweck werden zunächst alle Ray-Shooting-Datenstrukturen, welche
lediglich vertikale Wände speichern (dies sind genau die erweiterten Netzwerksegmente), derart in k Datenstrukturen aufgeteilt, dass für jede mögliche Geschwindigkeit gi der Netzwerksegmente eine Datenstruktur bereitsteht. Sobald
der Knotenstrahl v der Wellenfront entsteht, wird für ihn, zusätzlich zu den in
Abschnitt 6.2 beschriebenen Daten, gespeichert, welche Neigung seine beiden
inzidenten Kanten der Wellenfront besitzen. Bei einer Ray-Shooting-Anfrage
mit v werden nun von den Datenstrukturen, welche vertikale Wände speichern,
nur diejenigen angefragt, welche erweiterte Netzwerksegmente speichern, deren
Geschwindigkeit eine flachere Neigung der Kanten der Wellenfront zulassen als
die in v gespeicherte.
Lemma 8.1 Es ist ohne eine Erhöhung der asymptotischen Laufzeit oder des
asymptotischen Speicherbedarfs möglich, Ray-Shooting-Anfragen so abzuwickeln,
dass redundante Typ-A-Ereignisse ignoriert werden.
Beweis. Eine Aufteilung einiger Ray-Shooting-Datenstrukturen in jeweils konstant viele Datenstrukturen erhöht den Speicherbedarf nicht. Es kann in konstanter Zeit festgestellt werden, ob eine Datenstruktur angefragt wird oder
nicht. Weiterhin erhöht sich die Anzahl notwendiger sublokaler Anfragen pro
Ray-Shooting-Anfrage im schlechtesten Fall um den konstanten Faktor k. Somit erhöht sich auch die asymptotische Laufzeit nicht. Nach Argumenten dieses
Abschnittes werden durch die dargelegte Technik redundante Typ-A-Ereignisse
nicht an die lokale oder an die globale Vorhersage weitergegeben und somit
niemals behandelt.
8.4
Die Datenstrukturen für Lowest-Intersection-Anfragen
Nachdem wir in den vorangegangenen Abschnitten eine Datenstruktur betrachtet haben, welche Ray-Shooting-Anfragen durch orthogonale Bereichsanfragen
beantwortet, untersuchen wir in den folgenden Abschnitten eine analoge Datenstruktur für Lowest-Intersection-Anfragen. Während bei einer Ray-ShootingAnfrage unter einer gegebenen Menge von Flächen die erste gesucht wird, welche
von einem Anfragestrahl getroffen wird, wird bei einer Lowest-Intersection-Anfrage unter einer Menge von Strahlen im Raum derjenige Strahl gesucht, welcher
mit einem Anfragestreifen den Schnittpunkt mit kleinster z-Koordinate bildet.
Wir betrachten diejenige Datenstruktur DLI , welche Lowest-Intersection-Anfragen für den Anfragestreifen s und den Strahl w (und alle anderen Knotenstrahlen
und Streifen dieser Ähnlichkeitsklassen) beantwortet. Dabei nehmen wir nach
wie vor an, dass s ein Streifen vom Typ 2 ist. Als Datenstruktur kommt auch bei
der Implementierung von DLI ein mehrstufiger Bereichsbaum T zum Einsatz.
88
Die Minimierungsanfragen
Allerdings kann bei Lowest-Intersection-Anfragen die zweite Stufe eingespart
werden, da eine Bereichsanfrage für eine Fläche zwischen zwei Geraden in nur
einer Stufe beantwortet werden kann, siehe dazu Abschnitt 8.4.1 und Algorithmus 2. Es ergibt sich somit ein dreistufiger Bereichsbaum T = {T 1 , T 2 , T 3 },
wobei in jeder Stufe wieder ein balancierter, binärer Suchbaum verwendet wird.
Es gelten also weiterhin die in Abschnitt 8.1 dargelegten Eigenschaften solcher
Bäume.
Im Folgenden werden zunächst die Datenstruktur, dann der Ablauf einer
Anfrage beschrieben, während auch an dieser Stelle auf eine Beschreibung der
Einfüge-, Lösch- und Balancieroperationen verzichtet und auf Cormen u. a.
(2001) verwiesen wird. Innerhalb einer Datenstruktur werden in den nächsten
Abschnitten folgende Bezeichnungen benutzt:
• die Menge der in DLI gespeicherten Knotenstrahlen: W = {w1 , . . . , wm },
• die Menge der x-Koordinaten der Fußpunkte: X = {x1 , . . . , xm },
• die Menge der y-Koordinaten der Fußpunkte: Y = {y1 , . . . , ym } und
• die Menge der z-Koordinaten der Fußpunkte: Z = {z1 , . . . , zm }
Der Knotenstrahl w = wi ∈ W mit 1 ≤ i ≤ m wird also definiert durch die
Koordinaten xi , yi , zi , und ist einer von m in DLI gespeicherten Knotenstrahlen
derselben Ähnlichkeitsklasse. Die Ähnlichkeitsklasse von Streifen, welche DLI
bedient, ist die Klasse des Streifens s. Für den (transformierten) Streifen s müssen bei einer Lowest-Intersection-Anfrage an DLI die folgenden Informationen
gesendet werden:
• die x-Koordinate ls des linken Bodenpunktes.
• die x-Koordinate rs des rechten Bodenpunktes.
• die y-Koordinate ys des Bodens.
• die z-Koordinate zs des Streifens.
Man beachte, dass der Streifen s als Typ-2-Streifen nach der Transformation
f orthogonal zur z-Achse steht und der Boden von s parallel zur x-Achse. In
den folgenden vier Abschnitten werden die drei Stufen des Bereichsbaums DLI
dargelegt. Anschließend wird ein Lowest-Intersection-Anfragealgorithmus vorgestellt.
8.4.1
Die erste Stufe der Datenstruktur
Die erste Stufe der Datenstruktur bildet ein balancierter, binärer Suchbaum, in
dem die Blätter die einzelnen Streifen vertreten. Als Schlüsselmenge fungiert X .
Betrachtet man die Projektion der Knotenstrahlen und des Anfragestreifens auf
die x-y-Ebene, so dient diese Stufe dem folgenden Zweck: Finde alle Knotenstrahlen, welche rechts der Geraden durch die linke Seite und links der Geraden
durch die rechte Seite von s liegen. Der Baum der ersten Stufe wird als T 1 bezeichnet. Jeder Knoten κ des Baumes enthält neben dem Schlüssel einen Zeiger
8.5 Orthogonale Bereichsanfrage statt Lowest-Intersection-Anfrage
89
auf die Wurzel einer Datenstruktur der zweiten Stufe, die wir als Unterbaum
von κ, oder kurz mit T 2 (κ) bezeichnen. Man bezeichnet die Menge der zu den
Blättern korrespondierenden Knotenstrahlen, welche unterhalb eines Knotens κ
liegen, als die kanonische Untermenge von κ. Die kanonische Untermenge eines
Knotens κ wird als S(κ) bezeichnet
8.4.2
Die zweite Stufe der Datenstruktur
Die zweite Stufe der Datenstruktur bildet eine Menge von balancierten, binären
Suchbäumen, in denen wieder die Blätter die einzelnen Knotenstrahlen vertreten. Als Schlüsselmenge fungiert nun Y. Betrachtet man die Projektion der
Knotenstrahlen und des Anfragestreifens auf die x-y-Ebene, so dient diese Stufe
dem folgenden Zweck: Finde alle Knotenstrahlen, welche oberhalb der Geraden
durch den Boden von s liegen. Sei nun T 2 (κ) der Unterbaum des Knotens κ. Der
Baum T 2 (κ) enthält nun als Blätter die Menge der x-Koordinaten der Knotenstrahlen in S(κ). Erneut gilt: Jeder Knoten λ des Baumes T 2 (κ) enthält neben
dem Schlüssel einen Zeiger auf die Wurzel einer Datenstruktur der dritten Stufe, die wir als Unterbaum von λ, oder kurz mit T 3 (λ) bezeichnen. Der Begriff
der kanonischen Untermenge wird hier in gleicher Weise wie in der ersten Stufe
verwendet.
8.4.3
Die dritte Stufe der Datenstruktur
Die dritte und letzte Stufe der Datenstruktur bildet wieder eine Menge von
balancierten, binären Suchbäumen, in denen wie bisher die Blätter die Knotenstrahlen vertreten. Als Schlüsselmenge fungiert nun Z. In dieser Stufe werden all
diejenigen Knotenstrahlen gefunden, deren Fußpunkt unterhalb s liegt. Da sich
die Knotenstrahlen in DLI in positiver z-Richtung ausdehnen, sind dies die Knotenstrahlen, welche die Erweiterung des Anfragestreifens s zu einer Ebene im
Raum treffen. Sei nun T 3 (λ) der Unterbaum der dritten Stufe des Knotens λ aus
der zweiten Stufe. Nach Konstruktion besitzt λ einen Zeiger auf die Wurzel von
T 3 (λ). Der Baum T 3 (λ) enthält nun als Blätter die Menge der z-Koordinaten
der Knotenstrahlen in S(λ). Die dritte Stufe von DLI enthält keine weiteren
Zeiger.
8.5
Orthogonale Bereichsanfrage statt LowestIntersection-Anfrage
Der dargelegte dreistufige Bereichsbaum zur Umsetzung von Lowest-Intersection-Anfragen wird analog zu den Datenstrukturen der Ray-Shooting-Anfragen
konstruiert und genutzt (siehe Abbildung 8.1). Bei einer Anfrage mit dem Streifen s wird jede Stufe dieser Datenstruktur DLI von oben bis unten durchlaufen.
Dabei werden die in DLI gespeicherten Knotenstrahlen in den Stufen eins und
zwei bezüglich einer ihrer Seiten darauf getestet, ob sie in der Projektion auf die
x-y-Ebene s treffen können. Die dritte Stufe findet aus diesen Knotenstrahlen
schließlich den Knotenstrahl wAntwort , der im Raum am nächsten unterhalb des
90
Die Minimierungsanfragen
Fußpunktes ẇ liegt, also denjenigen Knotenstrahl, der den Anfragestreifen s als
erstes trifft. Der folgende Algorithmus beschreibt den Ablauf einer Anfrage.
Algorithmus 2 Beantwortung einer Lowest-Intersection-Anfrage durch eine
orthogonale Bereichsanfrage.
Anforderung: Datenstruktur DLI , Daten ls , rs , ys , zs des Anfragestreifens s.
Ergebnis: Erster Knotenstrahl in DLI , der s trifft.
1: zmax ← −∞
2: wAntwort ← ∅
3: s ← f (s) (Transformation f siehe Abschnitt 7)
4: Durchsuche T 1 mit ls und rs bis zu dem letzten gemeinsamen Knoten vsplit .
5: Durchsuche T 1 ab dem Knoten vsplit mit ls und markiere bei jedem Abbiegen
nach links den Unterbaum des rechten Bruders.
6: Prüfe das Blatt explizit, markiere es gegebenenfalls.
7: Durchsuche T 1 ab dem Knoten vsplit mit rs , markiere bei jedem Abbiegen
nach rechts den Unterbaum des linken Bruders.
8: Prüfe das Blatt explizit, markiere es gegebenenfalls.
9: Durchsuche die markierten Bäume in T 2 mit ys , markiere bei jedem Abbiegen nach links den Unterbaum des rechten Bruders.
10: Prüfe das Blatt explizit, markiere es gegebenenfalls.
11: Durchsuche die markierten Bäume in T 3 mit zs , und gib in jedem durchsuchten Baum denjenigen Steifen wi , in dessen Blatt geendet wird, an die
folgende Abfrage weiter:
12: Für jeden weitergegebenen Knotenstrahl wi mache
13: falls zwi ≤ zmax dann
14:
wAntwort ← wi und zmax ← zwi
15: ende
16: Gib als Antwort wAntwort aus.
Analog zu den durch orthogonale Bereichsanfragen ersetzten Ray-ShootingAnfragen liefert auch dieser Algorithmus nur sublokale Antworten auf LowestIntersection-Anfragen. Auch für die Laufzeit von Algorithmus 2 gelten, bis auf
die um eins geringere Dimension des verwendeten Bereichsbaums, dieselben Beobachtungen wie in Abschnitt 8.2. Im folgenden Abschnitt wird dargelegt, wie
die beiden vorgestellten Datenstrukturen an andere Klassen von Streifen und
Knotenstrahlen angepasst werden. Anschließend folgt eine Untersuchung, wie
mit den sublokalen Ergebnissen der Algorithmen aus diesem Abschnitt und aus
Abschnitt 8.2 die lokalen Minimierungsanfragen beantwortet werden, und somit
die globale Vorhersage gespeist wird. Im letzten Abschnitt dieses Kapitels beleuchten wir kurz Fractional-Cascading, eine Technik zur Beschleunigung von
Suchbäumen.
8.6
Die Anpassung der Minimierungsanfragen
Die in den vergangenen Abschnitten betrachteten Datenstrukturen bedienen
jeweils nur Knotenstrahlen und Streifen einer bestimmten Klasse. In diesem
Abschnitt werden die notwendigen Anpassungen der Minimierungsanfragen an
8.6 Die Anpassung der Minimierungsanfragen
91
andere Ähnlichkeitsklassen betrachtet. Eine besondere Rolle spielen dabei Streifen vom Typ 4, da diese drei nicht parallele Seiten besitzen.
Die Klasse des bisher betrachteten Knotenstrahls w unterscheidet sich von
anderen Klassen durch die Richtung und die Geschwindigkeit der Knotenstrahlen. Eine Änderung dieser beiden Parameter hat jedoch keine Auswirkung auf
die Konzeption der Datenstrukturen und der Minimierungsanfragen. Ein Typ-1Streifen unterscheidet sich lediglich darin von einem Typ-2-Streifen, dass er statt
zwei Seiten nur eine besitzt. Das Konzept der vorgestellten Datenstrukturen ist
jedoch auch für Streifen vom Typ 1 anwendbar. Die erste Stufe der Lowest-Intersection-Datenstrukturen dient in diesem Fall zwar nur noch der Überprüfung
der x-Koordinate eines Bodenpunktes, doch sie bleibt notwendig. Die zweite
Stufe der Ray-Shooting-Datenstrukturen fällt weg, da kein zweiter Bodenpunkt
zur Verfügung steht. Die restlichen Stufen der Datenstrukturen bleiben in ihrer
Funktion vollständig erhalten. In den vorgestellten Algorithmen 1 und 2 der
sublokalen Minimierungsanfragen muss dementsprechend lediglich die Abfrage
des zweiten Bodenpunktes gestrichen werden.
Ein Streifen s vom Typ 4 erfordert eine Erweiterung der vorgestellten Datenstrukturen. Diese Erweiterung gestaltet sich für beide Typen von Minimierungsanfragen gleich. Betrachtet man einen Typ-1-Streifen, so besitzt ein Typ4-Streifen als einzigen Zusatz eine schräge Kante, welche die Fläche beschränkt,
siehe Abbildung 6.17. Wir führen für jede Steigung dieser Schräge eine neue
Koordinatenachse Ψ ein, welche in der Projektion auf die x-y-Ebene redundant
ist und orthogonal zur Schräge der bedienten Streifen liegt. Man betrachte dazu
Abbildung 8.2.
Da die Anzahl der verschiedenen Steigungen von Schrägen nach
Beobachtung 6.5 konstant ist, lässt
Ψ
sich diese Koordinatenachse Ψ für jede einzelne Datenstruktur anpassen.
Wie seine restlichen Kanten definiert
auch die Schräge des Streifens s eine Halbebene, die ein Knotenstrahl
schneiden muss, um s zu treffen. Analog zu den ersten beiden Stufen einer Datenstruktur für Typ-1-Streifen
x wird für Streifen vom Typ 4 eine zusätzliche Stufe vor der bisher letzAbbildung 8.2: Die Koordinatenrich- ten Stufe eingebaut, welche eine Prüfung der Ψ-Koordinate der Schräge
tung Ψ.
zulässt. Entsprechend dieser Erweiterung der Datenstrukturen wird der jeweilige Anfragealgorithmus ebenfalls um
die entsprechenden Zeilen ergänzt. Somit hat jede der Datenstrukturen höchstens vier Stufen.
y
Stehen Datenstrukturen für alle Kombinationen aus Klassen von Knotenstrahlen und Streifen bereit, so können Minimierungsanfragen beantwortet werden. Im folgenden Abschnitt untersuchen wir, wie aus den sublokalen Ergebnissen der einzelnen Datenstrukturen die Antwort auf ein lokale Minimierungsanfrage erstellt wird.
92
8.7
Die Minimierungsanfragen
Der Ergebnisfilter
In Kapitel 5 untersuchten wir, wie bei einer Simulation der Wellenfrontausdehnung stets das nächste eintretende Ereignis vorhergesagt werden kann. Die
globale Prognose bevorstehender Ereignisse von Eppstein (1995) erfordert Minimierungsanfragen wie in Abschnitt 5.3 vorgestellt. In den vergangenen Abschnitten haben wir die beiden Typen von Minimierungsanfragen beschrieben,
jedoch jeweils nur für eine Kombination aus einer Streifenklasse und einer Ähnlichkeitsklasse von Knotenstrahlen. In diesem Abschnitt untersuchen wir, welche
Mechanismen notwendig sind, um aus diesen sublokalen Prognosen die, für die
globale Prognose erforderlichen lokalen Prognosen zu erstellen.
Angenommen es wird für die globale Prognose eine Minimierungsanfrage mit
Objekt ν gestellt. Diese Anfrage hat die Form: Welches Objekt ξ erzeugt mit
Objekt ν als erstes ein Ereignis? Dabei ist ξ aus einer der möglichen Ähnlichkeitsklassen, und es ist a priori nicht möglich abzusehen, von welcher Klasse ξ
ist. Daher muss die lokale Anfrage mit Objekt ν an alle Datenstrukturen weitergegeben werden, welche die Klasse des Objekts ν bedienen; die Anzahl solcher
Datenstrukturen ist nach Lemma 6.5 konstant. In den einzelnen Datenstrukturen werden dann die Minimierungsanfragen mit Objekt ν durchgeführt. Die
Ergebnisse dieser sublokalen Anfragen beantworten zunächst die folgende Frage:
Welches Objekt ξ der Klasse K erzeugt mit Objekt ν als erstes ein Ereignis?
Für jede sublokale Prognose wird nun die verbleibende Zeit bis zum Eintreten
des vorhergesagten Ereignisses berechnet. Aus der konstant großen Menge der
sublokalen Antworten wird anschließend von einem Ergebnisfilter in konstanter
Zeit das Ereignis ermittelt, dessen Eintreten zeitlich als nächstes bevorsteht.
Dieses Ereignis involviert nun das Objekt ξ, welches die ursprünglich gestellte
lokale Minimierungsanfrage beantwortet. Ohne Beweis fassen wir das Ergebnis
dieses Abschnitts im folgenden Lemma zusammen.
Lemma 8.2 Antworten auf Minimierungsanfragen im Sinne von Abschnitt 5.3
können aus den Ergebnissen der sublokalen Datenstrukturen in konstanter Zeit
erstellt werden.
8.8
Fractional-Cascading
In diesem Abschnitt betrachten wir eine Verbesserung der in diesem Kapitel vorgestellten Datenstrukturen durch eine Technik bekannt als FractionalCascading. Chazelle und Guibas (1986a) stellten Fractional-Cascading erstmals
vor. Dieses Verfahren stellt eine Augmentierung bestehender Datenstrukturen
zur Beantwortung von Suchanfragen in Bäumen oder ganz allgemein in Graphen dar. Dazu werden spezielle Zeiger, genannt Brücken, eingeführt, welche
ausnutzen, dass zwischen den kanonischen Untermengen von Knoten Korrelationen bestehen, so dass eine Suche in einer kanonischen Untermenge die Suche
in einer anderen erleichtert. Unter anderem können auch orthogonale Bereichsanfragen mit Hilfe von Fractional-Cascading beschleuningt werden. Aufbauend
auf den Ergebnissen von Chazelle und Guibas (1986a) (und der begleitenden Arbeit mit Anwendungen von Chazelle und Guibas (1986b)) beschreiben Mitchell
u. a. (1987) wie Fractional-Cascading auch für Datenstrukturen genutzt werden
8.8 Fractional-Cascading
93
kann, welche dynamischen Einfüge- und Löschoperationen unterworfen sind. Es
würde den Rahmen dieser Arbeit sprengen, dynamisches Fractional-Cascading
für mehrdimensionale Bereichsbäume darzulegen. Daher wird für die Augmentierung der in diesem Kapitel dargelegten Datenstrukturen, sowie für die Beweise der asymptotischen Laufzeiten von Anfrage-, Lösch- und Einfügeoperationen
auf die Arbeit von Mitchell u. a. (1987) verwiesen. Im Folgenden nehmen wir
an, dass die beschriebenen Minimierungs-Datenstrukturen durch dynamisches
Fractional-Cascading augmentiert werden. In Abschnitt 10.1 werden wir die folgenden Ergebnisse in unsere Berechnung der asymptotischen Laufzeit und des
Speicherbedarfs einbeziehen. Sei ein d-dimensionaler Bereichsbaum gegeben, der
mit Hilfe von Fractional-Cascading eine Menge von m Objekten für orthogonale
Bereichsanfragen speichert, dann ergibt sich Folgendes:
d−1
• Die Konstruktionszeit beträgt O(m(log m)
d−1
• Der Speicherbedarf beträgt O(m(log m)
log log m)
)
• Lösch- und Einfügeoperationen benötigen jeweils eine Laufzeit von nur
d−1
O((log m)
log log m)
d−1
• Eine Bereichsanfrage wird in einer Laufzeit von O(L+(log m)
log log m)
beantwortet, wobei L die Komplexität der Ausgabe ist. Man beachte, dass
in unserem Problem nicht alle Treffer einer Anfrage ausgegeben werden,
d−1
sondern nur der erste, was eine Laufzeit von O((log m)
log log m) bedeutet.
Priority-Search (siehe McCreight (1985)) bildet eine gute Alternative zu einem gewöhnlichen Bereichsbaum für den Fall, dass ein zweidimensionaler angefragter Bereich einseitig offen ist, also von der Form [x1 , x2 ] × [y1 , ∞). Mit
dieser Technik lässt sich durch Augmentieren der Knoten eines Suchbaums eine
Stufe der Datenstruktur einsparen. Somit benötigen Anfragen an eine PrioritySearch-Datenstruktur analog zur Fractional-Cascading-Technik eine geringere
Laufzeit. In unserem Algorithmus sind Streifen vom Typ 1 bis 3 einseitig offen
und auch zweidimensional. Allerdings benötigen wir für eine sublokale Vorhersage eine Ordnung der Treffer in Richtung der z-Koordinate, was in einer PrioritySearch-Datenstruktur nicht einfach zu implementieren ist. Gegenüber der (komplizierten) Fractional-Cascading-Technik bietet Priority-Search eine einfachere
Datenstruktur, erfordert allerdings eine Anpassung bei der Implementation. Wir
verzichten in dieser Arbeit auf eine detaillierte Betrachtung von Priority-Search.
Mit diesem Abschnitt ist die Beschreibung des Konstruktionsalgorithmus der
Quickest-Path-Map abgeschlossen. Eine Übersicht über die Funktionsweise des
Algorithmus ist in Abbildung 10.1 gegeben, und die Untersuchung der asymptotischen Laufzeit und des Speicherbedarfs folgt in Kapitel 10. Im folgenden
Kapitel betrachten wir zunächst, wie mit Hilfe der Quickest-Path-Map Anfragen
beantwortet werden.
Kapitel 9
Anfragen
Nachdem in den vergangenen Kapiteln die Simulation der Wellenfrontausdehnung im Detail beschrieben wurde, betrachten wir in diesem Kapitel, wie wir
nach dieser Vorarbeit in der Lage sind, eine Anfrage nach dem schnellsten Pfad
zum nächsten Bezugspunkt in S = {ω1 , . . . , ωn } zu beantworten. Über die Laufzeit einer Anfrage an die Quickest-Path-Map stellen Aichholzer u. a. (2002) den
folgenden Satz auf, welchen wir in diesem Kapitel konstruktiv beweisen werden:
Satz 9.1 (nach Aichholzer u. a. (2002)) Sei ein beliebiger Anfragepunkt p
gegeben. Der schnellste Pfad Q(p, S) von p zu S kann mit Hilfe von PointLocation in der Quickest-Path-Map in einer Laufzeit von O(L + log n) gefunden
werden, wobei L die Komplexität des Pfades ist.
9.1
Die Quickest-Path-Map
Das Resultat unserer Bemühungen die Wellenfrontausdehnung ausgehend von
S gemäß der City-Metrik zu simulieren ist die Quickest-Path-Map (beziehungsweise das verfeinerte City-Voronoi-Diagramm) VC (S), wie in Abschnitt 2.2 beschrieben. Bei jedem Ereignis, das für die Wellenfrontausdehnung global vorhergesagt wird, wird mindestens ein Streifen fertiggestellt und somit der QuickestPath-Map eine weitere Region zugefügt. Dabei wird das zugehörige definierende
Element (siehe Abschnitt 3.5) gespeichert. Der Prozess ist beendet, wenn schließlich kein weiteres Ereignis mehr vorhergesagt wird. Zu diesem Zeitpunkt werden Randregionen als abgehandelt betrachtet und dementsprechend wie in Abschnitt 3.3.3 beschrieben als (unbeschränkte) Regionen von VC (S) gespeichert
oder bestehenden Regionen hinzugefügt. Darüber hinaus werden den Randregionen in gewohnter Weise definierende Objekte zugewiesen. Bei der Speicherung
der Quickest-Path-Map spielen die z-Koordinaten der Kanten und Knoten von
VC (S) keine Rolle und werden nicht mit abgespeichert. Diese waren lediglich für
den Konstruktionsprozess relevant. Ebenso werden die zusätzlichen Konstruktionskanten von KV nicht weiter berücksichtigt. Im folgenden Abschnitt betrachten wir eine Datenstruktur, die als Nebenprodukt des Konstruktionsprozesses
von VC (S) entsteht und die Pfadsuche vereinfacht.
96
9.2
Anfragen
Der Quickest-Path-Graph
Bei der Simulation der Wellenfront speichern wir in der Quickest-Path-Map Knoten, Kanten und Regionen sowie definierende Objekte und die in Abschnitt 3.5
definierten β-Kanten. Wie in Abschnitt 6.4.1 bereits definiert, unterscheiden wir
in VC (S) zwei grundsätzliche Typen von Kanten: gezogene Kanten und PionierKanten. In diesem Abschnitt betrachten wir einen Graphen, der den wesentlichen Teil einer Pfadanfrage an die Quickest-Path-Map beantworten kann; er
wird von Aichholzer u. a. (2002) in ähnlicher Form erstellt und genutzt.
Definition 9.1 (Quickest-Path-Graph) Die Einschränkung von VC (S) auf
die Knoten sowie die gerichteten Pionier- und β-Kanten ergibt den QuickestPath-Graph T (S).
Der Quickest-Path-Graph ist zwar kein Baum, da der T (S) entsprechende
ungerichtete Graph T 0 (S) nicht notwendigerweise zyklenfrei ist (siehe Abbildung 3.10), jedoch ist T (S) zyklenfrei, und für den Eingangsgrad degin der
Knoten VT (S) von T (S) gilt:
∀v ∈ VT (S) , v ∈
/ S : degin (v) ≥ 1
degin (ω) = 0
Somit sind alle ω ∈ S Quellen. Der Quickest-Path-Graph ist zusammenhängend, da seine Kanten durch die kontinuierliche Wellenfrontausdehnung erzeugt
wurden. Dabei sei erwähnt, dass die Menge der Kanten des Quickest-PathGraphs bei Typ-B-Ereignissen zunächst unzusammenhängend werden kann. Die
Nutzung von β-Kanten (Zeigern) sichert jedoch auch in diesem Fall, dass der
Quickest-Path-Graph zusammenhängend bleibt; siehe dazu Abschnitt 3.5. Man
kann sich den Quickest-Path-Graphen als eine Menge von Bäumen vorstellen,
welche jeweils einen Bezugspunkt ωi als Wurzel haben und sich teilweise überlappen. Diese Struktur des Quickest-Path-Graphs T (S) lässt die folgende Beobachtung zu:
Beobachtung 9.1 (S als Menge von Senken ) Für jeden Punkt p ∈ T (S)
gilt: Folgt man von p aus den Kanten von T (S) sukzessiv entgegen ihrer Orientierung, so gelangt man zu S. An Knoten v von T (S) mit degin (v) ≥ 2 wählt
man eine beliebige nächste Kante.
Beweis. Man betrachte den zu T (S) inversen Graph T (S), dessen Kanten
jeweils entgegengesetzte Orientierung besitzen. Der gerichtete Graph T (S) ist
zyklenfrei, da T (S) zyklenfrei ist. Somit ist jeder Pfad, der sukzessive den orientierten Kanten von T (S) folgt, endlich. Da weiterhin T (S) zusammenhängend
ist und als Senken ausschließlich die Elemente von S hat, ist der Endknoten
jedes solchen Pfades ein Element ω von S.
Wir nennen einen Pfad, der entsteht, indem man von p ∈ T (S) aus sukzessiv
den Kanten von T (S) entgegen ihrer Orientierung folgt, einen Te-Pfad. Soll der
Quickest-Path-Graph für die Pfadsuche genutzt werden, so gilt es noch zu zeigen,
wie ein Te-Pfad in einen isothetischen Pfad nach S umgesetzt werden kann, und
dass ein solcher Pfad tatsächlich ein schnellster Pfad nach S ist.
9.2 Der Quickest-Path-Graph
97
ϕ
e2C
a
r
e1C
eβ
m
b
ωi
Abbildung 9.1: Der β-Kanten-Pfad für die β-Kante eβ von a (definierendes Element der Region r) nach b als isothetischer Pfad.
Während Pionier-Kanten stets isothetisch sind, sind dies β-Kanten im Allgemeinen nicht. Pionier-Kanten können somit direkt als Kanten eines Pfades
genutzt werden, während β-Kanten genauere Betrachtung erfordern. Nach Definition 3.8 verbindet eine (gerichtete) β-Kante das definierende Element einer
Region, welches in ein Typ-B-Ereignis involviert ist, mit dem Ort, an dem das
Ereignis stattfindet. Um wie bei Pionier-Kanten dem inversen Verlauf der Wellenfrontausbreitung zu folgen, ist es bei β-Kanten relevant, welcher Figur die
Kante entstammt, die das entsprechende Typ-B-Ereignis erzeugt hat.
Beobachtung 9.2 (β-Kanten-Pfad) Der schnellste Pfad vom Startknoten
a = (xa , ya ) zum Endknoten b = (xb , yb ) einer nicht isothetischen β-Kante
eβ besteht aus zwei Kanten und drei Knoten. Sei ϕ die in eβ gespeicherte Neigung der Kanten der Wellenfront der involvierten Region. Für die Koordinaten
(xm , ym ) des mittleren Knotens m gilt:
(
(xa , yb ) falls ϕ ≥ 45◦ ,
(xm , ym ) =
(9.1)
(xb , ya ) falls ϕ < 45◦
Den Pfad (a, m, b) nennen wir β-Kanten-Pfad. Er kann in konstanter Laufzeit
berechnet werden.
Beweis. Zum Beweis der Behauptung betrachte man Abbildung 9.1. Die Neigung einer Kante der Wellenfrontkante gibt an, in welcher Richtung die Wellenfront sich (durch das Netzwerk) schneller ausdehnen kann. Die Wellenfront
breitet sich demnach auf einem Pfad wie dargestellt aus. Ist ϕ = 45◦ , so beschleunigt kein Netzwerksegment die lokale Wellenfrontausdehnung, somit ist
der Pfad der Wellenfrontausdehnung in diesem Fall nicht eindeutig. Für die
konstante Laufzeit ist nichts zu beweisen.
Man beachte, dass bezüglich der L1 -Norm für die Länge des Pfades (a, m, b)
gilt: ||(a, m, b)||Manhattan = ||a − b||1 . Es ist also der Manhattan-Abstand von
a und b gleich der Länge des β-Kanten-Pfads bezüglich der L1 -Norm. Aber
bezüglich der City-Metrik gilt diese Gleichung nicht, da sie das Segment e1C nicht
98
Anfragen
berücksichtigt. Für die City-Metrik gilt somit die Ungleichung ||(a, m, b)||City <
||a − b||1 . Mit Hilfe von Beobachtung 9.2 können wir nun die nicht isothetischen
Kanten eines Te-Pfads durch isothetische Kanten ersetzen. Somit können wir für
jeden Punkt p ∈ T (S) einen isothetischen Pfad nach S angeben.
Definition 9.2 (T -Pfad) Ein Pfad heißt T -Pfad, wenn er von einem Punkt
p ∈ VT (S) (VT (S) ist die Knotenmenge von T (S)) aus sukzessiv den Kanten
von T (S) entgegen ihrer Orientierung folgt, und wenn β-Kanten entsprechend
Beobachtung 9.2 durch β-Kanten-Pfade ersetzt sind.
Offensichtlich besteht ein T -Pfad aus isothetischen Kanten und endet nach Beobachtung 9.1 in S. Das folgende Lemma garantiert nun zusammenfassend, dass
es sich bei einem T -Pfad tatsächlich um einen schnellsten Pfad handelt.
Lemma 9.1 (T -Pfade sind schnellste Pfade) Für einen gegebenen Punkt
p ∈ T (S) ist ein T -Pfad ein schnellster Pfad Q(p, S) von p nach S.
Beweis. Nach Argumenten aus Abschnitt 3.3 simuliert die Wellenfront bei
ihrer Ausdehnung alle möglichen schnellsten Pfade zugleich. Somit genügt
es zu zeigen, dass ein T -Pfad den Pfad eines Punktes der Wellenfront exakt
zurückverfolgt. Für Pionier-Kanten ist dies nach Definition 6.3 gegeben. Für
β-Kanten-Pfade trifft dies nach Beobachtung 9.2 ebenfalls zu. Die Verkettung
der Kanten eines T -Pfads stellt somit den Pfad eines Punkts der Wellenfront
dar, welchen der T -Pfad zurückverfolgt. Nach Beobachtung 9.1 endet der Pfad
in S.
Es sei an dieser Stelle angemerkt, dass ein T -Pfad nicht eindeutig sein muss,
man betrachte dazu Abbildung 3.10. Hier hat der Knoten vC bezüglich des
Quickest-Path-Graphen den Eingangsgrad zwei. Im nächsten Abschnitt betrachten wir mit Hilfe von Lemma 9.1 die Suche nach dem schnellsten Pfad Q(p, S)
von einem beliebigen gegebenen Punkt p der Ebene zu einem der Bezugspunkte
ω ∈ S.
9.3
Die Pfadsuche
Sei die Quickest-Path-Map VC (S) für ein gegebenes Transportnetzwerk C und
eine Menge S von Bezugspunkten fertiggestellt und eine Quickest-Path-Anfrage
mit dem Anfragepunkt p gegeben. Die Suche nach dem schnellsten Pfad von p
nach S (und andersherum) erfolgt in drei Schritten:
1. Es wird die Region r der Quickest-Path-Map festgestellt, in der p liegt.
2. Es wird gegebenenfalls der schnellste Pfad von p zum definierenden Objekt
Def(r) von r gesucht.
3. Ausgehend von Def(r) wird der T -Pfad nach S festgestellt.
Während wir den dritten Schritt bereits im vorigen Abschnitt dargelegt haben, betrachten wir die ersten beiden Schritte in den folgenden Abschnitten. In
Abschnitt 9.3.3 beschreiben wir zusammenfassend einen Algorithmus zur Beantwortung einer Quickest-Path-Anfrage und zeigen dessen Korrektheit.
9.3 Die Pfadsuche
9.3.1
99
Point-Location
Wie in Abschnitt 3.5 dargelegt, stellen die Regionen der Quickest-Path-Map
Bereiche kombinatorisch äquivalenter schnellster Pfade zu S dar. Somit beginnt
die Suche des schnellsten Pfades für einen Anfragepunkt p damit, die Region
r zu finden, welche p enthält. Um die Region r ∈ VC (S) mit p ∈ r zu finden,
ist es also notwendig für p eine Point-Location in einer Partition der Ebene mit
O(c + n) Regionen, Knoten und Kanten durchzuführen. Für den Fall, dass p
genau auf einer Kante oder auf einem Knoten der Quickest-Path-Map liegt, sei
noch einmal angemerkt, dass es keine Rolle spielt, welcher der inzidenten Regionen p zugeordnet wird, da an solchen Orten verschiedene Teile der Wellenfront
zeitgleich auftreffen.
Die folgende Aussage ist eine bekannte Tatsache aus der algorithmischen
Geometrie und ist zum Beispiel in de Berg u. a. (2001) nachzulesen:
Fakt 9.1 (Point-Location) Für eine Partition der Ebene mit Komplexität
O(m) kann nach einer Laufzeit von O(m log m) eine Datenstruktur DPL erstellt
werden, welche einen Speicherbedarf von O(m) hat und Point-Location-Anfragen
mit einer Laufzeit von O(log(m)) beantwortet.
Point-Location stellt ein traditionelles Problem der algorithmischen Geometrie
dar. Es existiert eine Vielzahl von Ansätzen, welche jeweils zu den in Fakt 9.1
genannten Ergebnissen führen. Dabei werden nach de Berg u. a. (2001) die folgenden vier grundsätzlich verschiedenen Methoden unterschieden:
1. Die Chained-Method nach Edelsbrunner u. a. (1986), welche mit SegmentBäumen (siehe de Berg u. a. (2001)) und Fractional-Cascading (siehe dazu
Kapitel 11 sowie Chazelle und Guibas (1986a) und Chazelle und Guibas
(1986b)) arbeitet.
2. Die Methode der Triangulierungsverfeinerung nach Kirkpatrick (1983).
3. Die Nutzung von Persistenz nach Sarnak und Tarjan (1986).
4. Die randomisiert-inkrementelle Methode nach Mulmuley (1990).
Da Point-Location nicht zentraler Punkt dieser Arbeit ist, wird auf eine detaillierte Betrachtung möglicher Techniken an dieser Stelle verzichtet und auf die
genannten Referenzen verwiesen. Als direktes Resultat von Fakt 9.1 halten wir
die folgende, unserer Problematik entsprechende Beobachtung fest:
Beobachtung 9.3 (Point-Location in VC (S)) Nach einer Vorverarbeitungszeit von O((c + n) log(c + n)) kann aus VC (S) eine Point-LocationDatenstruktur der Größe O(c + n) erstellt werden, mit der in einer Laufzeit von
O(log(c + n)) die Region r ∈ VC (S) mit p ∈ r bestimmt werden kann.
Da eine solche Point-Location-Datenstruktur DPL lediglich eine andere Darstellung der Quickest-Path-Map ist, jedoch dieselben Informationen enthält, bezeichnen wir DPL im Folgenden im Sinne der Übersichtlichkeit weiterhin als
Quickest-Path-Map VC (S). Im nächsten Abschnitt untersuchen wir, wie nach
erfolgter Point-Location für den Anfragepunkt p ∈ r der schnellste Pfad zum
definierenden Objekt Def(r) der Region r festgestellt wird.
100
9.3.2
Anfragen
Zum definierenden Objekt
Nachdem wir den Anfragepunkt p in
der Quickest-Path-Map lokalisiert haben, stellen wir nun den schnellsten
Pfad zu dem definierenden Objekt
epC
Def(r) der Region r fest, in der p sich
p
befindet. Sei für den Anfragepunkt p
r
eβ
also die (oder eine) Region r ∈ VC (S)
mit p ∈ r bekannt und wie in Abωi = dr
schnitt 6.4.2 jeder Region das entsprechende definierende Objekt zugeordnet. Das Problem, den schnellsten
Pfad von p zu Def(r) zu finden, ist
äquivalent zu dem in Beobachtung 9.2
gelösten Problem, den β-Kanten-Pfad
Abbildung 9.2: Der Pfad von p ∈ r zum einer β-Kante zu finden. Dies wird ofdefinierenden Objekt Def(r) ist ein β- fenbar, wenn man sich vorstellt, dass
Kanten-Pfad.
bei p ein hinreichend kleines Netzwerksegment epC (hellgrau) beginnt,
welches nicht vor dem Punkt p von der Wellenfront erreicht wird, siehe Abbildung 9.2. Da nach Abschnitt 6.4.2 für jede Region die Neigung ϕ der auszeichnenden Kanten der Wellenfront gespeichert ist, können wir somit entsprechend
Beobachtung 9.2 den schnellste Pfad von p nach Def(r) in konstanter Laufzeit
berechnen.
9.3.3
Der schnellste Pfad
Mit Hilfe der Ergebnisse aus den vergangenen Abschnitten können wir nun
einen Algorithmus angeben, der aus der Quickest-Path-Map den schnellsten
Pfad Q(p, S) von p nach S feststellt. Die Funktion Π.append(p) ist eine Methode des Objekts Π. Sie fügt an das Ende der Liste Π das Objekt p an.
Algorithmus 3 Ausgabe der Knoten des schnellsten Pfades von p nach S.
Anforderung: Datenstruktur VC (S), Anfragepunkt p
Ergebnis: kürzester Weg Π von p nach S
1: Π ← ∅
2: Π.append(p)
3: Finde mittels Point-Location in VC (S) die Region r ∈ VC (S) mit p ∈ r
4: Def(r) ← definierendes Objekt von r
5: vm ← mittlerer Knoten des β-Kanten-Pfads von p nach Def(r)
6: Π.append(vm )
7: Π.append(Def(r))
8: v ← Def(r)
9: solange v ∈
/ S führe aus
10:
v ← Nachfolger von v auf dem T -Pfad von Def(r) nach S
11:
Π.append(v)
12: ende
13: Gib als Antwort Π aus.
9.3 Die Pfadsuche
101
Satz 9.2 (Algorithmus 3) Für einen gegebenen Anfragepunkt p und eine gegebene Quickest-Path-Map der Komplexität O(c + n) gibt Algorithmus 3 die
Knoten eines schnellsten Pfads Q(p, S) von p nach S aus. Die Laufzeit beträgt
O(L + log(c + n)), wobei L die Anzahl ausgegebener Knoten ist. Der asymptotische Speicherbedarf ist identisch mit dem der Quickest-Path-Map.
Beweis. Wir beweisen zunächst die Laufzeit, anschließend die Korrektheit des
Algorithmus. Der Speicherbedarf ergibt sich direkt aus Fakt 9.1. Nach Abschnitt 9.3.1 kann Schritt 2 in einer Laufzeit von O(log(c + n)) durchgeführt
werden. Der β-Kanten-Pfad in Schritt 4 kann nach Beobachtung 9.2 in konstanter Zeit festgestellt werden. Die Schleife zwischen Schritt 8 und Schritt 11 wird
(L−1) mal durchlaufen, wobei L die Anzahl der Knoten des T -Pfads von Def(r)
nach S ist. Die Schleife endet nach Lemma 9.1 bei einem Knoten ωi ∈ S. Die
Schritte in der Schleife können durch die Verzeigerung der gerichteten Kanten
jeweils in konstanter Zeit durchgeführt werden. Alle restlichen Schritte können
ebenfalls in konstanter Zeit durchgeführt werden. Somit ergibt sich die angegebene Laufzeit.
Betrachtet man die Ausgabe Π von Algorithmus 3 in umgekehrter Reihenfolge, so erhält man zunächst einen schnellsten Pfad von S nach Def(r) und
somit den Pfad eines Punktes der Wellenfront. Der inverse β-Kanten-Pfad von
Def(r) zum Anfragepunkt p ist eine Fortsetzung dieses Pfades zu p, da Def(r)
definierendes Objekt der Region r ist, in der sich p befindet. Somit stellt der
zu Π inverse Pfad einen Pfad dar, den ein Punkt der Wellenfront von S nach p
nutzte. Nach Argumenten aus Abschnitt 3.3 stellt Π folglich einen schnellsten
Pfad Q(p, S) vom Anfragepunkt p zu einem der Bezugspunkte in S dar.
Kapitel 10
Analyse der Ergebnisse
In diesem Kapitel untersuchen wir die in dieser Arbeit beschriebenen Algorithmen und Datenstrukturen abschließend auf ihre asymptotische Laufzeit und
ihren Speicherbedarf. Dabei betrachten wir zunächst den Konstruktionsalgorithmus für die Quickest-Path-Map und anschließend den Anfragealgorithmus.
Anschließend betrachten wir einige potentielle Degeneriertheiten, welche auftreten können.
Abbildung 10.1 zeigt schematisch die Komponenten des Konstruktionsalgoi,j
rithmus. Die Lowest-Intersection-Datenstruktur DLI
bedient die Ähnlichkeitsj
i
klasse KS von Streifen sowie KK von Knotenstrahlen. Analog dazu bedient die
i,j
i
und KSj . Man beachte, dass
Ray-Shooting-Datenstruktur DRS
die Klassen KK
die in Abschnitt 8.3 dargelegte Aufteilung gewisser Datenstrukturen, welche erweiterte Segmente des Netzwerks speichern, nach der Geschwindigkeit auf den
Segmenten, nicht abgebildet ist. Nach Lemma 8.1 können wir diese jedoch bei
Laufzeit- und Speicherbedarfsberechnungen außer Acht lassen. Der Ergebnisi
sucht aus den sublokalen Vorhersagen der verschiedenen Lowest-Infilter DLI
tersection-Datenstrukturen, welche jeweils die Streifenklasse KSi sowie eine der
τ verschiedenen Klassen von Knotenstrahlen bedient, das nächste Ereignis aus
und gibt es als lokale Vorhersage an die globale Vorhersage weiter. Analoges gilt
i
für den Ergebnisfilter DRS
. In Abbildung 10.1 ist die Zeitkorrektur der Anfragen
(siehe Abschnitt 7.1.6) in den sublokalen Datenstrukturen integriert.
10.1
Konstruktion der Quickest-Path-Map
In diesem Abschnitt untersuchen wir komponentenweise die asymptotische Laufzeit und den Speicherbedarf des Konstruktionsalgorithmus der Quickest-PathMap. Dabei beginnen wir mit den sublokalen Vorhersagen. Orthogonale Bereichsanfragen sind ein weit verbreitetes Problem, und es wurde schon in den
jungen Jahren der algorithmischen Geometrie eine Vielzahl von Techniken entwickelt um sie schnell zu beantworten. Die in den Abschnitten 8.1 und 8.4
dargelegten Datenstrukturen nutzen einen 3- oder 4-dimensionalen Bereichsbaum, welcher eine recht verbreitete und übersichtliche Lösung darstellt. Ein
d-dimensionaler Bereichsbaum für m Objekte hat einen Speicherbedarf von
104
Analyse der Ergebnisse
Quickest-Path-Map
VC (S)
Objekte werden
abgehandelt
oder erzeugt
Eintragungen
Objekte werden
eingefügt
Wellenfront WS (t)
Änderungen
Auswertung des global vorhergesagten, nächsten Ereignisses
Globale
Vorhersagen
Transformation f
Technik von Eppstein und Erickson (1999)
(Satz 5.1)
Zeitkorrektur
Lokale Vorhersagen
Ergebnisfilter
1
DRS
1
DLI
2
DLI
σ
DLI
1,1
DLI
1,2
DLI
1,σ
DLI
2,1
DLI
τ,1
DLI
τ,2
DLI
τ,σ
DLI
Lowest-IntersectionDatenstrukturen
Sublokale
Vorhersagen
Objekte werden gelöscht
Konstruktionsdiagramm KV
1,1
DRS
2
DRS
τ
DRS
1,2
DRS
1,τ
DRS
σ,2
DRS
σ,τ
DRS
2,1
DRS
σ,1
DRS
Ray-ShootingDatenstrukturen
Abbildung 10.1: Die Konstruktion der Quickest-Path-Map.
10.1 Konstruktion der Quickest-Path-Map
d−1
105
d−1
O((m)(log m) ) und kann in einer Laufzeit von O((m)(log m) ) erstellt
werden (siehe zum Beispiel de Berg u. a. (2001)). Wie schon in Abschnitt 8.1
erwähnt, bedürfen Lösch- und Einfügeoperationen in einem AVL-Baum mit m
Objekten einer Laufzeit von O(log m) (inklusive der Zeit zum Balancieren).
d−1
Da Bereichsbäume aus AVL-Bäumen bestehen, und jedes Objekt in (log m)
AVL-Bäumen gespeichert ist, beträgt die Laufzeit zum dynamischen Einfügen
und Löschen von Objekten aus einem d-dimensionalen Bereichsbaum, welcher m
d
Objekte speichert, O((log m) ). Die Anfragezeit an einen solchen Baum beträgt
d
O((log m) ). Diese Ergebnisse sind von Lamoureux (1996) sowie Preparata und
Shamos (1993) umfassend dargelegt und bewiesen. Wir augmentieren jedoch Bereichsbäume wie in Abschnitt 8.8 angekündigt durch die Fractional-Cascadingd−1
Technik, wodurch sich die Konstruktionszeit auf O(m(log m)
log log m) red−1
duziert. Der Speicherbedarf beträgt O(m(log m) ), Lösch- und Einfügeoped−1
rationen benötigen eine Laufzeit von O((log m)
log log m), und Bereichsanfragen mit nur einem ausgegebenen Element können in einer Laufzeit von
d−1
O((log m)
log log m) beantwortet werden.
Im Zuge der Wellenfrontausdehnung erstellen wir unseren Bereichsbaum
rein dynamisch, das heißt, er speichert beim Start der Wellenfront keine Objekte. Dies bedeutet, dass die initiale Konstruktionszeit eines Bereichsbaumes vernachlässigt werden kann und nur die dynamischen Änderungen abgezählt werden müssen. Nach Korollar 3.1 fügen wir O(c + n) Objekte in den
Bereichsbaum ein. Die Anzahl der Löschoperationen lässt sich somit ebenfalls durch (c + n) beziffern. Unsere Bereichsbäume für Ray-Shooting- und
Lowest-Intersection-Anfragen haben nach Abschnitt 8.6 höchstens vier Stufen. Die asymptotische Laufzeit für die Aufrechterhaltung der Bereichsbäume
über den gesamten Konstruktionsprozess der Quickest-Path-Map beträgt somit
3
O((c + n)(log(c + n)) log log(c + n)). Der asymptotische Speicherbedarf eines
3
solchen Baumes beträgt O((c + n)(log(c + n)) ).
Der Ergebnisfilter, der die Ergebnisse der sublokalen Vorhersagen zu einer
lokalen Vorhersage zusammenfasst und an die globale Vorhersage weitergibt,
benötigt für jede Anfrage konstante Zeit, da für eine lokale Vorhersage nach
Lemma 6.5 nur eine konstante Anzahl sublokaler Ergebnisse vorliegt. Die asymptotische Laufzeit des Ergebnisfilters beträgt somit für eine Anfrage O(1).
Die globale Vorhersage benötigt nach Satz 5.1 zum Aufrechterhalten des nächsten Ereignisses für jede Einfügeoperation eine Laufzeit von
O(T (c + n) log (c + n)) und für jede Löschoperation eine Laufzeit von
2
O(T (c + n)(log(c + n)) ), wobei T (c + n) die Laufzeit für die Antwort einer Minimierungsanfrage (bestehend aus sublokaler und lokaler Anfrage) ist.
3
Dies ergibt bei T (c + n) = O((log(c + n)) log log(c + n)) + O(1) eine Lauf4
zeit von O((log(c + n)) log log(c + n)) pro Einfügeoperation beziehungsweise
5
O((log(c + n)) log log(c + n)) pro Löschoperation. Nach Korollar 3.1 treten
bei der Wellenfrontausdehnung O(c + n) Ereignisse auf. Weiterhin erzeugt
jedes Ereignis nach Abschnitt 3.3.3 jeweils eine konstante Anzahl von Änderungen an der Wellenfront, somit erfolgen insgesamt O(c + n) Einfüge- und
Löschoperationen an der Wellenfront. Die asymptotische Gesamtlaufzeit der
5
globalen Vorhersage beträgt somit O((c + n)(log(c + n)) log log(c + n)). Der
Speicherbedarf der globalen Vorhersage ist nach Satz 5.1 identisch mit dem der
3
Minimierungsanfragen und somit O((c + n)(log(c + n)) ).
106
Analyse der Ergebnisse
Die Verarbeitung jedes global vorhergesagten Ereignisses zieht neben den im
letzten Absatz erwähnten Einfüge- und Löschoperationen auch Änderungen an
der Wellenfront WS (t) und somit am Konstruktionsdiagramm KV nach sich,
sowie potentiell eine Eintragung in der Quickest-Path-Map VC (S). Da jedes Ereignis nach Abschnitt 3.3.3 Änderungen an der Wellenfront von konstantem Umfang erzeugt, besitzt jede der genannten Operationen jeweils einen konstanten
Umfang und somit konstante Laufzeit. Der Speicherbedarf der Wellenfront, der
Quickest-Path-Map und des Konstruktionsdiagramms beträgt nach Korollar 3.1
jeweils O(c + n). Die Zeitkorrektur der Anfragen und der in die MinimierungsDatenstrukturen eingefügten Objekte sowie die Transformation f benötigen offensichtlich jeweils nur eine konstante Laufzeit pro Objekt und haben somit
keine Auswirkungen auf die restlichen asymptotischen Berechnungen.
10.2
Das Ergebnis
In den letzten Kapiteln haben wir einen Algorithmus zur Erstellung der
Quickest-Path-Map skizziert und somit einen konstruktiven Existenzbeweis für
einen Algorithmus mit der im letzten Abschnitt dargelegten Laufzeit geliefert.
Zudem haben wir einen Algorithmus zur Pfadsuche in der Quickest-Path-Map
angegeben. Wir fassen nun das wesentliche Resultat dieser Arbeit zusammen:
Satz 10.1 (Schnellste Pfade) Für ein isothetisches Transportnetzwerk mit c
Kanten, einer konstanten Auswahl von Transportgeschwindigkeiten und einer
Menge S von n Bezugspunkten ist es möglich, in einer asymptotischen Laufzeit
5
von O((c+n)(log(c + n)) log log(c+n)) und bei einem Speicherbedarf von O((c+
3
n)(log(c + n)) ) eine Quickest-Path-Map für die City-Metrik zu erstellen, in der
Anfragen nach schnellsten Pfaden zu S in einer Laufzeit von O(L + log(c + n))
beantwortet werden, wobei L die Komplexität der Ausgabe ist.
Beweis. Die asymptotische Laufzeit der globalen Vorhersage übertrifft
nach Abschnitt 10.1 diejenige aller restlichen Komponenten des Konstruktionsalgorithmus. Die Laufzeit für die Aufrechterhaltung der globalen Prognose bei einer Löschoperation in einer vierstufigen Datenstruktur von
5
O((log(c + n)) log log(c + n)) dominiert die Laufzeiten der restlichen Operationen, welche für die globale Prognose notwendig sind. Bei O(c + n) Ereignissen (siehe Abschnitt 3.4) beträgt die asymptotische Laufzeit der Kon5
struktion somit O((c + n)(log(c + n)) log log(c + n)). Der Speicherbedarf von
3
O((c + n)(log(c + n)) ) ergibt sich aus den im letzten Abschnitt ausgeführten
Argumenten basierend auf Satz 5.1. Die Laufzeit einer Anfrage beträgt nach
Satz 9.2 O(L + log(c + n)).
Speichert man sukzessiv für jede Region der Quickest-Path-Map schon während des Konstruktionsprozesses den nächsten Bezugspunkt, von dem die auszeichnende Kante der Wellenfront ursprünglich herrührt, so ergibt sich aus
Satz 10.1 direkt das folgende Korollar:
Korollar 10.1 (Nächster Bezugspunkt) Die konstruierte Quickest-PathMap beantwortet Anfragen nach dem nächsten Bezugspunkt in einer Laufzeit
von O(log(c + n)).
10.3 Degeneriertheiten und Besonderheiten
10.3
107
Degeneriertheiten und Besonderheiten
In diesem Abschnitt betrachten wir einige technische Details des StraightSkeletons, welche zu degenerierten Situationen und Besonderheiten führen. Keine der im Folgenden angesprochenen Problematiken haben Auswirkungen auf
das Ergebnis dieser Arbeit, jedoch verdienen sie Erwähnung, da sie entweder
bei einer Implementierung beachtet werden müssen oder schlichtweg interessant
sind.
10.3.1
h-orientierte Straight-Skeletons
In Abschnitt 2.1 haben wir das
gewichtete Straight-Skeleton vorgee2
stellt, und im Verlaufe dieser Arbeit,
e3
insbesondere in Beobachtung 6.4, haben wir erarbeitet, dass die Kanten
v
der bei der Wellenfrontausdehnung
genutzten Figuren nur eine konstante
Anzahl verschiedener Steigungen besitzen können. Das Straight-Skeleton
Abbildung 10.2: Das Straight-Skeleton einer Figur, dessen Kanten nur h vereiner h-orientierten Figur ist nicht wohl- schiedene Steigungen besitzen können, wird h-orientiert genannt. Tatdefiniert.
sächlich gibt es ernste Probleme ein
h-orientiertes Straight-Skeleton überhaupt zu definieren.1 Man betrachte die
orthogonale Figur P in Abbildung 10.2. Alle Kanten außer der Kante e1 besitzen die Geschwindigkeit 1, und e1 wandert mit der Geschwindigkeit 2 nach
innen. Doch was passiert am Punkt v, an dem die Kante e2 durch ein Typ-CEreignis verschwindet und die Kanten e1 und e3 kollinear sind? Die Kante e1
bewegt sich weiter mit höherer Geschwindigkeit als e3 . Eine solche Situation
lässt sich vermeiden, indem man die P perturbiert, das heißt man verändert die
Figur geringfügig um die Orthogonalität von P aufzuheben. Jedoch führt dies je
nach Art und Weise des Perturbierens zu verschiedenen Ergebnissen. Wir können auf eine Lösung dieser Problematik an dieser Stelle verzichten, da in unserem Modell zwar in seltenen Fällen (siehe Abbildung 3.21) orthogonale Figuren
entstehen können, in diesen jedoch keine zwei parallele Seiten unterschiedliche
Geschwindigkeiten besitzen können. Dies ergibt sich aus Abschnitt 6.3, in dem
wir argumentieren, dass eine direkte Abhängigkeit zwischen der translationalen
Geschwindigkeit einer Kante und ihrer Steigung besteht.
e1
10.3.2
Simultane Ereignisse
Die im vergangenen Abschnitt erwähnte Abbildung 3.21 deutet an, dass Ereignisse durchaus simultan eintreten können. Dies ist offenbar auch durch eine
nicht degenerierte Ausgangssituation möglich. Abbildung 10.3 zeigt, wie parallel
aufeinandertreffende Kanten eines Straight-Skeletons in der Kante e enden. Drei
1 Dank
an Jeff Erickson für seine Anregung in dieser Sache.
108
Analyse der Ergebnisse
3
vW
v2
e2C
1
vC eC
e
r
1
vW
1
1
r2 v
r3
ωi
2
vW
Abbildung 10.3: Die Wellenfrontausdehnung endet in einer Kollision
von Kanten.
Abbildung 10.4: Spezielle gezogene
Kanten.
simultane Ereignisse sind hier zu behandeln: die beiden Seitenkanten verschwinden, und die beiden langen Kanten treffen in einem flachen Typ-D-Ereignis
aufeinander. Es bleibt der Implementation überlassen, wie solche Ereignisse gehandhabt werden. Es wäre auch denkbar Abbildung 10.3 als Spezialfall der in
Abbildung 3.9 aufgezeigten Situation zu behandeln. Ähnliches gilt für die Situation in Abbildung 3.10, wo an vC mehrere Typ-D- und Typ-A-Ereignisse
eintreten (die Typ-A-Ereignisse können auch als Typ-B-Ereignisse behandelt
werden).
10.3.3
Selbstständige gezogene Kanten
In Abschnitt 6.2 haben wir Skelettkanten in Pionier- und gezogene Kanten eingeteilt. Abbildung 10.4 zeigt zwei (beziehungsweise drei) interessante gezogene
3
Knotenstrahlen auf. Der Knotenstrahl vW
trennt die Regionen der Ebene, wel1
3
che über die beiden Segmente eC und e2C erreicht werden. Zwar ist vW
ein
gezogener Knotenstrahl, dennoch bewegt er sich entsprechend der City-Metrik,
da er ebensoschnell gezogen wird, und kann somit auch als Pionier-Knotenstrahl
angesehen werden.
Beim Knoten v1 des Straight-Skeletons entsteht eine weitere interessante
Situation. Die Fläche bestehend aus r1 , r2 und r3 ist aus der Sicht des Dachmodells eine durchlaufende Dachfläche, so dass intuitiv diese drei Regionen zusammengefasst werden können. Jedoch besitzen die Regionen r1 und r3 andere
definierende Elemente (Endpunkt von e1C und ω). Der Region r2 (links unten)
kann nun als definierendes Element entweder v 1 , ω oder sogar vC zugeordnet
1
2
werden, und dementsprechend also entweder der Knotenstrahl vW
oder vW
oder
sogar beide eingebaut werden. Wieder ist dies der Implementation überlassen,
da die resultierenden schnellsten Pfade gleiche Länge haben.
10.4 Der Einfluss von k
10.4
109
Der Einfluss von k
Bei der Untersuchung der asymptotischen Laufzeiten und des Speicherplatzes
haben wir implizit festgestellt, dass eine konstante Anzahl von Geschwindigkeiten auf dem Transportnetzwerk C keine Verschlechterung zur Folge hat. Dennoch verdient der Parameter k, der bislang schlichtweg als konstant angenommen wurde, einige Aufmerksamkeit. Mit einem gegebenen Wert k ergibt sich
Folgendes:
• Für Pionier-Knotenstrahlen gibt es (k + 1) Geschwindigkeiten und 4 Richtungen, und somit 4(k + 1) Klassen von Pionier-Knotenstrahlen.
• Für gezogene Knotenstrahlen sind somit 5 · 4 · (k + 1)2 Klassen möglich
(siehe Abschnitt 6.3).
• Kanten der Wellenfront haben eine von 2 · (k + 1) möglichen Steigungen
und durch die beiden begrenzenden Knotenstrahlen 4 · 52 · (k + 1)3 Ausbreitungsrichtungen.
• Da die Steigung und die Ausbreitungsrichtung einer Kante der Wellenfront unter anderem jeweils der Klasse der Pionier-Kante zugrunde liegen,
welche diese Kante erzeugt (siehe zum Beispiel Abschnitt 9.3.2), ist die
Anzahl von Streifenklassen ebenfalls 4 · 52 · (k + 1)3 .
• Für jede Kombination einer Klasse von Pionier-Knotenstrahlen und einer
Klasse von Streifen muss jeweils eine Ray-Shooting- und eine Lowest-Intersection-Datenstruktur bereitgestellt werden. Zwar gibt es Kombinationen
dieser Klassen, welche unnötig sind, zum Beispiel wenn die Knotenstrahlen
parallel zu den Streifen sind, doch die Anzahl der nötigen Datenstrukturen
kann mit 800 · (k + 1)4 nach oben abgeschätzt werden.
Zunächst erscheint diese Zahl sehr hoch, und dies selbst für kleinste Werte von k. Betrachten wir die notwendigen Datenstrukturen jedoch als ad-hocDatenstrukturen, welche erst bei Bedarf (in konstanter Zeit) erstellt werden, so
relativiert sich die genannte obere Schranke. Aus asymptotischer Sicht ist allerdings weiterhin nur eine konstante Anzahl von Datenstrukturen möglich. Es
sei angemerkt, dass individuelle Geschwindigkeiten auf Netzwerkkanten mit der
in dieser Arbeit vorgestellten Technik zur Konstruktion der Quickest-Path-Map
nicht vereinbar sind, da die Mengen der Ähnlichkeitsklassen dann nicht von
konstanter Größe wären, sondern abhängig von c. Dies wiederum zöge einen
Speicherbedarf von Θ(c(n + c)) nach sich, was unerwünscht ist.
Kapitel 11
Fazit
In diesem abschließenden Kapitel resümieren und diskutieren wir die Ergebnisse dieser Arbeit. Der vorgestellte Algorithmus erstellt die Quickest-Path-Map in
einer asymptotischen Laufzeit von O((c + n)polylog(c + n)) bei einem Speicherbedarf von O((c + n)polylog(c + n)). Anfragen nach schnellsten Pfaden zu S
werden mit Hilfe der Quickest-Path-Map in einer Laufzeit von O(L + log(c + n))
beantwortet werden, wobei L die Komplexität der Ausgabe ist, während eine
Voronoi-Anfrage nach dem nächsten Punkt (also ohne die Angabe des Pfades
zu diesem) durch einfache Point-Location in einer Laufzeit von O(log(c + n))
beantwortet werden kann.
Der Vergleich des vorgestellten Konstruktionsalgorithmus mit dem bisher
schnellsten Algorithmus, vorgestellt von Aichholzer u. a. (2002) und beschrieben in Abschnitt 2.3, zeigt, dass die Abhängigkeit der asymptotischen Laufzeit
von c um einen fast linearen Faktor verringert wurde. Zudem können mehrere Transportgeschwindigkeiten zugelassen werden. Der asymptotische Speicherbedarf ist wiederum um einen polylogarithmischen Faktor größer. Aichholzer u. a. erreichen mit ihrem Algorithmus eine asymptotische Laufzeit von
O(n log n + c2 log c) sowie linearen Speicherbedarf (man beachte, dass diese
Laufzeit für den Spezialfall c = O(1) geringer ist als die unseres Algorithmus).
Technisch unterscheiden sich die beiden Algorithmen wesentlich. Während Aichholzer u. a. nach einer relativ aufwendigen Initialisierung aller Figuren eine Reduktion auf gewöhnliche Voronoi-Diagramme nutzen, passen wir die Elemente
der Wellenfrontausdehnung an die Technik von Eppstein und Erickson (1999)
an, um die Quickest-Path-Map durch die sukzessive Vorhersage und Behandlung der nächsten Änderung an der kombinatorischen Gestalt der Wellenfront
(Ereignis) zu erstellen. Dazu erweitern wir den Prozess der Wellenfrontausdehnung zunächst um eine dritte Dimension und klassifizieren die ausgezeichneten
Flächen und die Knotenstrahlen. Durch diese Einteilung in Ähnlichkeitsklassen
ist es uns dann möglich, mit Hilfe einer konstant großen Menge speziell an die
jeweiligen Klassen angepasster Datenstrukturen Minimierungsanfragen in polylogarithmischer Laufzeit zu beantworten, wobei Lösch- und Einfügeoperationen
in diesen Datenstrukturen ebenfalls nur polylogarithmische Laufzeit benötigen.
Die globale Prognose wird mit den Antworten aus den Minimierungsanfragen
gespeist und liefert das nächste eintretende Ereignis. Da nach Korollar 3.1 die
112
Fazit
Anzahl der eintretenden Ereignisse linear ist in c + n, erfolgt nur eine lineare
Anzahl globaler Prognosen und daher auch nur eine lineare Anzahl von Aktualisierungen der Minimierungs-Datenstrukturen. Dadurch erreichen wir eine
subquadratische asymptotische Laufzeit für den beschriebenen Konstruktionsalgorithmus.
Das Modell der Wellenfrontausdehnung ist dem vorgestellten Algorithmus
und der Methode von Aichholzer u. a. (2002) gemein. Während jedoch Aichholzer u. a. eine Wellenfrontausdehnung lediglich bei der Durchführung der
kontinuierlichen Dijkstra-Methode zur Initialisierung der Netzwerkknoten (und
möglicherweise bei der Verwendung einer Technik zur Konstruktion abstrakter
Voronoi-Diagramme, siehe Abschnitt 2.3) nutzen, besteht unser Algorithmus im
Grunde ausschließlich aus einer sorgfältig durchgeführten, umfassenden Wellenfrontausdehnung.
11.1
Kritik
Dieser Abschnitt beleuchtet zwei Schwächen des vorgestellten Algorithmus. Der
superlineare Speicherbedarf ist offensichtlich suboptimal, da die Menge der
verschiedenen gespeicherten Objekte auch während der Konstruktion lediglich
O(c + n) beträgt (siehe Korollar 3.1). Während der Algorithmus von Aichholzer u. a. (2002) lediglich linearen Speicherbedarf hat, benötigt der von uns verwendete mehrdimensionale Bereichsbaum den etwas größeren Speicherplatz von
3
O((c + n)(log(c + n)) ) (siehe Kapitel 8).
Ein weiterer Kritikpunkt der vorgestellten Technik stellt der in Abschnitt 10.4 dargelegte Einfluss der Konstante k dar, der Anzahl verschiedener Transportgeschwindigkeiten. Zwar ist k als Konstante bei der Berechnung
der asymptotischen Laufzeit und des Speicherbedarfs irrelevant, betrachtet man
aber den Einfluss von k auf die Anzahl theoretisch möglicher Kombinationen
von Ähnlichkeitsklassen, so steigt die Menge benötigter Datenstrukturen und
somit auch der Speicherbedarf empfindlich mit k. Diese Abhängigkeit lässt die
genutzte Technik nur für sehr geringe Werte von k sinnvoll erscheinen. Wie in
Abschnitt 10.4 bereits angesprochen, würde eine Implementation des Algorithmus, welche ausschließlich benötigte Datenstrukturen erstellt, und nicht etwa
sämtliche mögliche Kombinationen aus Ähnlichkeitsklassen abdeckt, den Einfluss von k abmildern.
11.2
Anwendung und Anschauung
Mit der dreidimensionalen Interpretation des Straight-Skeletons und der
Quickest-Path-Map (Abschnitt 4.2) ist eine alternative Anschauung der betrachteten Situation denkbar. Man stelle sich vor, in einem Regenwald sei ein großer
Garten geplant. Mit dem Wissen, dass der Boden bei einem heftigen Regenguß
mit den Wassermengen überfordert ist, muss beim Anlegen des Gartens garantiert werden, dass Wasser stets abfließen kann. Bekannt sind einige Zugänge zum
Grundwasser, durch die Wasser abfließen kann. Auf gewöhnlichem Gartenboden
ist eine gewisse Neigung notwendig, damit Wasser abfließt ohne zu versickern.
11.3 Offene Probleme
113
In Rinnen, welche auf eine vorgegebene (optisch ansprechende) Art und Weise
angelegt werden, fließt das Wasser schneller ab, so dass je nach Material der Rinne (Stein, Lehm oder ähnliches) eine geringere Neigung notwendig ist, um ein
Abfließen zu sichern. Ein Landschaftsarchitekt könnte mit Hilfe des vorgestellten Algorithmus einen wunschgemäß vollständig drainagierten Garten planen,
in dem keinerlei Pfützen entstehen, und der zusätzlich insofern optimal ist, als
dass eine minimale Gesamthöhe des Terrains erreicht wird.
Betrachtet man eine Situation mit nur einem einzigen Bezugspunkt ω, so
verliert die Quickest-Path-Map zwar ihre Eigenschaft als Voronoi-Diagramm,
die Pfadsuche ist jedoch weiterhin gelöst. Die Funktion einen schnellsten Pfad zu
ω in einer Laufzeit von O(L + log c) zu finden, ist ein Spezialfall des Ergebnisses
dieser Arbeit. Eine Quickest-Path-Map für c Netzwerksegmente und nur einen
5
Bezugspunkt kann in einer asymptotischen Laufzeit von O(c(log c) log log c)
3
mit einem Speicherbedarf von O(c(log c) ) erstellt werden. Basierend auf der
angewendeten Technik offenbart die Reduktion auf nur einen Bezugspunkt keine
wesentliche Vereinfachung des Algorithmus.
11.3
Offene Probleme
Das Ergebnis dieser Arbeit stellt durch das Erreichen einer subquadratischen
asymptotischen Laufzeit eine Verbesserung der bisherigen Ergebnisse dar. Dennoch stellt sich die Frage, ob es auch bei linearem Speicherbedarf möglich ist,
eine Quickest-Path-Map in subquadratischer Laufzeit zu konstruieren. Betrachtet man den Konstruktionsalgorithmus von Aichholzer u. a. (2002) (skizziert
in Abschnitt 2.3), so stellt sich die Frage, ob die in dieser Arbeit vorgestellte
Methode zur Simulation einer Wellenfrontausdehnung auch bei anderen Problemen mit entsprechenden Gegebenheiten (insbesondere der konstanten Anzahl
von Kollisionstypen) als Alternative zu der kontinuierlichen Dijkstra-Methode
in Frage kommt. Weiterhin besteht die offene Frage, ob es möglich ist, basierend auf den Ergebnissen dieser Arbeit einen Algorithmus zur Konstruktion
einer Quickest-Path-Map für nur einen Bezugspunkt zu erstellen, welcher eine
geringere asymptotische Laufzeit besitzt. Abschließend sei die Frage nach einem
Konstruktionsalgorithmus gestellt, dessen Speicherbedarf ohne eine wesentliche
Erhöhung der asymptotischen Laufzeit weniger empfindlich gegenüber der Konstanten k ist.
11.4
Wegpunkte dieser Arbeit
In den sieben Monaten, in denen diese Arbeit entstanden ist, gab es eine Vielzahl
von hartnäckigen Problemen und Durchbrüchen, von denen einige eine Erwähnung verdienen.
Zunächst wurde lediglich das spezielle Problem für einen Bezugspunkt (n =
1) betrachtet. Dabei schien es zu Beginn der Arbeit recht einfach, durch eine
Partition der Ebene Ereignisse der Typen A und B vorherzusagen. Diese Partition wurde nur mit Hilfe eines Sweep-Line-Algorithmus über das Netzwerk erstellt
und für Point-Location genutzt. Ereignisse des Typ C konnten ebenfalls einfach
114
Fazit
vorhergesagt werden, nicht jedoch Typ-D-Ereignisse. Besondere Schwierigkeiten
bereitete die Erkennung von Inseln ohne enthaltene Netzwerksegmente, da auf
diese bekannte Techniken für Straight-Skeletons angewendet werden können.
Erst der Versuch die Technik von Eppstein und Erickson (1999) zu verwenden, vermochte Typ-D-Ereignisse in einer gewünschten Laufzeit vorherzusagen,
vorausgesetzt die entsprechenden Miniminierungsanfragen würden ausreichend
schnell beantwortet. Die Minimierungsanfragen legten es nahe bekannte RayShooting-Methoden zu verwenden, ohne jedoch die gewünschte Laufzeitverbesserung zu erzielen. Die Einteilung der Elemente der Wellenfront in einander
ähnliche, dreidimensionale Objekte, ermöglichte es nun, sämtliche Ereignistypen
zusammenzufassen und die alten Ansätze dementsprechend zu verwerfen. Dies
machte den Algorithmus erheblich übersichtlicher. Zudem ließ die Erstellung der
Ähnlichkeitsklassen hoffen, die Minimierungsanfragen durch eine Anpassung zu
beschleunigen.
Die Modellierung der Streifen bereitete erhebliche Probleme, insbesondere
in Verbindung mit deren erwünschter “Bescheidenheit“. Würden Streifen nicht,
wie in Abschnitt 6.5.1 beschrieben, lediglich eine Region abdecken, welche sie
bei ungehinderter Ausbreitung tatsächlich erreichen würden, so könnte nicht
garantiert werden, dass virtuelle Ereignisse gänzlich implizit vermieden werden.
Insbesondere stellten dabei die Typ-4-Streifen eine Hürde für die gewünschte
Vereinfachung der Minimierungsanfragen dar, denn sie lassen sich nicht orthogonalisieren. Durch die Idee der Ψ-Achse wurde dieses letzte Problem schließlich
beseitigt.
Bei der Untersuchung der Virtualität und der Relevanz von Ereignissen wurde dann klar, dass Lowest-Intersection-Datenstrukturen falsche Ergebnisse liefern, da sie mit Fußpunkten von Knotenstrahlen rechneten. Die intuitiv etwas
verwirrende Zeitkorrektur überwand letztendlich auch dieses Hürde.
Erst gegen Ende der Arbeit an dem Konstruktionsalgorithmus wurde offenbar, dass die verwendeten Techniken die Einschränkung auf nur einen Bezugspunkt nicht weiter notwendig machten. Eine Verallgemeinerung auf mehrere Bezugspunkte wurde dann in kurzer Zeit untersucht und eingebunden. Die
Übertragung des Algorithmus auf eine Menge von Bezugspunkten steigerte den
Wert dieser Arbeit letztendlich noch einmal erheblich.
11.4 Wegpunkte dieser Arbeit
115
2
2
2
4
2
2
3
4
4
2
2
3
3
3
4
2
4
2
2
2
3
2
3
Abbildung 11.1: Eine komplexe Quickest-Path-Map für elf Bezugspunkte (dicke
Punkte) und 23 Netzwerksegmenten (dicke Linien, mit Geschwindigkeiten). Einzugsgebiete werden durch die gestrichelten Voronoi-Kanten eingegrenzt, während die gepunkteten Skelettkanten die Regionen von Punkten äquivalenter
schnellster Pfade bilden. Da keine zwei nicht abgehandelten Knotenstrahlen konvergieren und alle Netzwerksegmente bereits von der Wellenfront überstrichen
wurden, tritt jenseits des Rands der Zeichnung kein weiteres Ereignis mehr ein.
Somit sind auch die Randregionen abgehandelt und das Diagramm fertiggestellt.
Literaturverzeichnis
[Abellanas u. a. 2001] Abellanas, Manuel ; Hurtado, Ferran ; Icking, Christian ; Klein, Rolf ; Langetepe, Elmar ; Ma, Lihong ; Palop del Rı́o,
Belén ; Sácristan, Vera: Proximity problems for time metrics induced by
the L1 metric and isothetic networks. In: Actas de los IX Encuentros de
Geometrı́a Computacional. Universitat de Girona, 2001, S. 175–182. – URL
http://citeseer.ist.psu.edu/abellanas01proximity.html
[Agarwal und Matoušek 1994] Agarwal, Pankaj K. ; Matoušek, Jiřı́: On
Range Searching with Semialgebraic Set. In: Discrete Computational Geometry 11 (1994), S. 393–418
[Aichholzer u. a. 1995] Aichholzer, Oswin ; Alberts, David ; Aurenhammer, Franz ; Gärtner, Bernd: A Novel Type of Skeleton for Polygons. In:
Journal of Universal Computer Science 1 (1995), Dezember, Nr. 12, S. 752–
761. – URL http://www.jucs.org/jucs_1_12/a_novel_type_of
[Aichholzer und Aurenhammer 1998] Aichholzer, Oswin ; Aurenhammer,
Franz: Straight skeletons for general polygonal figures in the plane. In: Samoilenko, A. M. (Hrsg.): Voronoi’s Impact on Modern Sciences II. National
Academy of Science of Ukraine, 1998 (Proceedings of the Institute of Mathematics of the National Academy of Science of Ukraine 21), S. 7–21. – URL
http://www.cis.tugraz.at/igi/oaich/psfiles/aa-ssgpf-98.ps.gz
[Aichholzer u. a. 2002] Aichholzer, Oswin ; Aurenhammer, Franz ; Palop
del Rı́o, Belén: Quickest Paths, Straight Skeletons, and the City Voronoi
Diagram. In: Proc. 18th Symp. Computational Geometry, ACM Press, Juni
2002, S. 151–159. – URL http://www.cis.tugraz.at/igi/oaich/psfiles/
aap-qpssc-03.ps.gz
[Aurenhammer und Klein 2000] Aurenhammer, Franz ; Klein, Rolf: Voronoi Diagrams. Kap. 5, S. 201–290. In: Handbook of Computational Geometry. Amsterdam, the Netherlands : Elsevier Science, 2000. – URL
http://www.igi.tugraz.at/auren/
[Bronstein u. a. 2001] Bronstein, Ilja N. ; Semendjajew, Konstantin A. ;
Musiol, Gerhard ; Mühlig, Heiner: Taschenbuch der Mathematik. Thun
und Frankfurt/Main : Verlag Harri Deutsch, 2001
[Chazelle und Guibas 1986a] Chazelle, Bernard ; Guibas, Leonidas J.: Fractional Cascading: I. A Data Structuring Technique. In: Algorithmica 1 (1986),
Nr. 2, S. 133–162
[Chazelle und Guibas 1986b]
Chazelle, Bernard ; Guibas, Leonidas J.: Frac-
118
LITERATURVERZEICHNIS
tional Cascading: II. Applications. In: Algorithmica 1 (1986), Nr. 2, S. 163–191
[Cheng und Vigneron 2002] Cheng, Siu-Wing ; Vigneron, Antoine: Motorcycle graphs and straight skeletons. In: Proc. 13th Symp. Discrete Algorithms,
ACM and SIAM, Januar 2002, S. 156–165
[Cormen u. a. 2001] Cormen, Thomas H. ; Leiserson, Charles E. ; Rivest,
Ronald L. ; Stein, Clifford: Introduction to Algorithms. Zweite Edition. MIT
Press, 2001
[de Berg u. a. 2001] de Berg, Mark ; van Kreveld, Mark ; Overmars,
Mark ; Schwarzkopf, Otfried: Computational Geometry. Zweite Edition.
Springer Verlag, 2001
[Demaine u. a. 2000] Demaine, Erik D. ; Demaine, Martin L. ; Mitchell,
Joseph S. B.: Folding flat silhouettes and wrapping polyhedral packages: new
results in computational origami. In: Computational Geometry: Theory &
Applications 16 (2000), Mai, Nr. 1, S. 3–21
[Dijkstra 1959] Dijkstra, Edsger W.: A note on two problems in connexion
with graphs. In: Numerische Mathematik 1 (1959), S. 269–271
[Edelsbrunner u. a. 1986] Edelsbrunner, Herbert ; Guibas, Leonidas J. ;
Stolfi, Jorge: Optimal Point Location in a Monotone Subdivision. In: SIAM
Journal on Computing 15 (1986), Mai, Nr. 2, S. 317–340
[Eppstein 1995] Eppstein, David: Dynamic Euclidean Minimum Spanning
Trees and Extrema of Binary Functions. In: Discrete Computational Geometry
13 (1995), Nr. 1, S. 111–122
[Eppstein und Erickson 1999] Eppstein, David ; Erickson, Jeffrey G.: Raising Roofs, Crashing Cycles, and Playing Pool: Applications of a Data Structure for Finding Pairwise Interactions. In: Discrete Computational Geometry
22 (1999), Juni, Nr. 4, S. 569–592
[Gewali u. a. 1990] Gewali, Laxmi P. ; Meng, Alex C. ; Mitchell, Joseph S. ; Ntafos, Simeon: Path Planning in 0/1/Infinity Weighted Regions
with Applications. In: INFORMS Journal on Computing 2 (1990), Nr. 3,
S. 253–272
[Hurtado u. a. 1999] Hurtado, Ferran ; Palop del Rı́o, Belén ; Sacristán,
Vera: Diagramas de Voronoi con fonciones temporales. In: VIII Encuentros
de Geometrı́a Computacional 8 (1999), S. 279–287
[Kirkpatrick 1983] Kirkpatrick, David G.: Optimal search in planar subdivisions. In: SIAM Journal on Computing 12 (1983), Februar, Nr. 1, S. 28–35
[Klein u. a. 1993] Klein, Rolf ; Mehlhorn, Kurt ; Meiser, Stefan: Randomized incremental construction of abstract Voronoi diagrams. In: Computational
Geometry: Theory & Applications 3 (1993), Nr. 3, S. 157–184
[Lamoureux 1996] Lamoureux, Michael: A Dynamic Data Structure For
Multi-Dimensional Range Searching. Fredericton, New Brunswick, Canada,
University Of New Brunswick, Diplomarbeit, März 1996
[Lee 1982] Lee, Der-Tsai: Medial Axis Transformation of A Planar Shape.
In: IEEE Trans. Pattern Analysis and Machine Intelligence 4 (1982), Juli,
Nr. 4, S. 363–369
LITERATURVERZEICHNIS
119
[Lee und Papadopoulou 2001] Lee, Der-Tsai ; Papadopoulou, Evanthia:
the L∞ Voronoi Diagram of segments and VLSI applications. In: International Journal of Computational Geometry & Applications 11 (2001), Oktober,
Nr. 5, S. 503–528
[McCreight 1985] McCreight, Edward M.: Priority Search Trees. In: SIAM
Journal on Computing 14 (1985), Mai, Nr. 2, S. 257–276
[Mehlhorn u. a. 1991] Mehlhorn, Kurt ; Meiser, Stefan ; O’Dunlaing,
Colm: On the construction of abstract Voronoi diagrams. In: Discrete Computational Geometry 6 (1991), Nr. 3, S. 211–224
[Mitchell 1993] Mitchell, Joseph S. B.: Shortest paths among obstacles in
the plane. In: Proceedings of the ninth annual symposium on Computational
geometry, ACM Press, 1993, S. 308–317
[Mitchell u. a. 1987] Mitchell, Joseph S. B. ; Mount, David M. ; Papadimitriou, Christos H.: The discrete geodesic problem. In: SIAM Journal on
Computing 16 (1987), August, Nr. 4, S. 647–667
[Mitchell und Papadimitriou 1991] Mitchell, Joseph S. B. ; Papadimitriou,
Christos H.: The weighted region problem: finding shortest paths through a
weighted planar subdivision. In: Journal of the ACM 38 (1991), Nr. 1, S. 18–
73
[Mulmuley 1990] Mulmuley, Ketan: A fast planar partition algorithm. In:
Journal of Symolic Computation 10 (1990), September, Nr. 3, S. 253–280
[Ottmann und Widmayer 2001] Ottmann, Thomas ; Widmayer, Peter: Algorithmen und Datenstrukturen. Vierte Edition. Spektrum Akademischer
Verlag, 2001 (B.I. Hochschultaschenbücher: Reihe Informatik)
[Preparata und Shamos 1993] Preparata, Franco P. ; Shamos, Michael I.:
Computational Geometry: An Introduction. Fünfte Edition. Springer-Verlag,
1993
[Sarnak und Tarjan 1986] Sarnak, Neil ; Tarjan, Robert E.: Planar point
location using persistent search trees. In: Communications of the ACM 29
(1986), Juli, Nr. 7, S. 669–679
[Wille 1997] Wille, Detlef: Repetitorium der linearen Algebra Teil 1. Zweite
Edition. Binomi-Verlag, 1997
Index
β-Kante, 38
j-Nadeln, 48
Ähnlichkeitsklasse, 51
ähnlich, 51, 59
abgehandelt, 62
Abstandsfunktion, 21
Anfrage
lokale, 45
sublokale, 46
Anfragestrahlen, 82
Anfragestreifen, 82
balancierter Baum, 83
bedienen, 64, 67
Bereichsbaum, 83, 87, 88
Bezugspunkt, 1
Brücken, 92
Chained-Method, 99
City-Metrik, 20
City-Voronoi-Diagramm, 13
verfeinertes, 14, 95
Datenstruktur
Lowest-Intersection-, 82
Ray-Shooting-, 82
definierendes Objekt, 37, 60
Distanzstempel, 15
Drehung des Koordinatensystems,
69
Drehungsmatrix, 69
Einheitsgeschwindigkeit, 19
Einzugsgebiet, 13
Ereignis, 23
Typ-A-, 26
Typ-B-, 26
Typ-C-, 27
Typ-D-, 28
Ergebnisfilter, 92
Erweiterung, 41
Eulersche Polyederformel, 34
Figur, 11, 23
Fractional-Cascading, 90, 92, 99
Fußpunkt, 69
geodäsischen Pfadproblem, 3
Geschwindigkeit, 20
translationale, 57
Gewichtete-Regionen-Problem, 3
Grad eines Knotens, 20
Graph
inverser, 96
homothetisch, 35
homothetisches Zentrum, 35
Insel, 27
Interferenz, 51
Intervall-Kandidat, 15
isothetisch, 1, 19, 20
kanonische Untermenge, 84
Kante, 20
gezogene, 50, 96, 108
Pionier-, 50, 96, 108
Kern, 43
Knoten, 19
isolierter, 20
Knotenstrahl, 49
kombinatorisch äquivalent, 22
konkav, 9
Konstruktionsdiagramm, 14
kontinuierliche Dijkstra-Methode,
15, 113
Kreis, 21
L1 -, 23
City-Metrik-, 21
Kreisscheibe, 29
Länge, 20
Lebenszeit, 50
122
linkshändig, 71
Lowest-Intersection-Anfrage,
44, 82
INDEX
43,
Manhattan-Abstand, 97
Metrik
Lp , 3
Abstandsmetrik, 4
City-, 2, 21, 97
euklidische, 3
induzierte, 21
Manhattan, 21
Manhattan-, 23
Minimierungsanfragen, 45
Mittelachse, 13
Mittelpunkt, 21
monoton, 9
Nachfolger, 35
Norm
L1 -, 1, 19, 21
euklidische, 21, 52
orientiert
h-, 107
orthogonale Bereichsanfrage, 65, 86
Partition, 9
Persistenz, 99
perturbieren, 107
Pfad, 20
T -, 98
β-Kanten-, 97
Te-, 96
schnellster, 19, 20, 98, 106
Pfadkodierung, 37
Pfadsuche, 98
Point-Location, 99
Polygon
gewichtetes, 10
Polygonzug, 20
primärer Zugangspunkt, 15
Prioritätsschlange, 15
Priority-Search, 93
Prognose
globale, 44
lokale, 45, 82
sublokale, 82
Quelle, 15, 96
Quickest-Path-Anfrage, 1
Quickest-Path-Graph, 96
Quickest-Path-Map, 1, 14, 95
Radius, 21
randomisiert-inkrementell, 99
Randregionen, 33
Ray-Shooting-Anfrage, 4, 44, 82
rechtshändig, 71
redundant, 34
redundante Figur, 31
redundantes Ereignis, 31
relevante Figur, 33
relevantes Ereignis, 31, 33
Richtungskosinus, 69
Rotation, 83
Scherung, 67, 71, 73–75
Schräge, 80
Schrumpfprozess, 9
Segment, 20
Segment-Bäume, 99
Senke, 96
simultan, 107
Skelettkante, 11, 50
Speicherbedarf
superlinearer, 112
Spitzen, 77
Straight-Skeleton, 4, 9
Streifen, 56
Streifentyp, 61, 80
sublokal, 82
Suchbaum
AVL-, 83
balancierter binärer, 83, 88
Sweep-Line-Algorithmus, 15, 113
Trajektorie, 78
Transformation, 60
Transportnetzwerk, 19
Triangulierungsverfeinerung, 99
Unterbaum, 84
virtuelle Figur, 30
virtuelles Ereignis, 30
Voronoi-Diagramm, 13
Lp -, 3
Airlift-, 3
Voronoi-Kante, 14
Wellenfront, 11
INDEX
Wellenfrontausdehnung, 4, 11
Winkelhalbierende, 9
wohldefiniert, 107
Wurzel, 15
zeitkorrigiert, 77
Zeitstempel, 15
Zykel, 24
123
Herunterladen