Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung 5 11.05.00.

Slides:



Advertisements
Ähnliche Präsentationen
Kap. 13 Sweep-Line Algorithmen Kap Schnittprobleme
Advertisements

WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Kapitel 6: Klassifizierung von Sortiertechniken
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Halbzeit: Kurze Wiederholung
Sortieren vorsortierter Daten
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
Geometrisches Divide and Conquer
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung Foliendesign: cand. geod. Jörg Steinrücken.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Übung Diskrete Mathematik SS 2003 Segmentschnitt I.
Institut für Kartographie und Geoinformation Dipl.-Ing. J. Schmittwilken Diskrete Mathe II Übung
Institut für Kartographie und Geoinformation Dipl.-Ing. J. Schmittwilken Diskrete Mathe II Übung
Diskrete Mathematik I Vorlesung 9b AVL-Baum, Algorithmen.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung In welcher Masche liegt der Punkt p?
Minimum Spanning Tree: MST
Theorie und Praxis geometrischer Algorithmen
Diskrete Mathe 9 Vorlesung 9 SS 2001
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 1 SS 2001 Algorithmus von Dijkstra.
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Diskrete Mathematik II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 8 SS 2000 Punkt-in-Polygon-Verfahren II (Trapezkarte)
Geoinformation II Vorlesung 2 SS 2001 AVL-Bäume.
Geoinformation II Vorlesung 4 SS 2001 Voronoi-Diagramme.
Konstruktion der Voronoi-Diagramme II
Geoinformation II (6. Semester)
Geoinformation II Vorlesung 3 SS 2001 Polygon Overlay.
Diskrete Mathematik II
Diskrete Mathematik II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 5 SS 2001 Segmentschnitt II (n Segmente)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 7 SS 2000 Punkt-in-Polygon-Verfahren I (Trapezkarte)
Effiziente Algorithmen
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Konstruktion der Voronoi-Diagramme I
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Gegenseitige Lage von Geraden Schnittpunktberechnung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 1 WS 2001/02 Punkt-in-Landkarte I (Streifenkarte)
Diskrete Mathematik II
Korrektheit von Programmen – Testen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 6 SS 2001 Segmentschnitt III.
Diskrete Mathematik II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Analyse der Laufzeit von Algorithmen
Diskrete Mathe II Übung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Vorlesung Einführendes Beispiel-
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd Foliendesign:
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Diskrete Mathe II Übung IKG - Übung Diskrete Mathe II – Jörg Schmittwilken 2 Übung5 Prüft, ob sich folgende Segmente schneiden: –P1(1/7) P2(3/1)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Suche des kürzesten Weges in einem Netz.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Voronoi-Diagramme.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd.
Geoinformation II 6. Sem. Vorlesung April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.
Institut für Kartographie und Geoinformation Dipl.-Ing. J. Schmittwilken Diskrete Mathe II Übung
Gliederung der Vorlesung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung 4 4. Mai 2000 Voronoi-Diagramm.
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren.
Vorlesung April 2000 Polygon Overlay
Diskrete Mathematik II
Vorlesung AVL-Bäume/Algorithmen-
Vorlesung AVL-Bäume/Algorithmen-
 Präsentation transkript:

Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung Segmentschnitt (n Segmente)

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Von 2 zu n Segmenten naheliegendes Vorgehen: überprüfe jedes Paar von Segmenten Wie viele Paare gibt es? –O(n 2 ) wende den zuvor skizzierten Algorithmus auf diese Paare an geht es auch schneller? optimal wäre O(n * log n) (so schnell wie Sortieren)

n² n log n

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Vorgehen 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?

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Reduktion von 2-dim auf 1-dim Überlappung der horizontalen Projektionen ist notwendig, aber nicht hinreichend für einen Schnitt

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Was haben wir davon? 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“

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Idee: 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

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Ist das wirklich schon der tolle Algorithmus, den wir suchen?

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Gegenbeispiel zu viele Elemente gleichzeitig aktiv  O(n 2 )

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Und nun? 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“

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Nachbarschaft  - Umgebung A B

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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 „  x <‘‘

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Ordnungsrelation „  x <‘‘ x x‘ B A C A  x < B A  x < C C  x‘ < A C  x < B A  x‘ < B C  x‘ < B

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Ordnung der Segmente durch die Scan-Line –  x< ist eine „partielle“ Ordnung... –... die nur auf der Menge der aktiven Elemente definiert ist –die Ordnung  x< zwischen zwei Elementen wird an ihren Schnittpunkten umgedreht aus a  x< b wird b  x< a 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“

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 A

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 A E

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 B E A

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 B D A E

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 B C A D E

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 B D C E

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 B E C D

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 F C B E D

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 B C F E D

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 B C F E

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 C E F

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 C F E

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 C

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Zusatzfrage: Wann wird der Schnittpunkt S 1 erkannt? A S1S1 Übung: Wird ein Schnittpunkt ggf. mehr als einmal erkannt? C D E B

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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 Gegenbeispiele

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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)

Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Algorithmus (II) fuege_ein(s,x,L): fügt das Segment s in die Menge L ein entsprechend der Ordnung an der Stelle x entferne(s,x,L): entfernt das Segment s aus die Menge L an der Stelle x nachfolger(s,x,L):liefert den Nachfolger von s in L an der Stelle x, falls vorhanden vorgaenger(s,x,L) liefert den Vorgänger von s in L an der Stelle x, falls vorhanden schnitt(s,t,T)prüft s und t auf Schnitt. Berechnet ggf. den Schnittpunkt p und fügt ihn als neuen Haltepunkt in T ein. offene Probleme: eine geeignete Datenstruktur für T eine geeignete Datenstruktur für L Prüfung auf Schnitt, Berechnung des Schnittpunkts