1 / 35

Diskrete Mathematik II

Diskrete Mathematik II. Vorlesung 4 SS 2001. Tiefen- und Breitendurchlauf, geometrische Algorithmen, Segmentschnitt I. Übersicht. Abschluss Graph-Algorithmen Tiefendurchlauf Beispiel rekursiver Algorithmus Breitendurchlauf Beginn Geo-Algorithmen Prüfung auf Schnittfreiheit

kaden-craft
Télécharger la présentation

Diskrete Mathematik II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Diskrete Mathematik II Vorlesung 4 SS 2001 Tiefen- und Breitendurchlauf, geometrische Algorithmen, Segmentschnitt I

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

  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 - 2. Semester - SS 2001 - Vorlesung 4

  4. Do Du Ha W D K Tiefendurchlauf Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  5. Do Du Ha W D K Tiefendurchlauf aktuell Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  6. Do Du Ha W D K Tiefendurchlauf besucht Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  7. Do Du Ha W D K Tiefendurchlauf Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  8. Do Du Ha W D K Tiefendurchlauf kein Nachfolger - backtracking Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  9. Do Du Ha W D K Tiefendurchlauf Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  10. Do Du Ha W D K Tiefendurchlauf Alle Nachfolger sind bereits besucht Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  11. Do Du Ha W D K Tiefendurchlauf Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  12. Do Du Ha W D K Tiefendurchlauf Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  13. Do Du Ha W D K Tiefendurchlauf Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  14. Do Du Ha W D K Tiefendurchlauf Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  15. Do Du Ha W D K Tiefendurchlauf Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  16. Do Du Ha W D K Tiefendurchlauf Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  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 - 2. Semester - SS 2001 - Vorlesung 4

  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 - 2. Semester - SS 2001 - Vorlesung 4

  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 - 2. Semester - SS 2001 - Vorlesung 4

  20. Verarbeiten eines Knotens 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()); } } ... } Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  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 - 2. Semester - SS 2001 - Vorlesung 4

  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 - 2. Semester - SS 2001 - Vorlesung 4

  23. Schnittpunktberechnung Gegeben: Endpunkte der Segmente Geradengleichung für zwei Punkte: Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  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 - 2. Semester - SS 2001 - Vorlesung 4

  25. g1 g2 g1 g2 g2 g1 c) b) a) Segmentschnitt I Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  26. y D = 0 D > 0 P2 P s D < 0 P1 x Segmentschnitt II • Reduktion auf das Problem: 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 - 2. Semester - SS 2001 - Vorlesung 4

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

  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 - 2. Semester - SS 2001 - Vorlesung 4

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

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

  31. Z x Y P1 P P2 1 y X Rechts- oder Linkssystem? Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

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

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

  34. P2 P2 P3 P2 P3 P4 P1 g P4 P4 g` P1 P1 P3 Einfacher Segmentschnitt I 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, S4jeweils verschiedene Vorzeichen S4 = det ( P4,P1,P2) haben. Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

  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 - 2. Semester - SS 2001 - Vorlesung 4

More Related