Geometrische Algorithmen Segmentschnitt

Ähnliche Dokumente
Geometrische Algorithmen Segmentschnitt

Geometrische Algorithmen Einige einfache Definitionen: Ist ein Punkt in einem Polygon? Punkt-in-Polygon-Problem. Das Punkt-in-Polygon-Problem

Geometrische Algorithmen

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Algorithmische Geometrie 3. Schnitte von Liniensegmenten

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Geometrische Datenstrukturen

Geometrische Algorithmen Voronoi-Diagramme. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Voronoi-Diagramme

Geometrische Algorithmen Punkt-in-Polygon-Suche. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

Algorithmische Geometrie: Schnittpunkte von Strecken

Voronoi-Diagramme INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Punkt-in-Polygon-Suche Übersicht

Geometrische Algorithmen

Mehrwegbäume Motivation

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Informatik II Prüfungsvorbereitungskurs

Voronoi Diagrams. Christian Wellenbrock. December 1, 2009

Punkt-in-Polygon-Suche Übersicht

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Wie wird ein Graph dargestellt?

Datenstrukturen & Algorithmen

ContainerDatenstrukturen. Große Übung 4

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Datenstrukturen und Algorithmen 2. Klausur SS 2001

2.7.1 Inside-Test Konvexe Hülle Nachbarschaften Schnittprobleme

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Geradenarrangements und Dualität von Punkten und Geraden

7. Sortieren Lernziele. 7. Sortieren

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Geradenarrangements und Dualität von Punkten und Geraden

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO

Algorithmen und Datenstrukturen 1

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

Datenstrukturen. einfach verkettete Liste

1 AVL-Bäume. 1.1 Aufgabentyp. 1.2 Überblick. 1.3 Grundidee

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (25 Sortieren vorsortierter Daten)

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Geometrie 1. Roman Sommer. Informatik 2 Programmiersysteme Martensstraße Erlangen

Übersicht. Rot-schwarz Bäume. Rot-schwarz Bäume. Beispiel. Eigenschaften. Datenstrukturen & Algorithmen. Rot-schwarz Bäume Eigenschaften Einfügen

Informatik II Vorlesung am D-BAUG der ETH Zürich

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

13. Binäre Suchbäume

Polygontriangulierung

Binärbäume: Beispiel

Geometrie I. Sebastian Redinger Informatik 2 Programmiersysteme Martensstraße Erlangen

Algorithmen und Datenstrukturen I Bruder-Bäume

Hallo Welt für Fortgeschrittene

Berechnung von Abständen

Algorithmen und Datenstrukturen Heapsort

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:

Algorithmen und Datenstrukturen Balancierte Suchbäume

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37

Füllen von Primitiven

Übung Algorithmen I

Punktlokalisierung. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

Grundlagen: Algorithmen und Datenstrukturen

Das Voronoi Diagramm. 1. Definition. 2. Eigenschaften. 3. Größe und Speicherung. 4. Konstruktion. 5. Verwendung

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

13. Bäume: effektives Suchen und Sortieren

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Geometrie 1. Christian Bay Christian Bay Geometrie / 46

Datenstrukturen & Algorithmen

Algorithmen und Datenstrukturen

Copyright, Page 1 of 8 AVL-Baum

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

Übung zur Vorlesung Algorithmische Geometrie

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Übung Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen D-INFK

6. Algorithmen der Computer-Geometrie

Teil VII. Hashverfahren

Vorlesung Datenstrukturen

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Grundlagen zur Delaunay-Triangulierung und zur konvexen Hülle. zum Begriff des Voronoi-Diagramms (vgl. auch Vorlesung "Algorithmische Geometrie"):

ADS: Algorithmen und Datenstrukturen 2

4 Greedy-Algorithmen (gierige Algorithmen)

Algorithmen & Komplexität

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

5. Bäume und Minimalgerüste

Algorithmen und Datenstrukturen 1 VL Übungstest WS 2010/ November 2010

Transkript:

Folie 1 von 36 Geometrische Algorithmen Segmentschnitt Folie 2 von 36 Segmentschnitt Übersicht Zwei Segmente! Lage zweier Segmente! Prüfung auf Schnittfreiheit! Formeln zum Geradenschnitt! Feststellen des Schnitts durch Prüfen der Punktlage! Sonderfälle n Segmente! Paarweiser Schnitt! Reduktion von 2-dim auf 1-dim! Verfahren des Scan-Line " Vorgehen " Beispiel/Gegenbeispiel " Ausnutzung der Nachbarschaft " Ordnungsrelation " Beispiel zur dynamischen Ordnung " Vereinfachende Annahmen " Formulierung des Algorithmus " Datenstrukturen

Folie 3 von 36 Zwei Segmente Einfacher Fall Folie 4 von 36 Zwei Segmente Lage

