Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.