Algorithmen und Datenstrukturen 2-2. Seminar -

Ähnliche Dokumente
Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2-1. Seminar -

Traversierung 1 / 16. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 2, V3 23. April / 16

Flüsse in Netzwerken. Seminar über Algorithmen SoSe Mike Rohland & Julia Schenk

ADS 2: Algorithmen und Datenstrukturen

ADS 2: Algorithmen und Datenstrukturen

ADS: Algorithmen und Datenstrukturen 2

ADS 2: Algorithmen und Datenstrukturen

Netzwerkfluß. Gegeben ist ein System von Wasserrohren: Die Kapazität jedes Rohres ist 3, 5 oder 8 l/s.

Datenstrukturen und Algorithmen (SS 2013)

Vorlesung Datenstrukturen

Flüsse, Schnitte, bipartite Graphen

ADS: Algorithmen und Datenstrukturen 2

Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich. Graphen (2)

2.4 Starke Zusammenhangskomponenten in Digraphen

Algorithmen und Datenstrukturen

Wie wird ein Graph dargestellt?

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2

1 DFS-Bäume in ungerichteten Graphen

1 DFS-Bäume in ungerichteten Graphen

Tutoraufgabe 1 (Suchen in Graphen):

Algorithmen & Datenstrukturen 2 Praktikum 3

Graphenalgorithmen I. Geschickt Programmieren für den ICPC- Wettbewerb. Felix Weissenberger

Aufgaben zur Klausurvorbereitung

Algorithmen und Datenstrukturen 2

\ 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.

ADS 2: Algorithmen und Datenstrukturen

8 Das Flussproblem für Netzwerke

Algorithmen und Datenstrukturen

Algorithmische Graphentheorie

ADS: Algorithmen und Datenstrukturen 2

9 Minimum Spanning Trees

Kapitel IV Minimale Spannbäume

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

Abgabe: (vor der Vorlesung)

Informatik II, SS 2014

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm

3.4 Maximale Flüsse und der Algorithmus von Ford Fulkerson

Wiederholung zu Flüssen

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

Algorithmen und Datenstrukturen 1-5. Seminar -

Klausurvorbereitung. 1 Zentrale Begriffe. 2 Bipartite Graphen. 2.1 Begriffe. Vorlesung Graphen und Optimierung Sommersemester 2011 Prof. S.

Vorlesung Datenstrukturen

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Algorithmen und Datenstrukturen

Graphdurchmusterung, Breiten- und Tiefensuche

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

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

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

12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013

Maximale s t-flüsse in Planaren Graphen

Lernmodul 7 Algorithmus von Dijkstra

ADS: Algorithmen und Datenstrukturen 2

Tutoraufgabe 1 (SCC):

15. Elementare Graphalgorithmen

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen

6. Flüsse und Zuordnungen

Graphalgorithmen 1. Tillmann Zipperer Tillmann Zipperer Graphalgorithmen / 40

Kapitel IV Minimale Spannbäume

Tutoraufgabe 1 (Starke Zusammenhangskomponenten):

Vorlesung Datenstrukturen

Teil 2: Graphenalgorithmen

6 Flüsse und Matchings

Kap. 6.5: Minimale Spannbäume ff

Name:... Vorname:... Matr.-Nr.:... Studiengang:...

Graphenalgorithmen I

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

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

Informatik II, SS 2018

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Vorlesung Datenstrukturen

ADS 2: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

12. AuD Tafelübung T-C3

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

1 Exploration geordneter Wurzelbäume

Flüsse in Netzwerken

EDM, Algorithmen und Graphenspeicherung

Wege, Pfade und Kreise

10. Übungsblatt zu Algorithmen I im SS 2010

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0.

Einführung in die Graphen-Theorie

ADS: Algorithmen und Datenstrukturen 2

Graphen: Datenstrukturen und Algorithmen

ADS 2: Algorithmen und Datenstrukturen

Programmierkurs Python II

