Geometrische Algorithmen Segmentschnitt

Ähnliche Dokumente
Geometrische Algorithmen

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

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

Punkt-in-Polygon-Suche Übersicht

Geometrische Algorithmen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

7. Sortieren Lernziele. 7. Sortieren

Datenstrukturen & Algorithmen

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

2.7.1 Inside-Test Konvexe Hülle Nachbarschaften Schnittprobleme

Geradenarrangements und Dualität von Punkten und Geraden

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

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

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

Datenstrukturen. einfach verkettete Liste

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

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

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

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

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

13. Binäre Suchbäume

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

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

Binärbäume: Beispiel

6. Algorithmen der Computer-Geometrie

Algorithmen und Datenstrukturen Balancierte Suchbäume

Übung zur Vorlesung Algorithmische Geometrie

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

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

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

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

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

Vektorgeometrie. 1. Vektoren eingeben, Norm, Skalarprodukt. 2 In einem kartesischen Koordinatensystem sind die Vektoren. , v. und. gegeben.

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

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

Geometrie 1. Christian Bay Christian Bay Geometrie / 46

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

Grundlagen: Algorithmen und Datenstrukturen

13. Bäume: effektives Suchen und Sortieren

4 Greedy-Algorithmen (gierige Algorithmen)

Copyright, Page 1 of 8 AVL-Baum

4. Kreis- und Wegeprobleme Abstände in Graphen

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

ADS: Algorithmen und Datenstrukturen 2

Datenstrukturen und Algorithmen

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

Algorithmen & Komplexität

Programmiertechnik II

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

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

Informatik II, SS 2014

Vorlesung Datenstrukturen

Teil III. Komplexitätstheorie

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

1. Übungsblatt zu Algorithmen II im WS 2011/2012

Nachtrag zu binären Suchbäumen (nicht (nur) AVL Bäumen: Löschen von Elementen in binären Suchbäumen. 1. Fall: zu löschendes Element ist Blatt: löschen

Informatik II, SS 2014

Algorithmen II Vorlesung am

Isomorphie von Bäumen

Kapiteltests zum Leitprogramm Binäre Suchbäume

Sortierverfahren für Felder (Listen)

3.6 Einführung in die Vektorrechnung

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Quicksort ist ein Divide-and-Conquer-Verfahren.

Klausur Informatik B April Teil I: Informatik 3

8 Diskrete Optimierung


Algorithmen und Datenstrukturen

Kap. 4.2: Binäre Suchbäume

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

4.4.2 Virtuelles Hashing Erweiterbares Hashing Das Gridfile Implementation von Hashverfahren in Java

14. Rot-Schwarz-Bäume

11.1 Grundlagen - Denitionen

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

11. Elementare Datenstrukturen

Übung: Algorithmen und Datenstrukturen SS 2007

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

Konvexe Hülle. Konvexe Hülle. Mathematik. Konvexe Hülle: Definition. Mathematik. Konvexe Hülle: Eigenschaften. AK der Algorithmik 5, SS 2005 Hu Bin

Triangulierung von einfachen Polygonen

Übung Algorithmen I

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Klausur Algorithmen und Datenstrukturen

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)