Kapitel 6: Algorithmische Geometrie Gliederung 1 - fbi.h

Werbung
Kapitel 6: Algorithmische Geometrie
Gliederung
1.
2.
3.
4.
5.
6.
6/2, Folie 1
Motivation / Grundlagen
Sortierverfahren
Elementare Datenstrukturen / Anwendungen
Bäume / Graphen
Hashing
Algorithmische Geometrie
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Kapitel 6: Algorithmische Geometrie
Anwendungen des Sweep-Line-Paradigmas
 Zentrale Problemstellung
bestimme alle Objekte in einer gegebenen Objektmenge S, die in einer
bestimmten Beziehung zu einem Objekt q stehen bzw. die eine bestimmte
Eigenschaft haben
 Beispiele
•
•
Schnittproblem für Liniensegmente
Inklusions- und Schnittproblem für Rechtecke
... betrachten nur den zweidimensionalen, iso-orientierten Fall, d.h. alle
Liniensegmente und Linien verlaufen parallel zu den Koordinaten-Achsen
6/2, Folie 2
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Kapitel 6: Algorithmische Geometrie
Schnittproblem für Liniensegmenten
 Problemstellung
a
A
B
C
b E
D
c
F
6/2, Folie 3
gegeben:
Liniensegmente parallel zur x- und y-Achse
gesucht:
alle Paare von Liniensegmenten, die sich gegenseitig „schneiden“
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Kapitel 6: Algorithmische Geometrie
Schnittproblem für Liniensegmente
... Problemgröße n – Anzahl der Liniensegmente
 Problemstellung
a
A
B
C
b E
D
c
F
gegeben:
Liniensegmente parallel zur x- und y-Achse (/* blau bzw. rot */)
gesucht:
alle Paare von Liniensegmenten, die sich gegenseitig „schneiden“
Für jedes blaue Liniensegment X bezeichnet X.x.l die x-Koordinate des linken
und X.x.r die x-Koordinate des rechten Endpunkts sowie X.y die y-Koordinate
aller Punkte des Liniensegments. Für jedes rote Liniensegment Y bezeichnet
Y.y.u die y-Koordinate des unteren und Y.y.o die y-Koordinate des oberen
Endpunkts sowie Y.x die x-Koordinate aller Punkte des Liniensegments.
6/2, Folie 4
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Kapitel 6: Algorithmische Geometrie
Schnittproblem für Liniensegmente
 ... triviale Lösung
a
A
B
C
b E
D
c
F
•
•
bestimme alle Paare (X,Y) blauer und roter Liniensegmente
teste für jedes Paar (X,Y), ob sich X und Y gegenseitig „schneiden“
... benötigt offenbar Zeit Ω(n2)
6/2, Folie 5
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Kapitel 6: Algorithmische Geometrie
Schnittproblem für Liniensegmente
 ... Anmerkung
... auch der „cleverste“ Algorithmus wird im „worst case“ die Zeit Ω(n2)
benötigen, da es (n/2)2 viele Paare sich schneidender Liniensegmente
geben kann
... wenn die Anzahl der Schnittpunkte nicht quadratisch in der Anzahl der
Liniensegmente ist, kann ein „cleverer“ Algorithmus effizienter sein
6/2, Folie 6
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Kapitel 6: Algorithmische Geometrie
Schnittproblem für Liniensegmente
 ... alternativer Ansatz
•
•
6/2, Folie 7
laß eine vertikale Sweep-Linie (SL) von links nach rechts über die
gegebene Menge von Liniensegmenten laufen
verwalte eine Sweep-Status-Struktur (SSS)
•
diese soll alle blauen Liniensegmente enthalten, die aktuell von der
SL aktuell geschnitten werden
•
die „Sich-Schneiden-Beziehung“ der blauen Liniensegmente in der
SSS mit dem roten Liniensegment, das die SL gerade trifft, wird
analysiert
•
die „gewonnenen“ Einsichten werden ausgegeben
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Kapitel 6: Algorithmische Geometrie
Schnittproblem für Liniensegmente
 ... relevante Aufgaben
