Algorithmen und Datenstrukturen

Ähnliche Dokumente
15. Elementare Graphalgorithmen

Lösungsvorschlag Hausübung 8

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

Das Heiratsproblem. Definition Matching

Effiziente Algorithmen

Algorithmen und Datenstrukturen

Institut für Programmierung und Reaktive Systeme 27. Mai Programmieren II. 12. Übungsblatt

Algorithmen und Datenstrukturen

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

Wie wird ein Graph dargestellt?

SS10 Effiziente Algorithmen 2. Kapitel: Graphdurchläufe

1 DFS-Bäume in ungerichteten Graphen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Diskrete Strukturen. Hausaufgabe 1 (5 Punkte) Hausaufgabe 2 (5 Punkte) Wintersemester 2007/08 Lösungsblatt Januar 2008

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume)

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37

2 Sortieren durch Vergleichen Eingabefolge a 1, a 2,..., a n 2, 1, 3 Sortieralg. Für festes n ist ein vergleichsbasierter Sortieralg. charakterisiert

Algorithmen und Datenstrukturen 2

Keller, Schlangen und Listen. Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14

10. Übungsblatt zu Algorithmen I im SS 2010

Zweizusammenhang und starker Zusammenhang

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Breitensuche BFS (Breadth First Search)

Weiterführendes Programmieren Lineare Widerstandsnetzwerke II Aufgabenblatt 6. 1 Zusammenfassung der elektrotechnischen Begriffe

10 Graphenalgorithmen in Java

NAME, VORNAME: Studiennummer: Matrikel:

Berechnung minimaler Spannbäume. Beispiel

Grundlagen: Algorithmen und Datenstrukturen

Tutoraufgabe 1 (Starke Zusammenhangskomponenten):

Teil 2: Graphenalgorithmen

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.

8 Diskrete Optimierung

Lösungen zu Kapitel 5

Einführung in die Informatik 2

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Quicksort ist ein Divide-and-Conquer-Verfahren.

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

11.1 Grundlagen - Denitionen

1 topologisches Sortieren

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Algorithmen und Datenstrukturen

Algorithmische Graphentheorie

5. Bäume und Minimalgerüste

Informatik II, SS 2014

Datenstrukturen. einfach verkettete Liste

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Verteilen von Bällen auf Urnen

Voronoi-Diagramme INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Algorithmen und Datenstrukturen

9. Übung Algorithmen I

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Approximationsalgorithmen

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Algorithmen und Datenstrukturen in der Bioinformatik Viertes Übungsblatt WS 05/06 Musterlösung

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Algorithmen und Datenstrukturen

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Esparza)

Einführung in die Informatik 2

ADS: Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2-1. Seminar -

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Klausur Algorithmen I

Kap. 6.3: Traversieren von Graphen Kap. 6.4: Elementare Graphalgorithmen

Sichtbarkeitsgraph. Andreas Gemsa Übung Algorithmische Geometrie

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Mayr)

Übungsblatt 2 - Lösung

4 Greedy-Algorithmen (gierige Algorithmen)

Wege, Pfade und Kreise

Algorithmen und Datenstrukturen SS09. Foliensatz 16. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Algorithmen und Datenstrukturen

durch Einfügen von Knoten konstruiert werden kann.

Algorithmen und Datenstrukturen

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)

Nachbarschaft, Grad, regulär, Inzidenz

Graphdurchmusterung, Breiten- und Tiefensuche

Graphen: Datenstrukturen und Algorithmen

WS 2009/10. Diskrete Strukturen

Transkript:

Algorithmen und Datenstrukturen Wintersemester 2012/13 22. Vorlesung Tiefensuche und Topologische Sortierung Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I

Vorlesungsumfrage Nutzen Sie die Vorlesungsbefragung zu konstruktiver Kritik! Von besseren Vorlesungen profitieren Sie (wenn Sie die nächste Veranstaltung bei mir hören) Ihre Nachfolger (im nächsten Wintersemester) ich (Gute Lehre macht Spaß! Gute Klausurergebnisse auch!)! Vielen Dank!

Tiefensuche Eingabe: Ausgabe: (un)gerichteter Graph G discovery time Besuchsintervalle ( ) (u.d/u.f ) DFS-Wald π u π v w 1/ 1/8 4/ 4/5 Klassifizierung der Graphkanten: Baumkanten (Kanten von G π ) Rückwärtskanten (R) finish time Kanten des DFS-Baums (in Gegenrichtung) Nicht-Baumkanten zu einem Vorgängerknoten V R 2/ 2/7 3/ 3/6 K x y z weiss grau 9/12 9/ 10/11 10/ R Farbe Zielknoten: Vorwärtskanten (V) Nicht-Baumkanten zu einem Nachfolgerknoten Kreuzkanten (K) Kanten, bei denen kein Endpunkt Vorgänger des anderen ist. schwarz und start.d < ziel.d schwarz und start.d > ziel.d

