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 4 04.05.00 Tiefen- und Breitendurchlauf geometrische.

Ähnliche Präsentationen


Präsentation zum Thema: "Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 4 04.05.00 Tiefen- und Breitendurchlauf geometrische."—  Präsentation transkript:

1 Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Tiefen- und Breitendurchlauf geometrische Algorithmen, Segmentschnitt

2 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Übersicht Abschluss Graph-Algorithmen –Tiefendurchlauf Beispiel rekursiver Algorithmus –Breitendurchlauf Beginn Geo-Algorithmen –Prüfung auf Schnittfreiheit –Heute: Schnitt zweier Segmente –Nächste Woche: Schnitt von n Segmenten

3 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Was ist neu In einem binären Baum hat jeder Knoten höchstens zwei Nachfolger, in einem Graphen beliebig viele Ein Baum ist immer zyklenfrei, ein Graph kann Zyklen enthalten (z.B. Do – Du – D – W im Beispiel) In einem Zyklus kann man unendlich viel Zeit verbringen Lösung: Faden der Ariadne (Quelle: Sagen des klassischen Altertums) Moderne Version: ein Boolescher Array „besucht“

4 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Tiefendurchlauf Do Ha W Du K D

5 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Tiefendurchlauf aktuell Do Ha W Du K D

6 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Tiefendurchlauf Do Ha W Du K D besucht

7 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Tiefendurchlauf

8 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Tiefendurchlauf kein Nachfolger - backtracking Do Ha W Du K D

9 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Tiefendurchlauf Do Ha W Du K D

10 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Do Ha W Du K D Tiefendurchlauf Alle Nachfolger sind bereits besucht

11 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Tiefendurchlauf Do Ha W Du K D

12 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Tiefendurchlauf Do Ha W Du K D

13 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Tiefendurchlauf Do Ha W Du K D

14 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Tiefendurchlauf Do Ha W Du K D

15 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Tiefendurchlauf Do Ha W Du K D

16 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Tiefendurchlauf Do Ha W Du K D

17 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Tiefendurchlauf als rekursiver Algorithmus tiefensuche(k) //Tíefendurchlauf vom Knoten k aus { if(besucht[k] == false) { drucke k; besucht[k] = true; for(jeder Nachfolger k i von k) { tiefensuche(k i ); } } }

18 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung class BST {... void Breitendurchlauf() { SohnListe ws = new SohnListe(); Knoten aktuell; ws.FügeAn(wurzel); while ((aktuell = ws.Entferne()) != null) { System.out.println(aktuell.GibWert()); ws.FügeAn(aktuell.GibLinks()); ws.FügeAn(aktuell.GibRechts()); }... } entferne Test auf Ende Breitendurchlauf (binärer Suchbaum)

19 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung class BST {... void Breitendurchlauf(k) { SohnListe ws = new SohnListe(); Knoten aktuell; ws.FügeAn(k); while ((aktuell = ws.Entferne()) != null) { System.out.println(aktuell.GibWert()); ws.FügeAn(aktuell.GibLinks()); ws.FügeAn(aktuell.GibRechts()); }... } Breitendurchlauf besucht[k] = true;

20 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung class BST {... void Breitendurchlauf(k) { SohnListe ws = new SohnListe(); Knoten aktuell; ws.FügeAn(k); besucht[k] = true; while ((aktuell = ws.Entferne()) != null) { System.out.println(aktuell.GibWert()); ws.FügeAn(aktuell.GibLinks()); ws.FügeAn(aktuell.GibRechts()); }... } Breitendurchlauf Verarbeiten eines Knotens

21 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung class BST {... void Breitendurchlauf(k) { SohnListe ws = new SohnListe(); Knoten aktuell; ws.FügeAn(k); besucht[k] = true; while ((aktuell = ws.Entferne()) != null) { System.out.println(aktuell.GibWert()); for(jeder Nachfolger k i von aktuell) { if(besucht[k i ] == false) { ws.FügeAn(k i ); besucht[k i ] = true; } } } }... } Breitendurchlauf

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

23 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Schnittpunktberechnung Gegeben: Endpunkte der Segmente Geradengleichung für zwei Punkte:

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

25 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Segmentschnitt I g1g1 g2g2 c) g2g2 g1g1 b) g1g1 g2g2 a)

26 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung 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) w = w 1 = w 2 = 1 x y P1P1 P2P2 P s D > 0 D < 0 D = 0

27 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung X Y Z Was wird durch die Determinante berechnet? x y P2P2 P1P1 P Vektoren spannen Parallelepiped auf 1

28 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Spatprodukt Das Spatprodukt ergibt einen Skalar, der zahlenmäßig gleich dem Volumen des von den drei Vektoren gebildeten Parallelepipeds ist; das Ergebnis ist positiv, falls, und ein Rechtssystem, negativ, falls sie ein Linkssystem bilden.

29 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung X Y Z 1 Rechts- oder Linkssystem? P2P2 P1P1 P Bilden ein Rechtssystem x y

30 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung X Y Z 1 Rechts- oder Linkssystem? P2P2 P1P1 P x y bilden ein Rechtssystem D > 0

31 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung X Y Z 1 Rechts- oder Linkssystem? P1P1 P2P2 P x y

32 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung X Y Z 1 Rechts- oder Linkssystem? P1P1 P2P2 P x y bilden ein Linkssystem D < 0

33 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung X Y Z 1 Rechts- oder Linkssystem? D = 0 Es wird kein Parallelepiped aufgespannt P1P1 P2P2 P x y

34 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung Einfacher Segmentschnitt I S 1 = det ( P 1,P 3,P 4 )Def.:Vor.: Alle Determinanten sind  0: S 2 = det ( P 2,P 3,P 4 ) g und g` schneiden sich genau dann, wenn S 1, S 2 S 3 = det ( P 3,P 1,P 2 )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

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


Herunterladen ppt "Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 4 04.05.00 Tiefen- und Breitendurchlauf geometrische."

Ähnliche Präsentationen


Google-Anzeigen