a
A
B
C
b E
D
c
F
(1)
(2)
(3)
6/2, Folie 8
die SL in „geeigneten Sprüngen“ über die Liniensegmente verschieben
die SSS „sinnvoll“ verwalten (/* ... geeignete Datenstruktur */)
„Einsichten“ über die Beziehung zwischen den blauen Liniensegmenten in
der SSS und dem gerade „getroffenen“ roten Liniensegment ableiten und
ausgeben
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Kapitel 6: Algorithmische Geometrie
Schnittproblem für Liniensegmente
 Aufgabe (1)
a
A
B
C
D
b E
c
F
•
•
•
•
6/2, Folie 9
je blaues Liniensegment müssen sich die x-Koordinate des linken und die
x-Koordinate des rechten Endpunkts „gemerkt“ werden
je rotes Liniensegment müssen sich die „einheitliche“ x-Koordinate aller
Punkte „gemerkt“ werden
diese Punkte werden in einer aufsteigend sortierten Liste L gespeichert
die SL „besucht“ nacheinander die Elemente von L
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Kapitel 6: Algorithmische Geometrie
Schnittproblem für Liniensegmente
 Aufgabe (2)
a
A
B
C
D
b E
c
F
•
•
•
6/2, Folie 10
die SL trifft auf einen linken Endpunkt X.x.l eines blauen Liniensegments X
•
das Liniensegment X wird in die SSS aufgenommen
die SL trifft auf den rechten Endpunkt X.x.r eines blauen Liniensegments X
•
das Liniensegment X wird aus der SSS entfernt
die SL trifft auf ein rotes Liniensegment
•
SSS nicht ändern, aber Aufgabe (3) in Angriff nehmen
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Kapitel 6: Algorithmische Geometrie
Schnittproblem für Liniensegmente
 Aufgabe (3)
a
A
B
C
D
b E
c
F
•
6/2, Folie 11
die Sweep-Line trifft auf ein rotes Liniensegment
•
dann müssen alle blauen Liniensegmente in der SSS ausgegeben werden, die von diesem roten Liniensegment geschnitten
werden
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Kapitel 6: Algorithmische Geometrie
Schnittproblem für Liniensegmente
 Anforderungen an die Datenstruktur
•
Verwaltung von blauen Liniensegmenten, wobei die y-Koordinate der
blauen Liniensegmente die relevante Information ist
•
•
•
Einfügen eines blauen Liniensegments in die SSS
Entfernen eines blauen Liniensegments aus der SSS
zu einem roten Liniensegment Y, das die SL trifft, sind alle blauen
Liniensegmente X in der SSS zu bestimmen, die von Y geschnitten
werden
Ein blaues Liniensegment X wird von einem roten Liniensegment Y
geschnitten, wenn Y.y.u ≤ X.y ≤ Y.y.o gilt.
6/2, Folie 12
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Kapitel 6: Algorithmische Geometrie
Schnittproblem für Liniensegmente
 Eine Möglichkeit: 2-3-Bäume
•
•
•
6/2, Folie 13
in den Blättern sind die blauen Liniensegmente gespeichert
die blauen Liniensegmente sind den Blättern in aufsteigender
Reihenfolge bzgl. ihrer y-Koordinate von links nach rechts zugewiesen
die Blätter sind zusätzlich als doppelt verkettete Liste organisiert
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Kapitel 6: Algorithmische Geometrie
Schnittproblem für Liniensegmente
 Illustration
a
A
B
C
A.y
D
b E
c
E.y
F
F.y
A.y
E.y
C.y
A.y
... bestimme das blaue Liniensegment X in der SSS mit der kleinsten y-Koordinate
größer gleich Y.y.u
... bestimme das blaue Liniensegment X‘ in der SSS mit der größten y-Koordinate
kleiner gleich Y.y.o
... gib alle blauen Liniensegmente aus, die in der Liste zwischen X und X‘ liegen
6/2, Folie 14
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Kapitel 6: Algorithmische Geometrie
Schnittproblem für Liniensegmente
 Laufzeitanalyse (/* worst case */)
Aufgabe (1):
insgesamt in O(n*log(n))
(/* Sortieren */)
Aufgabe (2):
jeweils in O(1)
(/* Listenverwaltung */)
jeweils in O(log(n))
(/* 2-3-Baum */)
jeweils in O(log(n)) + O(k‘)
(/* Ableiten + Ausgeben */)
Aufgabe (3):
... also insgesamt in O(n*log(n)) + O(k)
6/2, Folie 15
© 2010 Prof. Steffen Lange
-
HDa/FbI
-
Datenstrukturen
Herunterladen