Fakultät für Informatik Lehrstuhl 11 / Algorithm Engineering Prof. Dr. Petra Mutzel Carsten Gutwenger, André Gronemeier, Anna-Lena Lamprecht, Tobias Marschall, Hubert Wagner, Hoi-Ming Wong Sommersemester 2008 DAP2 Übung – Blatt 12 Ausgabe: 26. Juni — Abgabe: 03. Juli, 14:00 Uhr Globalübung: Fr. 11. Juli Aufgabe 12.1 (5 Punkte) Gegeben sei der folgende gerichtete Graph G: m k p q n r u t x o s v y w z Bestimmen Sie unter Verwendung des im Skript angegebenen Algorithmus schrittweise eine topologische Sortierung der Knoten von G. Geben Sie hierzu vor Eintritt in die While-Schleife und nach jedem Schleifendurchlauf durch die While-Schleife den aktuellen Zustand der Queue und den jeweils ausgegebenen Knoten an. Aufgabe 12.2 (5 Punkte) Wir betrachten nichtleere, ungerichtete Graphen ohne Mehrfachkanten und ohne Schleifen. Der Komplementgraph eines ungerichteten Graphen G = (V, E) ist der ungerichtete Graph G = V, E , wobei für Knoten u, v ∈ V (u 6= v) (u, v) genau dann eine Kante in G ist, wenn (u, v) nicht in E enthalten ist. 1. Geben Sie einen ungerichteten Graphen G mit Knotenmenge V = {a, b, c} sowie den zugehörigen Komplementgraphen G an. (1 Punkt) 2. Beweisen oder widerlegen Sie: Sei G ein ungerichteter Graph, G der zugehörige Komplementgraph. Es gilt dann: G oder G ist zusammenhängend. (4 Punkte) Aufgabe 12.3 (6 Punkte) Gegeben sei der in der nachfolgenden Abbildung dargestellte ungerichtete Graph G mit Gewichtsfunktion w. 6 a 1 b 2 c 5 d 4 6 1 f 3 7 h 2 7 e 4 g 1 2 6 i 9 5 j 2 9 k 8 1 l 1. Bestimmen Sie zu G mit dem Verfahren von Kruskal einen minimalen Spannbaum. (3 Punkte) 2. Für diese Teilaufgabe legen Sie die Realisierung des Kruskal-Algorithmus mit UnionFind zugrunde. Geben Sie den Zustand der Union-Find-Struktur nach jedem FIND- oder UNION-Schritt an. Verwenden Sie dabei die Baumrepräsentation von Mengen. (3 Punkte) Aufgabe 12.4 (4 Punkte) Betrachten Sie den folgenden divide-and-conquer Algorithmus zur Berechnung eines minimalen Spannbaumes. Eingabe sei ein ungerichteter zusammenhängender Graph G = (V, E) mit Gewichtsfunktion. - Zerlege V in 2 Knotenmengen V1 und V2 , so dass sich |V1 | und |V2 | höchstens um 1 unterscheiden. - Berechne rekursiv minimalen Spannbaum T1 für G1 = (V1 , E ∩ V1 × V1 ) und minimalen Spannbaum T2 für G2 = (V2 , E ∩ V2 × V2 ). - Wähle Kante e aus E ∩ V1 × V2 mit minimalem Gewicht - return T1 ∪ T2 ∪ {e}. Zeigen Sie, dass dieser Algorithmus immer einen minimalen Spannbaum für G berechnet, oder aber geben Sie ein Beispiel dafür an, dass der Algorithmus versagt. Aufgabe 12.5 (5 Punkte) Bonusaufgabe 1. Ist die folgende Aussage wahr? Zusammenhängende ungerichtete Graphen, deren Kanten alle paarweise verschiedene Gewichte haben, besitzen genau einen Spannbaum mit kleinstem Gewicht. (4 Punkte) 2. Gilt die Umkehrung von 1., d.h. gilt die folgende Aussage? In zusammenhängenden ungerichteten Graphen, die genau einen Spannbaum mit kleinstem Gewicht besitzen, haben alle Kanten paarweise verschiedene Gewichte. (1 Punkt) Begründen Sie Ihre Antwort mit einem Beweis oder durch ein Gegenbeispiel. Mach et jut – das DAP2-Team