Folie 5 von 36 Zwei Segmente Prüfung auf Schnittfreiheit I Erste Idee:! Berechnung der Geradengleichungen g und g' der Segmente s und s'! Berechnung des Schnittpunkts p von g und g'! Prüfen ob p in s und s' Folie 6 von 36 Zwei Segmente Formeln Gegeben: Endpunkte der Segmente Geradengleichung für zwei Punkte

Folie 7 von 36 Zwei Segmente Prüfung auf Schnittfreiheit II Erste Idee:! Berechnung der Geradengleichungen g und g' der Segmente s und s'! Berechnung des Schnittpunkts p von g und g'! Prüfen ob p in s und s' Problem:! vertikale Segmente! Vermeidung unangenehmer Sonderfälle Folie 8 von 36 Zwei Segmente Lage und Schnitt

Folie 9 von 36 Zwei Segmente Formulierung des Grundproblems Reduktion auf das Problem: P3, P4 liegen auf der gleichen / verschiedenen Seiten der durch g induzierten Geraden Folie 10 von 36 Zwei Segmente Prüfen der Punktlage! Berechnung der Determinante! Vorzeichen der Determinante gibt Auskunft über die Lage des Punktes zur Geraden. Wir unterscheiden 3 Fälle: " D > 0: P liegt links von g " D < 0: P liegt rechts von g " D = 0: P liegt auf g

Folie 11 von 36 Zwei Segmente Prüfen aller Punktlagen Definition: Unter der Voraussetzung, dass alle Determinanten!= 0 sind, schneiden sich g und g' genau dann, wenn S1 und S2 sowie S3 und S4 jeweils verschiedene Vorzeichen haben Folie 12 von 36 Zwei Segmente Sonderfälle Wenn alle Determinanten gleich Null sind, dann folgt daraus, daß alle vier Punkte kollinear sind. Falls eine Determinante Null ist:

Folie 13 von 36 n Segmente Allgemeiner Fall 1x Folie 14 von 36 n Segmente Paarweiser Schnitt! Naheliegendes Vorgehen: Überprüfe jedes Paar von Segmenten! wende den zuvor skizzierten Algorithmus auf diese Paare an! Wie viele Paare gibt es? " Beispiel für NRW, Massstab 1:500.000* Schnitt der Kanten der Bahnstrecken mit dem Straßennetz: 8454 * 16934 = 143.160.036 "! geht es auch schneller?! optimal wäre O(n * log n) (so schnell wie Sortieren) * Quelle: ArcDeutschland 500, ESRI

Folie 15 von 36 n Segmente Weitere Überlegungen! Was wissen wir, was können wir ausnutzen? " Vermeidung unnötiger Berechnungen, deren Ergebnis durch systematische Überlegung gewonnen werden kann! Was ist eine besonders einfache Variante dieses Problems? " alle Segmente liegen auf einer Geraden ( x-achse) " eindimensionale Problemstellung Können wir die allgemeine (schwierige) Variante auf die spezielle (einfache) zurückführen? Folie 16 von 36 n Segmente Reduktion von 2-dim auf 1-dim Überlappung der horizontalen Projektionen ist notwendig, aber nicht hinreichend für einen Schnitt 3x

Folie 17 von 36 n Segmente Was bringt die Reduktion?! Nur Segmente, deren horizontale Projektionen sich überlappen, können sich auch schneiden! Man kann die Prüfung auf diese Segmente einschränken! Überprüfen aller Segmente durch sequentielles Vorgehen von links nach rechts ( Scannen )! Scan-Line Folie 18 von 36 n Segmente Verfahren Scan-Line

Folie 19 von 36 n Segmente Vorgehen Scan-Line! horizontale Scan-Line über die Ebene schieben " aktive Elemente: Schnitt mit der Scan-Line " nur aktive Elemente können horizontale Überschneidungen haben " überprüfe aktive Elemente auf Schnittfreiheit! Problem: Wo sind die Haltepunkte der Scan-Line? " Anfangspunkt eines Segments " Endpunkt eines Segments " interessant sind also die x-koordinaten der Anfangs- und Endpunkte! 1. Schritt: sortiere alle Punkte nach aufsteigenden x-koordinaten " anders ausgedrückt: sortiere die x-koordinaten und statte jede x-koordinate mit einem Verweis auf den zugehörigen Punkt aus Folie 20 von 36 n Segmente Beispiel Scan-Line 11x

Folie 21 von 36 n Segmente Gegenbeispiel Scan-Line Zu viele Elemente gleichzeitig aktiv: 2x Folie 22 von 36 n Segmente Weitere Überlegungen zum Scan-Line! Scannen allein reicht nicht! zu viele Elemente gleichzeitig aktiv! wir können uns an jedem Haltepunkt der Scan-Line maximal ein oder zwei (oder konstant viele) Tests erlauben! also müssen wir sparen...! und zusätzliches Wissen einspeisen! nur benachbarte Segmente können sich schneiden