Algorithmus zur topologischen Nummerierung: while V = 0 do nummeriere eine Quelle mit der nächsten Nummer streiche diese Quelle aus V od

Rückblick: Starke Zusammenhangskomponenten

ADS: Algorithmen und Datenstrukturen 2

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:

Teil 2: Graphenalgorithmen

Zweizusammenhang und starker Zusammenhang

Effiziente Algorithmen

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

Effiziente Algorithmen

Flüsse und Zuordnungen. Kapitel 6. Peter Becker (H-BRS) Graphentheorie Wintersemester 2018/ / 296

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

Informatik II, SS 2016

Transkript:

Algorithmen und Datenstrukturen 2-2. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Sommersemster 2010

Outline 2. Übungsserie: 3 Aufgaben, insgesamt 30 Punkte A4 Flußnetzwerk, Restgraphen (9 Punkte) A5 Dijkstra, Bellman-Ford Algorithmus (10 Punkte) A6 Tarjan Algorithmus (11 Punkte)

Wiederholung: Flußnetzwerke Anwendungsprobleme: Wieviel Autos können durch ein Straßennetz fahren? Wieviel Abwasser fasst ein Kanalnetz? Wieviel Strom kann durch ein Leitungsnetz fließen? Definition: Ein (Fluß-)Netzwerk ist ein gerichteter Graph G = (V, E, c) mit ausgezeichneten Knoten q (Quelle) und s (Senke), sowie einer Kapazitätsfunktion c : E Z+.

Wiederholung: Flußnetzwerke Fluß: f : E Z, so dass gilt: Kapazitätsbeschränkung: e E : f (e) c(e). (Kapazität wird für keine Kante überschritten) Flußerhaltung: v V \ {q, s} : f ((v, v)) = f ((v, v )) (v,v) E (v,v ) E (was in Knoten hinein fließt, fließt auch wieder heraus) Der Wert von f, w(f ), ist die Summe der Flußwerte der die Quelle q verlassenden Kanten: f ((q, v)) (q,v) E

Wiederholung: Flußnetzwerke Gesucht: Fluß mit maximalen Wert begrenzt durch Kapazitäten von Quelle, Senke Engpässe, minimaler Schnitt vs. maximaler Fluss

Wiederholung: Flußnetzwerke Kapazität: 10 + 5 + 10 = 35

Wiederholung: Flußnetzwerke Kapazität: 9 + 15 + 8 + 30 = 62

Wiederholung: Flußnetzwerke Kapazität: 10 + 8 + 10 = 28!!!

Wiederholung: Flußnetzwerke Optimierung des Flußes in G: entlang zunehmender Wege w. um min(rest(e)) mit e liegt auf w Zunehmender Weg: Gerichteter Pfad von Quelle zur Senke im Restgraphen. Eben Pfad mit verfügbarer Restkapazität

Wiederholung: Flußnetzwerke Graph: Kapazität / Fluss Restgraph

Wiederholung: Flußnetzwerke Ford-Fulkerson-Algorithmus: sucht sukzessiv nach flussvergrößernden Wegen im Restgraphen fügt solange wie möglich zunehmende Wege zum Gesamtfluß hinzu Gesamtfluß erhöht sich um Minimum der Restkapazität der Kanten des jeweiligen zunehmenden Wegs

Aufgabe 4 Ein Flussnetzwerk mit der Knotenmenge {q, a, b, c, d, s} habe genau die folgenden Kanten. (q, a, 9,?), (q, c, 4,?), (c, d, 6, 5), (a, b, 8,?), (b, c, 6, 3), (b, d, 7, 4), (b, s, 3, 1), (d, s, 11,?) Hierbei bedeutet ein 4-Tupel (v, w, κ, φ), dass die Kante (v, w) eine Kapazität κ besitzt, von der derzeit φ genutzt wird.