Tiefensuche Pseudocode DFS(Graph G = (V, E)) foreach u V do u.color = white u.π = nil time = 0 // globale Variable! foreach u V do if u.color == white then DFSVisit(G, u) DFSVisit(Graph G, Vertex u) time = time + 1 u.d = time; u.color = gray foreach v Adj[u] do if v.color == white then v.π = u; DFSVisit(G, v) time = time + 1 u.f = time; u.color = black u v w 1/8 V R 2/7 4/5 3/6 K x y z 9/12 10/11 R Laufzeit von DFS? DFSVisit wird nur für weiße Knoten aufgerufen. In DFSVisit wird der neue Knoten sofort gefärbt. DFSVisit wird für jeden Knoten genau 1 aufgerufen. DFS ohne if O(V ) Zeit DFSVisit ohne Rek. O(deg u) DFS gesamt O(V + E) Zeit

Tiefensuche Eigenschaften 3/6 y z s t 2/9 1/10 11/16 ( s 4/5 x 7/8 w ( z ( y (x x) y ) ( w w ) ) z 12/13 ) ( s t v ( ) ( ) v v u u 14/15 ) t u B y R x s t z v u V w K 1 2 5 10 15 time

Tiefensuche Sätze Satz. (Klammerntheorem) Nach DFS(G) gilt für {u, v} ( V 2) genau eine der Bedingungen (i) Besuchsintervalle disjunkt und Baumkanten enthalten weder u-v- noch v-u-weg. (ii) [u.d, u.f ] [v.d, v.f ] und Baumkanten enthalten v-u-weg. (iii) Wie (ii), nur umgekehrt. Beweis. Wir betrachten zwei Fälle. 1. Fall: u.d < v.d. A) v.d < u.f,. d.h. v wurde entdeckt, als u noch grau war. v ist Nachfolger von u, d.h. es gibt einen u-v-weg. Wegen u.d < v.d gilt: v wurde später als u entdeckt. alle Kanten, die v verlassen sind erforscht; v wird schwarz, bevor DFG zu u zurückkehrt und u schwarz macht. [v.d, v.f ] [u.d, u.f ]

Tiefensuche Sätze Satz. (Klammerntheorem) Nach DFS(G) gilt für {u, v} ( V 2) genau eine der Bedingungen (i) Besuchsintervalle disjunkt und Baumkanten enthalten weder u-v- noch v-u-weg. (ii) [u.d, u.f ] [v.d, v.f ] und Baumkanten enthalten v-u-weg. (iii) Wie (ii), nur umgekehrt. Beweis. Wir betrachten zwei Fälle. 1. Fall: u.d < v.d. 2. Fall: v.d < u.d. Symmetrisch! A) v.d < u.f. B) u.f < v.d. (Vertausche im Beweis u v.) Laut Code gilt u.d < u.f < v.d < v.f (siehe Code). [u.d, u.f ] [v.d, v.f ] = Keiner der beiden Knoten wurde entdeckt, während der andere noch grau war., d.h. keiner Nachf. des anderen.

Noch mehr Sätze! Satz. Satz. (vom weißen Pfad) Der DFS-Wald von G enthält einen u-v-weg zum Zeitpunkt u.d, wenn u entdeckt wird, enthält G einen u-v-weg, der nur aus weißen Knoten besteht. G ungerichtet G hat nur Baum- und Rückwärtskanten. Beweis. Sei uv (kurz für {u, v}) eine beliebige Kante von G. O.B.d.A. gilt u.d < v.d. Dann entdeckt DFS v und färbt v schwarz, bevor u schwarz gefärbt wird (da v Adj[u]). Falls DFS uv zum ersten Mal von u nach v überschreitet, ist v zu diesem Zeitpunkt weiss. Dann ist uv Baumkante. Andernfalls ist uv R-Kante, da u schon (und immer noch) grau ist, wenn uv zum 1. Mal überschritten wird (und zwar von v nach u).

Ablaufplanung Kante bedeutet: Unterhose vor Hose anziehen! 1/8 Hose Gürtel Unterhose Socken 19/20 Schuhe 2/7 3/4 Uhr 5/6 9/10 14/15 Schal T-Shirt 11/18 13/16 Anorak Pulli 12/17 Topologische Sortierung: Lineare Ordnung der Knoten, so dass aus (u, v) E folgt: u kommt vor v. DFS-Besuchsintervalle 19/20 Socken 11/18 T-Shirt 12/17 Pulli 13/16 Anorak 14/15 Schal Uhr 9/10 Unterhose 1/8 Hose 2/7 Gürtel 5/6 Schuhe 3/4

Topologisch sortieren Topologische Sortierung: Lineare Ordnung der Knoten, so dass aus (u, v) E folgt: u kommt vor v. Def. Lem. Satz. TopologicalSort(DirectedGraph G) L = new List() DFS(G) mit folgender Änderung: Wenn ein Knoten schwarz gefärbt wird, häng ihn vorne an die Liste L an. return L Ein (gerichteter) Graph ist kreisfrei, wenn er keinen (gerichteten) Kreis enthält. Ein gerichteter Graph G ist kreisfrei DFS(G) liefert keine Rückwärtskanten. Laufzeit? O(V + E) Beweise: Tafel bzw. Kapitel 22.4 [CLRS] Sei G ein gerichteter kreisfreier Graph. Dann liefert TopologicalSort(G) eine topologische Sortierung von G.