Folie 23 von 36 n Segmente Nachbarschaft 3x Folie 24 von 36 n Segmente Ausnutzung der Nachbarschaft! wie definiert man Nachbarschaft...!... so, daß man sehr schnell erkennt, ob zwei Segmente benachbart sind?

Folie 25 von 36 n Segmente Was ist Nachbarschaft? Folie 26 von 36 n Segmente Ausnutzung der Nachbarschaft! wie definiert man Nachbarschaft...!... so, daß man sehr schnell erkennt, ob zwei Segmente benachbart sind?! Nutzung der Scan-Line " Betrachte die Schnittpunkte der aktiven Segmente mit der Scan-Line " ordne die Segmente nach den y-koordinaten ihrer Schnittpunkte mit der Scan-Line " nenne diese Ordnung

Folie 27 von 36 n Segmente Ordnungsrelation 6x Folie 28 von 36 n Segmente Ordnung der Segmente! ist eine partielle Ordnung...!... die nur auf der Menge der aktiven Elemente definiert ist! die Ordnung zwischen zwei Elementen wird an ihren Schnittpunkten umgedreht " aus wird am Schnittpunkt s von a und b " diese Ordnung ist natürlich eindimensional " und für die aktiven Elemente vollständig " sie ist abhängig vom Haltepunkt x der Scan-Line " diese Ordnung ist also dynamisch und hängt von x als Parameter ab! tun wir vorübergehend so, als hätten wir diese Ordnung "im Griff"

Folie 29 von 36 n Segmente Beispiel Dynamische Ordnung 18x Folie 30 von 36 n Segmente Zusatzfrage Scan-Line Wann wird der Schnittpunkt S1 erkannt? Übung: Wird ein Schnittpunkt ggf. mehr als einmal erkannt? 1x

Folie 31 von 36 n Segmente Scan-Line: Vereinfachende Annahmen Annahme:! 2 Segmente schneiden sich höchstens in einem Punkt! in keinem Punkt schneiden sich mehr als 2 Segmente! die x-koordinaten aller Segmente sind paarweise verschieden! kein Segment ist vertikal Folie 32 von 36 n Segmente Algorithmus Scan-Line Input: S: eine Menge von Segmenten Output: die Schnittpunkte der Elemente von S Sei: T = Endpunkte der Segmente von S nach x- Koordinaten sortiert (Haltepunkte) L = // aktive Segmente von S while T do bestimme und entferne den nächsten Punkt p T x ist x-koordinate von p case: p ist linker Endpunkt von s fuege_ein(s,x,l) sl = vorgaenger(s,x,l) sr = nachfolger(s,x,l) schnitt(sl,s,t); schnitt(s,sr,t); p ist rechter Endpunkt von s sl = vorgaenger(s,x,l) sr = nachfolger(s,x,l) entferne(s,x,l) schnitt(sl,sr,t) p ist Schnittpunkt von s und t vertausche(s,t,l,x) // t < s sl = vorgaenger(t,x,l) sr = nachfolger(s,x,l) schnitt(sl,t,t) schnitt(s,sr,t)

Folie 33 von 36 n Segmente Algorithmus Scan-Line - Methoden fuege_ein(s,x,l): entferne(s,x,l): nachfolger(s,x,l): vorgaenger(s,x,l): schnitt(s,t,t): offene Probleme: fügt das Segment s in die Menge L ein entsprechend der Ordnung an der Stelle x entfernt das Segment s aus die Menge L an der Stelle x liefert den Nachfolger von s in L an der Stelle x, falls vorhanden liefert den Vorgänger von s in L an der Stelle x, falls vorhanden prüft s und t auf Schnitt. Berechnet ggf. den Schnittpunkt p und fügt ihn als neuen Haltepunkt in T ein. eine geeignete Datenstruktur für T eine geeignete Datenstruktur für L Prüfung auf Schnitt, Berechnung des Schnittpunkts Folie 34 von 36 n Segmente Datenstrukturen für T und S! Datenstrukur für T " AVL-Baum " letztes Semester! was ist ein AVL-Baum " erstens ein Suchbaum " zweitens ausgeglichen! Datenstruktur für L " AVL-Baum? " Problem: "Vorgänger"und "Nachfolger" finden das wird vom AVL-Baum nicht unterstützt " also: Variante des AVL-Baums # alle Informationen sind in Blättern (nicht in inneren Knoten) # die Blätter bilden eine doppelt verkettete Liste

Folie 35 von 36 Datenstruktur Variante des AVL-Baums mit einer doppelt verketteten Liste der Blätter für die Menge der aktiven Elemente Folie 36 von 36 Datenstruktur für die Haltepunkte!...mit den Operationen " Einfügen eines gefundenen Schnittpunktes " Finden und Entfernen des nächsten (also minimalen) Elements...!... genügt ein normaler AVL-Baum! obwohl man mit Kanonen auf Spatzen schießt! besser: ein Heap (wie bei Dijkstra)