Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

Slides:



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

Schnelle Matrizenoperationen von Christian Büttner
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann.
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 Geoinformation II Vorlesung In welcher Masche liegt der Punkt p?
Theorie und Praxis geometrischer Algorithmen
BSP Binary Space Partitioning
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.
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
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)
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
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.
Diskrete Mathe II Übung
Algorithmische Probleme in Funknetzwerken IV
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 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.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
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.
3D-GIS I Simpliziale Komplexe Kerstin Herms.
Einführendes Beispiel
Graph – basierte Routenplanung versus Geometrische Routenplanung
Institut für Kartographie und Geoinformation Dipl.-Ing. J. Schmittwilken Diskrete Mathe II Übung
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung 4 4. Mai 2000 Voronoi-Diagramm.
Vorlesung April 2000 Polygon Overlay
Musterlösung zur Klausur "Diskrete Mathematik" vom
Diskrete Mathematik II
Vorlesung AVL-Bäume/Algorithmen-
Vorlesung AVL-Bäume/Algorithmen-
Punkt-in-Landkarte II
 Präsentation transkript:

Geoinformation II 6. Sem. Vorlesung April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier - Projekt

2 Übersicht über das Semester was ist „GIS 2“? –Funktionen von GIS Algorithmen in GIS effiziente Berechnung –Speicherung räumlicher Objekte in GIS effiziente Suche GIS 1 = Modelle für GIS Welt  Modell GIS 2 = Modell  Rechner 2 große Algorithmen –Overlay von Netzen und Flächen (Segmentschnitt) –räumliche Nachbarschaft Voronoi-Diagramm, Delaunay- Triangulation

3 Organisation 1 V 1 Ü 2 Optionen für „1Ü“ –Semesterprojekt: Java-Implementierung des Overlay- Algorithmus in Gruppenarbeit –Durcharbeiten der in der Vorlesung vorgestellten Algorithmen an Beispielen erfolgreiche Teilnahme –aktive Mitarbeit an Programmierprojekt –Test Teilnahmevoraussetzung für Klausur (Förstner)

4 Overlay von Netzen: –Fluß und Straßennetz: Brücken –Straßen und Eisenbahnnetz: Brücken, Tunnel –Problem: Schnitt von n geraden Linien-Segmenten von Landkarten (polygonalen Strukturen) –PLZ und Verkaufsbezirke –Gemeinden und Geologie –Problem: Segmentschnitt + Polygonkonstruktion –heute nur: Schnitt von n Segmenten

5 n-Segment-Schnitt einfaches Vorgehen: –paarweiser Vergleich:  s  S:  s‘  S - {s} überprüfe s und s‘ auf Schnittfreiheit und bestimme ggf. den Schnitt von s und s‘ Laufzeit: O(n 2 ) für die Praxis viel zu langsam Ziel: O(n * log n) harter und langer Kampf! erste Idee: betrachte horizontale Projektionen

6 Zur Erinnerung („Diskrete Mathematik“)  Groß-Oh-Notation Definition: wobei

7 Groß-Oh-Notation Beispiele:  O(log n)   O(n log n)   O(n 3 )   O(n)  ...  O(exp n)  O(1)  O(n 2 )  Inklusion:

8 Wachstum n² n log n

9 Hinreichende Bedingung für Schnittfreiheit notwendig für Schnitt: Überlappung der horizontalen Projektionen Reduktion einer 2-dimensionalen auf eine 1-dimensionale Fragestellung

10 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

11 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 –geordnete Menge der x-Koordinaten

12 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

13 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

14 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

15 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

16 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

17 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

18 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

19 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

20 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

21 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

22 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

23 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

24 Gegenbeispiel zu viele Elemente gleichzeitig aktiv  O(n 2 )

25 Nachbarschaft  - Umgebung A B

26 Verfeinerung des Algorithmus nur benachbarte Segmente betrachten wie erkennt man sehr schnell, ob zwei Segmente benachbart sind? Nutzung der Scan-Line –Betrachte die Schnittpunkte der aktiven Segmente mit der Scan-Line –Nachbarschaft ergibt sich aus der Lage der Schnittpunkte

27 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

28 Ordnung der Segmente durch die Scan-Line –  x< ist eine dynamische (!) 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 am Schnittpunkt s von a und b b  x< a –liefert eine vollständige eindimensionale Ordnung der aktiven Segmente... –... für jeden Haltepunkt der Scan-Line !

29 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4

30 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 A

31 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 A E

32 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 B E A

33 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 B D A E

34 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 B C A D E

35 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 B D C E

36 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 B E C D

37 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 F C B E D

38 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 B C F E D

39 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 B C F E

40 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 C E F

41 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 C F E

42 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4 C

43 Verwaltung der aktiven Elemente A B F C D E S1S1 S3S3 S2S2 S4S4

44 Wann wird der Schnittpunkt S 1 erkannt? A S1S1 Übung: Wird ein Schnittpunkt stets genau einmal erkannt? C D E B

45 Vereinfachende Annahmen Annahme 2 Segmente schneiden sich höchstens in einem Punkt in keinem Punkt schneiden sich mehr als 3 Segmente die x-Koordinaten aller Segmente sind paarweise verschieden kein Segment ist vertikal Gegenbeispiel

46 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)

47 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

48 Prüfung auf Schnittfreiheit 1. Idee –Berechnung der Geradengleichungen g und g‘ der Segmente s und s‘ –Schnittpunkt p von g und g‘ –prüfe ob p in s und s‘ Problem –vertikale Segmente –Vermeidung unangenehmer Sonderfälle

49 Segmentschnitt I g1g1 g2g2 c) g2g2 g1g1 b) g1g1 g2g2 a)

50 Segmentschnitt II Reduktion auf das Problem P 1, P 2 liegen auf der gleichen / verschiedenen Seiten der durch g induzierten Geraden Homogene Koordinaten: P 1 =(x 1,y 1,w 1 ) P 2 =(x 2,y 2,w 2 ) P=(x,y,w) D > 0 D < 0 D = 0 P P2P2 P1P1 s

51 Einfacher Segmentschnitt I S 1 = det ( P 1,P 3,P 4 )Def.:Vor.: Alle Determinanten sind  0: S 2 = det ( P 3,P 1,P 2 )g und g` schneiden sich genau dann, wenn S 1, S 2 S 3 = det ( P 2,P 3,P 4 )sowie S 3, S 4 jeweils verschiedene Vorzeichen S 4 = det ( P 4,P 1,P 2 )haben. P2P2 P1P1 P3P3 P4P4 P2P2 P3P3 P4P4 P1P1 g g` P2P2 P1P1 P3P3 P4P4

52 Einfacher Segmentschnitt II Wenn alle Determinanten gleich Null sind, dann folgt daraus, daß alle vier Punkte kollinear sind. - eine Determinante ist Null: => Algorithmus: Einsparen von Multiplikationen