Aufgabe 4 a) Errechnen Sie die fehlenden (durch? ersetzten) φ-werte, so dass sich ein gültiger Fluss ergibt. Zeichnen Sie das gegebene Flussnetzwerk und schreiben Sie an jede Kante die Werte φ, κ. (3 Punkte)

Aufgabe 4 a) Errechnen Sie die fehlenden (durch? ersetzten) φ-werte, so dass sich ein gültiger Fluss ergibt. Zeichnen Sie das gegebene Flussnetzwerk und schreiben Sie an jede Kante die Werte φ, κ. (3 Punkte) (q, a, 9,?), (q, c, 4,?), (c, d, 6, 5), (a, b, 8,?), (b, c, 6, 3), (b, d, 7, 4), (b, s, 3, 1), (d, s, 11,?)

Aufgabe 4 a) Errechnen Sie die fehlenden (durch? ersetzten) φ-werte, so dass sich ein gültiger Fluss ergibt. Zeichnen Sie das gegebene Flussnetzwerk und schreiben Sie an jede Kante die Werte φ, κ. (3 Punkte) (q, a, 9,?), (q, c, 4,?), (c, d, 6, 5), (a, b, 8,?), (b, c, 6, 3), (b, d, 7, 4), (b, s, 3, 1), (d, s, 11,?) (q, a, 9, 8), (q, c, 4, 2), (c, d, 6, 5), (a, b, 8, 8), (b, c, 6, 3), (b, d, 7, 4), (b, s, 3, 1), (d, s, 11, 9)

Aufgabe 4 b) Zeichnen Sie den Restgraphen des Flussnetzwerks. (3 Punkte)

Aufgabe 4 b) Zeichnen Sie den Restgraphen des Flussnetzwerks. (3 Punkte)

Aufgabe 4 c) Geben Sie alle zunehmenden Wege und das jeweilige Minimum der verfügbaren Restkapazität an. (3 Punkte)

Aufgabe 4 c) Geben Sie alle zunehmenden Wege und das jeweilige Minimum der verfügbaren Restkapazität an. (3 Punkte)

Aufgabe 5 Gegeben sei der gewichtete gerichtete Graph G = (V, E, w). a) Benutzen Sie den Dijkstra-Algorithmus, um die Längen der kürzesten Pfade von Knoten 1 zu allen anderen Knoten zu berechnen. Geben Sie nach jeder Extraktion eines Knotens aus der Queue und nach Abschluss der Berechnung für alle Knoten i {1... 6} den aktuellen Wert D[i] an. (5 Punkte)

Wiederholung: Dijkstra Kürzeste Wege zw. 2 Knoten: Verallgemeinerung der Breitensuche. Ausgehend vom Startknoten wird sukzessive der nächst beste Knoten in eine Ergebnismenge aufgenommen und aus der Menge der noch zu bearbeitenden Knoten entfernt. Gehört zur Klasse der Greedy-Algorithmen. Erfordert nicht-negative Gewichte.

Wiederholung: Dijkstra Gesucht: Kürzester Weg von 1 zur 4.

Wiederholung: Dijkstra Gesucht: Kürzester Weg von 1 zur 4.

Wiederholung: Dijkstra Gesucht: Kürzester Weg von 1 zur 4.

Wiederholung: Dijkstra Gesucht: Kürzester Weg von 1 zur 4.

Wiederholung: Dijkstra Gesucht: Kürzester Weg von 1 zur 4.

Wiederholung: Dijkstra Gesucht: Kürzester Weg von 1 zur 4.

Wiederholung: Dijkstra Gesucht: Kürzester Weg von 1 zur 4.

Aufgabe 5 D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) v Q 0 1 2,3,4,5,6

Aufgabe 5 D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) v Q 0 1 2,3,4,5,6 0 2 (0+2) 7 (0+7) 2 3,4,5,6

Aufgabe 5 D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) v Q 0 1 2,3,4,5,6 0 2 (0+2) 7 (0+7) 2 3,4,5,6 0 2 3 (2+1) 8 (2+6) 3 4,5,6

