Kapitel 7: Algorithmische Geometrie Gliederung 1 - fbi.h

Werbung
Kapitel 7: Algorithmische Geometrie
Gliederung
1.  Grundlagen
2.  Analyse der Laufzeit von Algorithmen
3.  Untere Schranken für algorithmische Probleme
4.  Sortier- und Selektionsverfahren
5.  Paradigmen des Algorithmenentwurfs
6.  Ausgewählte Datenstrukturen
7.  Algorithmische Geometrie
8.  Umgang mit algorithmisch schwierigen Problemen
• 
• 
7/2, Folie 1
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Das Sweep-Line-Paradigma
Andere Ansätze
Algorithmik
Kapitel 7: Algorithmische Geometrie
Anwendungen des Sweep-Line-Paradigmas
u  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
u  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
7/2, Folie 2
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 7: Algorithmische Geometrie
Schnittproblem für Liniensegmenten
u  Problemstellung
a
A
B
C
D
c
b E
F
7/2, Folie 3
gegeben:
Liniensegmente parallel zur x- und y-Achse
gesucht:
alle Paare von Liniensegmenten, die sich gegenseitig „schneiden“
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 7: Algorithmische Geometrie
Schnittproblem für Liniensegmente
... Problemgröße n – Anzahl der Liniensegmente
u  Problemstellung
a
A
B
C
D
c
b E
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.
7/2, Folie 4
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 7: Algorithmische Geometrie
Schnittproblem für Liniensegmente
u  ... triviale Lösung
a
A
B
C
D
c
b E
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)
7/2, Folie 5
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 7: Algorithmische Geometrie
Schnittproblem für Liniensegmente
u  ... 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
7/2, Folie 6
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 7: Algorithmische Geometrie
Schnittproblem für Liniensegmente
u  ... alternativer Ansatz
• 
• 
7/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 geschnitten werden
• 
die „Sich-Schneiden-Beziehung“ zwischen den blauen Liniensegmenten in der SSS mit dem roten Liniensegment, das die SL
gerade trifft, wird analysiert
• 
die „gewonnenen“ Einsichten werden ausgegeben
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 7: Algorithmische Geometrie
Schnittproblem für Liniensegmente
u  ... relevante Aufgaben
a
A
B
C
b E
D
c
F
(1)  die SL in „geeigneten Sprüngen“ über die Liniensegmente verschieben
(2)  die SSS „sinnvoll“ verwalten (/* ... geeignete Datenstruktur */)
(3)  „Einsichten“ über die Beziehung zwischen den blauen Liniensegmenten in
der SSS und dem gerade „getroffenen“ roten Liniensegment ableiten und
ausgeben
7/2, Folie 8
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 7: Algorithmische Geometrie
Schnittproblem für Liniensegmente
u  Aufgabe (1)
a
A
B
C
D
b E
c
F
• 
• 
• 
• 
7/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
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 7: Algorithmische Geometrie
Schnittproblem für Liniensegmente
u  Aufgabe (2)
a
A
B
C
D
b E
c
F
• 
• 
• 
7/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
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 7: Algorithmische Geometrie
Schnittproblem für Liniensegmente
u  Aufgabe (3)
a
A
B
C
D
b E
c
F
• 
7/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
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 7: Algorithmische Geometrie
Schnittproblem für Liniensegmente
u  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.
7/2, Folie 12
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 7: Algorithmische Geometrie
Schnittproblem für Liniensegmente
u  Eine Möglichkeit: 2-3-Bäume
• 
• 
• 
7/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
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 7: Algorithmische Geometrie
Schnittproblem für Liniensegmente
u  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
(/* mit Blick auf X‘ „aufpassen“)
7/2, Folie 14
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 7: Algorithmische Geometrie
Schnittproblem für Liniensegmente
u  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)
7/2, Folie 15
© 2016 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Herunterladen