Prof. Dr. Egon Wanke Dr. Stefan Hoffmann Düsseldorf, 16. Mai 2017 Übungen zur Vorlesung Graphenalgorithmen 1 Die Übungen finden Donnerstags von 10:30 bis 12:00 Uhr in Raum 25.12.01.51 und Donnerstag von 16:10 bis 17:40 Uhr in 25.31.HS 5M statt. Die Aufgaben sollten unbedingt eigenständig, schriftlich bearbeitet werden und können in dem Briefkasten auf 25.13.O2 abgegeben werden. Die Abgaben bieten die Möglichkeit in den Übungen gezielter auf vorhandene Probleme einzugehen und werden zu Beginn der Übung zurückgegeben, sie werden jedoch im Allgemeinen weder korrigiert noch bewertet (Ausnahmen werden explizit erwähnt). Bitte geben Sie Ihre Abgaben jeweils spätestens Mittwoch bis 12:00 Uhr für die Übung am nächsten Tag ab. Zulassung zur Klausur: Im Laufe des Semesters werden einige Fragen / Aufgaben zum Erreichen der Zulassung veröffentlicht. Um für die Klausur zugelassen zu werden, müssen Sie mindestens 40% der erreichbaren Punkte in diesen Aufgaben sammeln. Die Zulassungsaufgaben werden als eigenständige PDF-Dateien auf der Webseite zur Verfügung gestellt. Termin Aufgaben 27.04. 1-4 04.05. 11.05 18.05 24.05 25.05 01.06 08.06 15.06 22.06 29.06 06.07 13.07 20.07 5-9 10-13 14-18 19,22-25 26,28-30 - - Kommentar Wiederholung von Grundbegriffen (Logik, Komplexität von Algorithmen, Graphen) Achtung: Beginn der 2. Übung vorverlegt auf 16:10 Uhr Keine Übung, Abgabe der 1. Zulassungsaufgaben! Keine Übung, Feiertag! Keine Übung, Feiertag! Keine Übung, Tag der Klausur! Aufgabe 1: Gegeben sind folgende Aussagen: 1. Jeder Frosch ist glücklich, wenn alle seine Kinder quaken können. 2. Alle grünen Frösche können quaken. 3. Ein Frosch ist grün, wenn er Kind mindestens eines grünen Frosches ist. Formalisieren Sie diese Aussagen mit Hilfe geeigneter Prädikate in Prädikatenlogik. Aufgabe 2: Betrachten Sie die folgenden sechs Funktionen fi : N0 → N0 , i ∈ {1, . . . , 6}. (Dabei verstehen wir unter f (n) immer max{0, df (n)e}.) f1 (n) = n2 f4 (n) = 2n f2 (n) = n3 f5 (n) = log (n) f3 (n) = n2 log (n) f6 (n) = 2n2 + 3n + 4 Füllen Sie folgende Tabelle aus, indem Sie für jedes Paar (fi , fj ) entweder O, Ω oder Θ eintragen. Tragen Sie Θ ein, genau dann wenn fi ∈ Θ(fj ) gilt. Ansonsten tragen Sie O bzw. Ω ein, wenn fi ∈ O(fj ) bzw. fi ∈ Ω(fj ) gilt. j i 1 2 3 4 5 6 1 2 3 4 5 6 Aufgabe 3: Zeigen Sie: 1. In einem ungerichteten Graphen ist die Anzahl der Knoten mit ungeradem Grad eine gerade Zahl. 2. Jeder ungerichtete Graph G = (V, E) mit |V | ≥ 2 hat mindestens zwei Knoten vom gleichen Grad. 3. Die Anzahl der Knoten in einem ungerichteten Graphen, bei dem jeder Knoten den Grad 3 hat, ist eine gerade Zahl. 4. Für jedes gerade n ≥ 4 gibt es einen zusammenhängenden ungerichteten Graphen mit n Knoten, die alle den Grad 3 haben. Aufgabe 4: Zeichnen Sie alle (paarweise nicht isomorphen) ungerichteten Graphen mit 4 Knoten. Aufgabe 5: Zeigen Sie: Für jeden ungerichteten Graphen G = (V, E) sind die folgenden Aussagen äquivalent. 1. G ist kreisfrei und zusammenhängend. 2. Zwischen je zwei Knoten aus G existiert genau ein einfacher Weg. Aufgabe 6: Sei G = (V, E) ein ungerichteter Graph. Zeigen Sie die Äquivalenz der folgenden beiden Aussagen: 1. Für jedes Knotenpaar u, v ∈ V gibt es einen Weg zwischen u und v. 2. ∀V 0 ⊂ V mit V 0 6= ∅, V 0 6= V gibt es einen Knoten u0 ∈ V 0 und einen Knoten u ∈ V \ V 0 mit {u, u0 } ∈ E. Aufgabe 7: Sei G = (V, E) ein ungerichteter Graph. Definiere den Komplementgraph G = (V, E) durch E = {{u, v} | u, v ∈ V ∧ u 6= v ∧ {u, v} ∈ / E}. G ist selbstkomplementär, wenn G und G isomorph sind. 1. Zeichnen Sie einen selbstkomplementären Graphen mit 8 Knoten. 2. Bestimmen Sie die Anzahl der Kanten in einem selbstkomplementären Graphen mit n Knoten. Aufgabe 8: Berechnen Sie nach dem in der Vorlesung vorgestellten Algorithmus eine topologische Sortierung des Graphen in Abbildung 1. Wie viele verschiedene topologische Sortierungen gibt es für dieses Beispiel? Aufgabe 9: Geben Sie einen Graphen mit 6 Knoten und 8 Kanten an, sodass die Anzahl der verschiedenen topologischen Sortierungen möglichst groß ist. Abbildung 1: Graph G 3 1 2 4 6 7 5 Abbildung 2: Graph G Aufgabe 10: Bestimmen Sie für den Graphen G in Abbildung 2 den transitiven Abschluss. Betrachten Sie den aus Vorlesung bekannten Algorithmus für den transitiven Abschluss: Welchen Wert hat der Laufindex k der äußeren Schleife, wenn die Kante (1, 6) eingefügt wird? Aufgabe 11: Sei G = (V, E) ein gerichteter Graph. Die transitive Basis von G ist ein gerichteter Graph Gmin := (V, Emin ), so dass der transitive Abschluss von G gleich dem transitiven Abschluss von Gmin ist und |Emin | ist minimal. (Im Unterschied zur Reduktion muss für eine Basis nicht gelten, dass Emin ⊆ E) Zeigen oder widerlegen Sie: 1. Wenn G stark zusammenhängend ist, dann enthält jede transitive Basis genau |V | Kanten. 2. Wenn eine transitive Basis |V | ≥ 3 Kanten enthält, dann enthält G einen Kreis. Aufgabe 12: Sei G = (V, E) ein gerichteter, stark zusammenhängender Graph und n := |V |. Wie viele Kanten enthält der transitive Abschluss von G? Aufgabe 13: Führen Sie in Graphen G in Abbildung 3 eine 1. Tiefensuche 2. Breitensuche durch, beginnend bei Knoten 9. Geben Sie jeweils die Reihenfolge an, in der die Knoten besucht werden. Bei Wahlmöglichkeiten soll immer derjenige Knoten mit der kleinsten Knotennummer gewählt werden. Geben Sie bei der Tiefensuche ebenfalls für jeden Knoten den DFE-Index an und klassifizieren Sie jede Kante als Baum-, Vorwärts-, Quer- oder Rückwärtskante. 9 3 4 7 1 6 2 5 8 11 10 Abbildung 3: Graph G Aufgabe 14: Sei G = (V, E) ein ungerichteter Graph. G ist bipartit, wenn es eine Partition der Knotenmenge V in zwei Mengen U1 , U2 gibt (d.h. V = U1 ∪ U2 und U1 ∩ U2 = ∅), so dass für alle Kanten e ∈ E gilt: e ∩ U1 6= ∅ und e ∩ U2 6= ∅. Entwerfen Sie einen möglichst effizienten Algorithmus, der entscheidet, ob ein gegebener Graph bipartit ist und schätzen Sie seine Laufzeit ab. Aufgabe 15: Geben Sie einen gerichteten Graphen G = (V, E), zwei Startknoten s1 , s2 ∈ V und eine Kante e ∈ E an, so dass folgende Eigenschaften erfüllt sind. Die verwendete Tiefensuche betrachtet bei Wahlmöglichkeiten immer als erstes denjenigen Knoten mit kleinster Knotennummer. 1. V ⊂ N 2. Bei einer Tiefensuche von Startknoten s1 werden alle Knoten als besucht markiert und e ist eine Baumkante 3. Bei einer Tiefensuche von Startknoten s2 werden alle Knoten als besucht markiert und e ist eine Querkante / Seitwärtskante Aufgabe 16: Entwerfen Sie einen möglichst effizienten Algorithmus, der in einem gerichteten Graphen G = (V, E) einen Kreis minimaler Länge (also mit einer minimalen Anzahl an Kanten) findet und schätzen Sie die Laufzeit Ihrer Lösung ab. Aufgabe 17: Bestimmen Sie alle starken Zusammenhangskomponenten des Graphen G1 (Abbildung 4). 9 3 4 7 1 6 2 5 8 11 10 Abbildung 4: Graph G1 Aufgabe 18: Bestimmen Sie alle zweifachen Zusammenhangskomponenten sowie alle Artikulationspunkte des Graphen G2 = (V, E) (Abbildung 5). Geben Sie außerdem Mengen E1 und E2 mit möglichst wenigen, zusätzlichen Kanten an, so dass 1. (V, E ∪ E1 ) zweifach 2. (V, E ∪ E2 ) dreifach zusammenhängend ist. Aufgabe 19: Sei G = (V, E) ein gerichteter, stark zusammenhängender Graph, auf dem eine Tiefensuche durchgeführt wurde und u, v ∈ V zwei Knoten mit den DFS-Nummern DF S[u] und DF S[v], so dass DF S[u] < DF S[v] gilt. Zeigen oder widerlegen Sie: In G gibt es einen gerichteten Weg von u nach v der Länge DF S[v] − DF S[u]. Aufgabe 20: Zeigen oder widerlegen Sie: Ein gerichteter Graph G = (V, E) hat genau dann |V | starke Zusammenhangskomponenten, wenn es eine topologische Knotenordnung für G gibt. 11 4 2 7 3 5 10 6 8 9 1 Abbildung 5: Graph G2 Aufgabe 21: Sei G = (V, E) ein gerichteter, kreisfreier Graph, auf dem eine Tiefensuche durchgeführt wurde, die für jeden Knoten v einen DFE-Index DF E(v) ∈ {1, . . . , |V |} bestimmt hat. Zeigen oder widerlegen Sie: h(v) := |V | + 1 − DF E(v) ist eine topologische Knotenordnung für G. Aufgabe 22: Zeigen Sie: Ein ungerichteter Graph G = (V, E) ist genau dann k-fach zusammenhängend, wenn er nicht durch Entfernen von k − 1 Knoten unzusammenhängend werden kann. Aufgabe 23: Zeigen Sie, dass für alle k ≥ 3 die k-fachen Zusammenhangshangskomponenten eines ungerichteten Graphen nicht paarweise kantendisjunkt sein müssen. Aufgabe 24: Sei G = (V, E) ein ungerichteter, zusammenhängender Graph. Definiere einen Graphen H wie folgt: H enthält für jede zweifache Zusammenhangskomponente (und jede Brücke) Cv in G einen Knoten v und eine Kante {u, v} genau dann, wenn Cu und Cv einen gemeinsamen Knoten in G haben. 1. Zeigen oder widerlegen Sie: H ist zusammenhängend 2. Zeigen oder widerlegen Sie: H ist kreisfrei Wie könnte diese Definition erweitert/abgeändert werden, so dass H ein Baum ist? Aufgabe 25: Führen Sie den Algorithmus zur Bestimmung der starken Zusammenhangskomponenten an dem Graphen in Abbildung 4 durch. Aufgabe 26: Führen Sie den Algorithmus zur Bestimmung der 2-fachen Zusammenhangskomponenten an dem Graphen in Abbildung 5 durch. Aufgabe 27: Sei G = (V, E) ein gerichteter Graph. Eine Bijektion h : E → {1, . . . , |E|} ist eine topologische Kantenordnung für G, wenn ∀(u, v), (v, w) ∈ E h((u, v)) < h((v, w)). 1. Zeigen Sie: Es gibt eine topologische Kantenordnung für G genau dann, wenn G kreisfrei ist. 2. Entwerfen Sie einen möglichst effizienten Algorithmus zur Berechnung einer topologischen Kantenordnung, begründen Sie die Korrektheit Ihrer Lösung und schätzen Sie die Laufzeit ab. Aufgabe 28: Wir betrachten den folgenden Algorithmus, der in einem kantenbewerteten Graphen (V, E, f ) aus einer initialen Distanzfunktion ds durch wiederholte Überprüfung der Dreiecksungleichung eine Kürzeste-Wege-Funktion berechnet. 1: fertig := false; 2: while (!fertig) do 3: fertig := true; 4: for all ((u, v) ∈ E) do 5: if (ds (u) + f ((u, v)) < ds (v)) then 6: fertig := false; 7: ds (v) := ds (u) + f ((u, v)); 8: end if 9: end for 10: end while 1. Geben Sie eine Instanz für das Single Source Shortest Path Problem an, so dass der obige Algorithmus nicht terminiert. 2. Zeigen Sie: Wenn der obige Algorithmus terminiert, so hat er eine Laufzeit aus O(|V | · |E|). Aufgabe 29: Geben Sie für den kantenbewerteten Graphen G in Abbildung 6 und den Startknoten s eine Kürzeste-Wege-Funktion ds an. 7 a s 4 1 2 5 b 2 2 c 1 1 d 3 f 6 e 2 1 −4 Abbildung 6: Graph G zu Aufgabe 29 h g Aufgabe 30: Sei G = (V, E) ein Graph und f : E → R eine Kantenbewertung. In der Vorlesung wurde die Länge eines Weges p = (u1 , . . . , uk ) als L(p) := f ((u1 , u2 )) + f ((u2 , u3 )) + · · · + f ((uk−1 , uk )) definiert. Betrachten Sie nun die folgenden 5 verschiedenen Definitionen für die Länge eines Weges p = (u1 , . . . , uk ) mit k ≥ 1. 1. L1 (p) := min{f ((u1 , u2 )), f ((u2 , u3 )), 0 2. Qk−1 i=1 L2 (p) := 3. L3 (p) := 4. 1 . . . , f ((uk−1 , uk ))} falls k ≥ 2 sonst f ((ui , ui+1 )) falls k ≥ 2 sonst L3 ((u1 ,...,uk−1 ))+f ((uk−1 ,uk )) 2 f ((uk−1 , uk )) 0 falls k ≥ 3 falls k = 2 sonst L4 ((u1 , . . . , uk−1 ))2 + f ((uk−1 , uk ))2 falls k ≥ 3 f ((uk−1 , uk ))2 falls k = 2 L4 (p) := 0 sonst 5. ( L5 (p) := Pk−1 i=1 0 f ((ui ,ui+1 )) k−1 falls k ≥ 2 sonst Untersuchen Sie, in wie weit die folgende Eigenschaft für die 5 Längenmaße L1 , . . . , L5 stimmt: Für jeden kürzesten Weg p = (v1 , . . . , vk ) von v1 nach vk ist jeder Teilweg p0 = (vi , vi+1 , . . . , vj ) mit 1 ≤ i ≤ j ≤ k ein kürzester Weg von vi nach vj . Aufgabe 31: Für einen kantenbewerteten, gerichteten Graphen G = (V, E, f ), einen Startknoten s ∈ V und eine Kürzeste-Wege-Funktion ds definieren wir den Kürzeste-Wege-Teilgraph G0 = (V, E 0 ) durch E 0 := {(u, v) ∈ E | ds (u) + f ((u, v)) = ds (v)}. Zeigen oder widerlegen Sie: Jeder Kreis in G0 hat die Länge 0. Aufgabe 32: Führen Sie den Kürzeste-Wege-Algorithmus von Dijkstra an dem Graphen aus Abbildung 7 für den Startknoten s durch. Geben Sie dazu an: 1. Den Inhalt der Prioritätswarteschlange vor jedem Aufruf von extract-min 2. Die berechnete Kürzeste-Wege-Funktion ds 3. Den berechneten Kürzeste-Wege-Baum −1 s 7 a 3 −2 b 7 4 2 2 c 6 1 2 d f e 1 2 1 −2 1 h g 3 Abbildung 7: Graph G zu Aufgabe 32 Aufgabe 33: Geben Sie einen gerichteten, kantenbewerteten Graphen G = (V, E, g) an (beschriftete Zeichnung genügt), so dass folgende Eigenschaften erfüllt sind: 1. V = {a, b, c, d, e, f } 2. Dijkstras Algorithmus, gestartet bei Knoten a, terminiert. 3. Möglichst viele der Knoten werden von Dijkstras Algorithmus, gestartet bei Knoten a, mehr als einmal in die Prioritätswarteschlange eingefügt. Aufgabe 34: Im Gegensatz zu den anderen Kürzeste-Wege-Algorithmen terminiert der Algorithmus von Floyd-Warshall auch bei der Existenz von Kreisen negativer Länge. In diesem Fall sind die berechneten Weglängen mit Vorsicht zu genießen, da sie nicht alle dem kürzesten Wegewert entsprechen. Erweitern Sie den Algorithmus so, dass er jeden Knoten, der auf einem Kreis negativer Länge liegt, genau einmal ausgibt. Wie lässt sich diese Information nutzen, um zu entscheiden, ob eine berechnete Weglänge dem kürzesten Wegewert entspricht? Aufgabe 35: Die längste Weglänge von einem Knoten u zu einem Knoten v ist die maximale Länge aller Wege von u nach v, falls ein solches Maximum existiert. Beschreiben Sie, wie man mit Hilfe von Kürzeste-Wege Algorithmen das Längste-Wegeproblem lösen kann. Veranschaulichen Sie Ihre Idee an dem Graphen in Abbildung 8. 2 1 1 -3 1 u v 5 2 Abbildung 8: Graph G zur Aufgabe 35 Aufgabe 36: Wir betrachten den Graphen in Abbildung 9. 1. Geben Sie eine Kantenfolge minimaler Länge an, so dass nach Überprüfung der Dreiecksungleichung in dieser Reihenfolge aus einer beliebigen, initialen Distanzfunktion da eine Kürzeste-Wege-Funktion für a entsteht. 2. Bestimmen Sie eine Kürzeste-Wege-Funktion für den Knoten a in G und transformieren Sie den Graphen G mit dieser in einen Distanzgraphen G0 . 3. Bestimmen Sie eine Kürzeste-Wege-Funktion für den Knoten d im Graphen G0 . Aufgabe 37: Gegeben sei ein gerichteter, kantenbewerteter Graph G = (V, E, f ), ein Knoten s ∈ V und eine initiale Distanzfunktion ds . Geben Sie einen Algorithmus an, der eine Kantenfolge minimaler Länge bestimmt, so dass nach Überprüfung und Aktualisierung der Dreiecksungleichung in dieser Reihenfolge aus ds eine Kürzeste-Wege-Funktion wird. Begründen Sie die Korrektheit Ihrer Lösung. Aufgabe 38: Zeigen Sie, dass für jeden ungerichteten Baum mit n Knoten und m Kanten gilt: m=n−1 c b 1 −1 2 4 1 a d 4 1 −1 G f −1 e Abbildung 9: Graph G zur Aufgabe 36 Aufgabe 39: Betrachten Sie den folgenden Graphen G = (V, E): b c h g a k f d e i 1. Geben Sie die Knotenmengen aller starken Zusammenhangskomponenten von G an: 2. Geben Sie eine Menge E 0 ⊆ V × V mit möglichst wenigen Elementen an, so dass der Graph (V, E ∪ E 0 ) stark zusammenhängend ist: 3. Geben Sie eine Menge E 00 ⊆ E mit möglichst wenigen Kanten an, so dass es eine topologische Knotenordnung für den Graphen (V, E \ E 00 ) gibt. Geben Sie auch eine solche Knotenordnung an: 4. Starten Sie eine Tiefensuche bei Knoten a. Im Falle einer Wahlmöglichkeit soll derjenige Knoten mit kleinstem, lexikographischen Wert (a < b < . . . < z) als nächstes besucht werden. Schreiben Sie an jeden Knoten v die DFS- und DFE-Nummer in der Notation DF S[v]/DF E[v] und an jede Kante B,V,R,Q, je nachdem ob es sich um eine Baumkante, Vorwärtskante, Rückwärtskante oder Querkante handelt. Aufgabe 40: Transformieren Sie den Graphen aus Abbildung 10 in einen Distanzgraphen. 7 a 4 3 −2 −1 i 7 s b 2 j 2 c 6 1 2 d −2 f e 1 2 1 −2 1 h g Abbildung 10: Graph G zu Aufgabe 40 Aufgabe 41: Wir betrachten den Speziallfall von kantenbewerteten Graphen, in denen es nur zwei verschiedene, ganzzahlige, positive Kantengewichte gibt. Skizzieren Sie, wie für diesen Fall eine Prioritätswarteschlange implementiert werden kann, so dass Dijkstras Algorithmus das Single Source Shortest Path Problem in linearer Laufzeit löst. Aufgabe 42: Bestimmen Sie einen minimalen Spannbaum für den Graphen in Abbildung 11 durch wiederholte Anwendung der grünen Kantenregel. Geben Sie dabei in jedem Schritt die gewählte Kantenmenge V 0 und die neu gefärbte Kante an. Aufgabe 43: Bestimmen Sie einen minimalen Spannbaum für den Graphen in Abbildung 11 durch wiederholte Anwendung der roten Kantenregel. Geben Sie dabei in jedem Schritt den gewählten Kreis C und die neu gefärbte Kante an. a 15 9 f b 2 6 4 g 15 11 k 6 2 4 3 e 15 h 1 1 c 2 d Abbildung 11: Graph G zu den Aufgaben 42 und 43 Aufgabe 44: Betrachten Sie den folgenden, kantenbewerteten Graphen: 1 7 a 3 b 4 d 7 4 2 2 c 6 3 2 e g 2 f 1 1 1 1 h i 3 1. Führen Sie Prims Algorithmus mit Startknoten a durch und geben Sie die Kanten des berechneten Spannbaums in der Reihenfolge an, in der sie vom Algorithmus grün gefärbt werden: 2. Führen Sie den Algorithmus von Kruskal durch und geben Sie die Kanten des berechneten Spannbaums in der Reihenfolge an, in der sie vom Algorithmus grün gefärbt werden: Aufgabe 45: Für eine Folge von 8 union-Operationen, angewendet auf die initialen Mengen {1}, {2}, . . . , {9}, sei TH der bei Vereinigung nach Höhe entstehende Baum und TG der bei Vereinigung nach Größe entstehende Baum. Geben Sie eine solche Folge von union-Operationen an, so dass die Höhen von TH und TG unterschiedlich sind. Zeichnen Sie ebenfalls TH und TG . Aufgabe 46: Geben Sie einen Linearzeitalgorithmus zur Berechnung eines minimalen Spannbaums für kantenbewertete, ungerichtete Graphen mit nur drei verschiedenen Kantengewichten an. Aufgabe 47: Zeigen Sie, dass bei Union-Find Datenstrukturen auch bei dem Verfahren “Vereinigung nach Höhe” folgende Eigenschaft erhalten bleibt: Ein Baum mit Höhe h hat mindestens 2h Knoten. Aufgabe 48: Wir versuchen nun Spannbäume in gewurzelten, gerichteten Graphen zu berechnen - eine Variante, die in der Praxis durchaus anzutreffen ist. Gegeben ist nun also ein gerichteter, kantenbewerteter Graph G = (V, E, f ) und eine Wurzel w ∈ V . Gesucht ist eine Menge E 0 ⊆ E von Kanten, so dass für T = (V, E 0 ) gilt: 1. T kreisfrei, 2. ∀v ∈ V \ {w} : indeg(v) = 1, P 3. e∈E 0 f (e) minimal. Ein naheliegender Versuch besteht darin den Algorithmus von Prim zu modifizieren, indem - ausgehend von der Wurzel als Startknoten - immer eine Kante mit minimalem Gewicht gewählt wird, die vom bisher aufgebauten Baum zu einem neuen Knoten gerichtet ist. Zeigen Sie durch ein Gegenbeispiel, dass dieser Algorithmus nicht korrekt arbeitet. Aufgabe 49: Überlegen Sie sich einen Algorithmus, der das Problem aus Aufgabe 48 korrekt löst und beschreiben Sie die Idee und die Arbeitsweise des Algorithmus. Hinweis: Den Algorithmus von Kruskal zu modifizieren ist ebenfalls nicht sinnvoll. Aufgabe 50: Erweitern Sie die Definition des Netzwerkflussproblems auf mehrere Quellen s1 , . . . , sn und mehrere Senken t1 , . . . , tm . Handelt es sich bei dieser Erweiterung um ein grundlegend neues Problem oder gibt es einfache Techniken, um eine derartige Instanz auf das bekannte Netzwerkflussproblem zurückzuführen? Aufgabe 51: Sei G = (V, E) ein Netzwerk mit Kapazitätsfunktion c : E → R+ , Quelle s ∈ V und Senke t ∈ V . Zeigen Sie: 1. Es gibt eine immer eine Flussfunktion fs,t mit maximalem Fluss, so dass für alle Kanten (v, s) ∈ E gilt: fs,t ((v, s)) = 0. 2. Nicht für jede Flussfunktion fs,t mit maximalem Fluss gilt zwangsläufig, dass fs,t ((v, s)) = 0 für alle Kanten (v, s) ∈ E. Aufgabe 52: Bestimmen Sie für das Netzwerk G = (V, E) in Abbildung 12 mit Kapazitätsfunktion c : E → R+ , Quelle s ∈ V und Senke t ∈ V eine Flussfunktion fs,t mit maximalem Fluss mit dem Netzwerkflussalgorithmus von Dinic. Zeichnen Sie dazu nach jedem Schritt den Restgraphen und den Niveaugraphen. Geben Sie außerdem jeweils einen blockierenden Fluss an. 4 b d 12 8 6 s a 4 t 9 10 8 c 11 4 e Abbildung 12: Netzwerk zu den Aufgaben 52 Aufgabe 53: Geben Sie die Laufzeit des besten, Ihnen bekannten, Algorithmus an, der das jeweilige Problem löst. Problem Berechnung einer topologischen Knotenordnung Test auf Zusammenhang in ungerichteten Graphen Test auf starken Zusammenhang in gerichteten Graphen Berechnung der zweifachen Zusammenhangskomponenten in ungerichteten Graphen Berechnung des transitiven Abschlusses in Graphen mit k starken Zusammmenhangskomponenten Single Pair Shortest Path Problem für kantenbewertete Graphen, in denen alle Kanten das Gewicht 5 haben Single Source Shortest Path Problem für kantenbewertete Graphen, in denen alle Kantengewichte positiv sind All Pairs Shortest Path Problem für kreisfreie, kantenbewertete Graphen Single Source Shortest Path Problem für kantenbewertete Graphen, die keine Kreise negativer Länge enthalten All Pairs Shortest Path Problem für kantenbewertete Graphen, die keine Kreise negativer Länge enthalten Berechnung eines minimalen Spannbaums in kantenbewerteten, ungerichteten Graphen, in denen alle Kantengewichte aus der Menge {1, 2, π, 4, 5} sind Berechnung eines minimalen Spannbaums in kantenbewerteten, ungerichteten, zusammenhängenden, kreisfreien Graphen Berechnung eines minimalen Spannbaums in kantenbewerteten, ungerichteten Graphen Netzwerkflussproblem O(...)