Aufgabe 5 D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) v Q 0 1 2,3,4,5,6 0 2 (0+2) 7 (0+7) 2 3,4,5,6 0 2 3 (2+1) 8 (2+6) 3 4,5,6 0 2 3 8 4 (3+1) 5 4,6

Aufgabe 5 D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) v Q 0 1 2,3,4,5,6 0 2 (0+2) 7 (0+7) 2 3,4,5,6 0 2 3 (2+1) 8 (2+6) 3 4,5,6 0 2 3 8 4 (3+1) 5 4,6 0 2 3 7 (4+3) 4 5 (4+1) 6 4

Aufgabe 5 D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) v Q 0 1 2,3,4,5,6 0 2 (0+2) 7 (0+7) 2 3,4,5,6 0 2 3 (2+1) 8 (2+6) 3 4,5,6 0 2 3 8 4 (3+1) 5 4,6 0 2 3 7 (4+3) 4 5 (4+1) 6 4 0 2 3 6 (5+1) 4 5 4

Aufgabe 5 D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) v Q 0 1 2,3,4,5,6 0 2 (0+2) 7 (0+7) 2 3,4,5,6 0 2 3 (2+1) 8 (2+6) 3 4,5,6 0 2 3 8 4 (3+1) 5 4,6 0 2 3 7 (4+3) 4 5 (4+1) 6 4 0 2 3 6 (5+1) 4 5 4 0 2 3 6 4 5

Aufgabe 5 Gegeben sei der gewichtete gerichtete Graph G = (V, E, w). b) Der Graph H entstehe aus G durch Hinzunahme der Kante e = (3, 6) mit dem Gewicht w(e) = 4. Benutzen Sie den Bellman-Ford-Algorithmus, um im Graphen H die Längen der kürzesten Pfade von Knoten 1 zu allen anderen zu berechnen. (5 Punkte)

Wiederholung: Bellman-Ford Output: Graph mit Knotendistanzen, die jeweils min. Distanz vom Startknoten angeben.

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Wiederholung: Bellman-Ford

Aufgabe 5 Gegeben sei der gewichtete gerichtete Graph G = (V, E, w). b) Der Graph H entstehe aus G durch Hinzunahme der Kante e = (3, 6) mit dem Gewicht w(e) = 4. Benutzen Sie den Bellman-Ford-Algorithmus, um im Graphen H die Längen der kürzesten Pfade von Knoten 1 zu allen anderen zu berechnen. (5 Punkte)

Aufgabe 5 Start: D[1] = 0; D[i] = für i = 2,..., 6 Ausgabe Kante D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) 0

Aufgabe 5 Start: D[1] = 0; D[i] = für i = 2,..., 6 Ausgabe Kante D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) 0 (1,2,2) 0 2 (0+2)

Aufgabe 5 Start: D[1] = 0; D[i] = für i = 2,..., 6 Ausgabe Kante D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) 0 (1,2,2) 0 2 (0+2) (1,3,7) 0 2 7 (0+7)

Aufgabe 5 Start: D[1] = 0; D[i] = für i = 2,..., 6 Ausgabe Kante D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) 0 (1,2,2) 0 2 (0+2) (1,3,7) 0 2 7 (0+7) (2,3,1) 0 2 3 (2+1)

Aufgabe 5 Start: D[1] = 0; D[i] = für i = 2,..., 6 Ausgabe Kante D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) 0 (1,2,2) 0 2 (0+2) (1,3,7) 0 2 7 (0+7) (2,3,1) 0 2 3 (2+1) (2,4,6) 0 2 3 8 (2+6)

Aufgabe 5 Start: D[1] = 0; D[i] = für i = 2,..., 6 Ausgabe Kante D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) 0 (1,2,2) 0 2 (0+2) (1,3,7) 0 2 7 (0+7) (2,3,1) 0 2 3 (2+1) (2,4,6) 0 2 3 8 (2+6) (3,5,1) 0 2 3 8 4 (3+1)

