Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 5 SS 2001 Segmentschnitt II (n Segmente)

Ähnliche Präsentationen


Präsentation zum Thema: "Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 5 SS 2001 Segmentschnitt II (n Segmente)"—  Präsentation transkript:

1

2 Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 5 SS 2001 Segmentschnitt II (n Segmente)

3 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 52 Übersicht I Von 2 zu n Segmenten Vorgehen Reduktion von 2-dim auf 1-dim Was haben wir davon? Scan-Line-Verfahren Idee Scan-Line-Verfahren Ist das wirklich schon der tolle Algorithmus, den wir suchen? Gegenbeispiel

4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 53 Übersicht II Und nun? Nachbarschaft Ausnutzung der Nachbarschaft Ordnungsrelation x < Ordnung der Segmente durch die Scan-Line Scan-Line & dynamische Ordnung Zusatzfrage: Wann wird der Schnittpunkt S1 erkannt? Vereinfachende Annahmen Algorithmus Scan-Line Algorithmus (II)

5 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 54 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)

6 n² n log n

7 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 56 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?

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

9 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 58 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

10 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 59 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

11 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 510 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

12 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 511 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

13 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 512 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

14 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 513 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

15 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 514 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

16 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 515 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

17 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 516 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

18 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 517 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

19 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 518 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

20 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 519 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

21 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 520 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

22 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 521 Scan-Line-Verfahren A B F C D E S1S1 S3S3 S2S2 S4S4

23 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 522 Ist das wirklich schon der tolle Algorithmus, den wir suchen?

24 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 523 Gegenbeispiel zu viele Elemente gleichzeitig aktiv O(n 2 )

25 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 524 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

26 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 525 Nachbarschaft - Umgebung A B

27 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 526 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 <

28 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 527 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

29 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 528 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

30 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 529 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4

31 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 530 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 A

32 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 531 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 A E

33 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 532 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 B E A

34 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 533 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 B D A E

35 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 534 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 B C A D E

36 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 535 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 B D C E

37 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 536 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 B E C D

38 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 537 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 F C B E D

39 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 538 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 B C F E D

40 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 539 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 B C F E

41 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 540 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 C E F

42 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 541 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 C F E

43 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 542 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4 C

44 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 543 Scan-Line & dynamische Ordnung A B F C D E S1S1 S3S3 S2S2 S4S4

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

46 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 545 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

47 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 546 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)

48 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 547 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


Herunterladen ppt "Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 5 SS 2001 Segmentschnitt II (n Segmente)"

Ähnliche Präsentationen


Google-Anzeigen