Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Diskrete Mathematik II

Ähnliche Präsentationen


Präsentation zum Thema: "Diskrete Mathematik II"—  Präsentation transkript:

1 Diskrete Mathematik II
Vorlesung 4 Tiefen- und Breitendurchlauf geometrische Algorithmen, Segmentschnitt

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

18 Breitendurchlauf (binärer Suchbaum)
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()); } Test auf Ende entferne Lutz Plümer - Diskrete Mathematik II - SS Vorlesung

19 Breitendurchlauf 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()); } besucht[k] = true; Lutz Plümer - Diskrete Mathematik II - SS Vorlesung

20 Breitendurchlauf 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()); } Verarbeiten eines Knotens Lutz Plümer - Diskrete Mathematik II - SS Vorlesung

21 Breitendurchlauf 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 ki von aktuell) { if(besucht[ki] == false) { ws.FügeAn(ki); besucht[ki] = true; } } } } ... Lutz Plümer - Diskrete Mathematik II - SS Vorlesung

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

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

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

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

26 Segmentschnitt II y P2 P s P1 x Reduktion auf das Problem: D = 0
P1, P2 liegen auf der gleichen / verschiedenen Seiten der durch g induzierten Geraden Homogene Koordinaten: P1 = (x1,y1,w1) P2 = (x2,y2,w2) P = (x,y,w) w = w1 = w2 = 1 Lutz Plümer - Diskrete Mathematik II - SS Vorlesung

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

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

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

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

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

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

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

34 Einfacher Segmentschnitt I
P2 P1 P3 P4 P2 P3 P4 P1 g g` P2 P1 P3 P4 S1 = det ( P1,P3,P4) Def.: Vor.: Alle Determinanten sind  0: S2 = det ( P2,P3,P4) g und g` schneiden sich genau dann, wenn S1, S2 S3 = det ( P3,P1,P2) sowie S3, S4 jeweils verschiedene Vorzeichen S4 = det ( P4,P1,P2) haben. Lutz Plümer - Diskrete Mathematik II - SS Vorlesung

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 35


Herunterladen ppt "Diskrete Mathematik II"

Ähnliche Präsentationen


Google-Anzeigen