Aufgabe 5 Start: D[1] = 0; D[i] = für i = 2,..., 6 Ausgabe Kante D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) 0 (1,2,2) 0 2 (0+2) (1,3,7) 0 2 7 (0+7) (2,3,1) 0 2 3 (2+1) (2,4,6) 0 2 3 8 (2+6) (3,5,1) 0 2 3 8 4 (3+1) (3,6,-4) 0 2 3 8 4-1 (3-4)

Aufgabe 5 Start: D[1] = 0; D[i] = für i = 2,..., 6 Ausgabe Kante D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) 0 (1,2,2) 0 2 (0+2) (1,3,7) 0 2 7 (0+7) (2,3,1) 0 2 3 (2+1) (2,4,6) 0 2 3 8 (2+6) (3,5,1) 0 2 3 8 4 (3+1) (3,6,-4) 0 2 3 8 4-1 (3-4) (5,4,3) 0 2 3 7 (4+3) 4-1

Aufgabe 5 Start: D[1] = 0; D[i] = für i = 2,..., 6 Ausgabe Kante D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) 0 (1,2,2) 0 2 (0+2) (1,3,7) 0 2 7 (0+7) (2,3,1) 0 2 3 (2+1) (2,4,6) 0 2 3 8 (2+6) (3,5,1) 0 2 3 8 4 (3+1) (3,6,-4) 0 2 3 8 4-1 (3-4) (5,4,3) 0 2 3 7 (4+3) 4-1 (5,6,1) 0 2 3 7 4-1

Aufgabe 5 Start: D[1] = 0; D[i] = für i = 2,..., 6 Ausgabe Kante D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) 0 (1,2,2) 0 2 (0+2) (1,3,7) 0 2 7 (0+7) (2,3,1) 0 2 3 (2+1) (2,4,6) 0 2 3 8 (2+6) (3,5,1) 0 2 3 8 4 (3+1) (3,6,-4) 0 2 3 8 4-1 (3-4) (5,4,3) 0 2 3 7 (4+3) 4-1 (5,6,1) 0 2 3 7 4-1 (6,1,5) 0 2 3 7 4-1

Aufgabe 5 Start: D[1] = 0; D[i] = für i = 2,..., 6 Ausgabe Kante D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) 0 (1,2,2) 0 2 (0+2) (1,3,7) 0 2 7 (0+7) (2,3,1) 0 2 3 (2+1) (2,4,6) 0 2 3 8 (2+6) (3,5,1) 0 2 3 8 4 (3+1) (3,6,-4) 0 2 3 8 4-1 (3-4) (5,4,3) 0 2 3 7 (4+3) 4-1 (5,6,1) 0 2 3 7 4-1 (6,1,5) 0 2 3 7 4-1 (6,4,1) 0 2 3 0 (-1+1) 4-1

Aufgabe 5 Start: D[1] = 0; D[i] = für i = 2,..., 6 Ausgabe Kante D(1, 1) D(1, 2) D(1, 3) D(1, 4) D(1, 5) D(1, 6) 0 (1,2,2) 0 2 (0+2) (1,3,7) 0 2 7 (0+7) (2,3,1) 0 2 3 (2+1) (2,4,6) 0 2 3 8 (2+6) (3,5,1) 0 2 3 8 4 (3+1) (3,6,-4) 0 2 3 8 4-1 (3-4) (5,4,3) 0 2 3 7 (4+3) 4-1 (5,6,1) 0 2 3 7 4-1 (6,1,5) 0 2 3 7 4-1 (6,4,1) 0 2 3 0 (-1+1) 4-1 1. 0 2 3 0 4-1 2. 0 2 3 0 4-1 3. 0 2 3 0 4-1 4. 0 2 3 0 4-1 5. 0 2 3 0 4-1

