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