Aufgabe 6 Geg: Gerichteter Graph, Kantenliste: 7, 10, 1, 2, 2, 3, 3, 4, 4, 2, 1, 5, 5, 4, 4, 6, 6, 7, 7, 6, 5, 7 a) Benutzen Sie den Tarjan-Algorithmus beginnend beim Knoten 1, um die starken Zusammenhangskomponenten von G zu berechnen. In der Schleife innerhalb von Tarjan-visit werden die Kindsknoten u des aktuellen Knotens v in aufsteigender Reihenfolge der Indizes bearbeitet. Geben Sie jeweils nach Beendigung dieser Schleife v, in[v] und l[v] an, sowie ggf. die vom Programm erzeugte Ausgabe einer starken Zusammenhangskomponente. (5 Punkte)

Wiederholung: SZK Starke Zusammenhangskomponente = SZK Ein gerichteter Graph G = (V, E) heißt stark zusammenhängend, wenn für alle u, v V gilt: Es gibt einen Pfad von u nach v. Eine starke Zusammenhangskomponente von G ist ein maximaler stark zusammenhängender Teilgraph von G. Komponentengraph: Fasse alle Knoten einer ZSK zusammen.

Wiederholung: SZK Graph Komponentengraph

Aufgabe 6 Geg: Gerichteter Graph, Kantenliste: 7, 10, 1, 2, 2, 3, 3, 4, 4, 2, 1, 5, 5, 4, 4, 6, 6, 7, 7, 6, 5, 7 b) Zeichnen Sie G und dessen Komponentengraphen G. Benennen Sie dabei die starken Zusammenhangskomponenten von G mit a, b, c,..., in der Reihenfolge, in der sie vom Tarjan-Algorithmus im vorigen Aufgabenteil gefunden wurden. (2 Punkte)

Wiederholung: Tarjan Grundidee: Von einem Startknoten ausgehend Tiefensuche im Graphen durchzuführen. Die SZKn bilden dabei Teilbäume des Tiefensuchbaumes, die Wurzeln dieser Bäume heißen Wurzeln der ZK. Die Knoten werden in der Reihenfolge, in der sie besucht werden, auf einem Stack abgelegt. Kehrt die Tiefensuche aus einem Unterbaum zurück, werden die Knoten wieder vom Stack genommen und ausgegeben. Dabei testen, ob es sich bei dem Knoten um die Wurzel einer ZK handelt. Wenn ja, so bilden die bisher ausgegebenen Knoten eine SZK.

Wiederholung: Tarjan Führe Tiefensuche (DFS) auf G aus. Berechne dabei l[v] = frühester Knoten, der von v erreichbar ist in der durch in[] gegebenen Reihenfolge. Wenn alle Kindsknoten von v abgearbeitet sind und l[v]=in[v], so ist v die Wurzel einer SZK. Deren Knoten werden dann gleich ausgegeben und nicht mehr weiter betrachtet (denn jeder Knoten ist in nur einer Komponente).

Wiederholung: Tarjan Wichtige Konzepte: Knoten werden in Preorder-Reihenfolge (WLR) nummeriert. Spannbaum: Kanten, die zu neuen Knoten führen Wurzel einer SZK: der erste Knoten einer ZSK, der in der Tiefensuche besucht wird (hat die niedrigste Nummer).

Wiederholung: Tarjan Beispiel: Tiefensuche (preorder)

Wiederholung: Tarjan Beispiel: Tiefensuch-Spannbaum

Wiederholung: Tarjan Tiefensuche, Reihenfolge: in[] Berechnung der lowlinks für jeden Knoten: l[v] l[v] ist das Minimum aus in[v] und allen in[w], wobei w zur selben SZK wie v gehört; w von v durch eine (womöglich leere) Folge von Spannbaum-Kanten gefolgt von genau einer anderen Kante erreichbar ist.

Wiederholung: Tarjan Beispiel: Zusätzl. Info: low-links, l[g] = in[d] = 6

Wiederholung: Tarjan Beispiel: alle low-links (lila)

Wiederholung: Tarjan Beispiel: Ein Knoten ist eine Wurzel, wenn Preorder- und Lowlink-Zahl gleich sind

Wiederholung: Tarjan Auffinden der SZK: Tiefensuche mit Preorder-Nummerierung Berechnung der Lowlinks Zusẗzlich: Tiefensuch-Zustände auf Stack legen Wenn der Algorithmus von einer Wurzel aus zurückgeht, so nimmt er sich selbst und alle Zustände über sich vom Stack runter; diese bilden eine SZK.

Wiederholung: Tarjan Beispiel: Tiefensuche beginnt bei a, kommt auf Stack

Wiederholung: Tarjan Beispiel: Tiefensuche geht weiter bis f, Stack wird gefüllt

Wiederholung: Tarjan Beispiel: Algorithmus gelangt zu e e ist eine Wurzel (Preorder- und Lowlink-Zahl sind gleich)

Wiederholung: Tarjan Beispiel: Beim Zurückgehen von e wird {e, f } als SZK identifiziert und vom Stack entfernt

Wiederholung: Tarjan Beispiel: Beim Zurückgehen wird {b} als SZK identifiziert und entfernt, etc

Wiederholung: Tarjan Vorteil: Benötigt nur Vorwärtskanten, Graph wird nur einmal durchlaufen Nachteil: Benötigt relativ viel Speicher (Zustandsstack sowie zwei Zahlen pro Knoten)

Aufgabe 6 Geg: Gerichteter Graph, Kantenliste: 7, 10, 1, 2, 2, 3, 3, 4, 4, 2, 1, 5, 5, 4, 4, 6, 6, 7, 7, 6, 5, 7 a) Benutzen Sie den Tarjan-Algorithmus beginnend beim Knoten 1, um die starken Zusammenhangskomponenten von G zu berechnen. In der Schleife innerhalb von Tarjan-visit werden die Kindsknoten u des aktuellen Knotens v in aufsteigender Reihenfolge der Indizes bearbeitet. Geben Sie jeweils nach Beendigung dieser Schleife v, in[v] und l[v] an, sowie ggf. die vom Programm erzeugte Ausgabe einer starken Zusammenhangskomponente. (5 Punkte)

Aufgabe 6 v in[v] l[v] Ausgabe 7 6 5 6 5 5 SZK: 7, 6 4 4 2 3 3 2 2 2 2 SZK: 4, 3, 2 5 12 12 SZK: 5 1 1 1 SZK: 1

Aufgabe 6 c) Geben Sie eine topologische Sortierung von G an.

Wiederholung: Topolog. Sort. Alle azyklischen Graphen sind topologisch sortierbar, z. B.:

Aufgabe 6 c) Geben Sie eine topologische Sortierung von G an. (d,c,b,a)

Aufgabe 6 d) Wie viele Kanten enthält die transitive reflexive Hülle von G? Erklären Sie kurz, wie Sie durch Kenntnis von G diese Berechnung abkürzen können. (3 Punkte)

Wiederholung: Hülle Welche Knoten sind von einem gegebenen Knoten aus erreichbar? Definition: Ein Digraph G = (V, E ) heißt reflexive, transitive Hülle (kurz: Hülle) eines Digraphen G = (V, E), wenn für alle u, v V gilt: (u, v) E Es gibt einen Pfad von u nach v in G

Aufgabe 6d Berechne die transitive reflexive Hülle von G. Eine Kante (x, y) darin repräsentiert a b Kanten in der Hülle von G selbst, wobei. die Anzahl Knoten in der starken Zusammenhangskomponente bezeichnet. Zusammengefasst haben wir d ( a + b + c + d ) + c ( a + b + c ) + b ( a + b ) + a a Kanten, das sind 1 7 + 1 6 + 3 5 + 2 2 = 32

Outlook