Lehrstuhl für Informatik I Würzburg, den 12. April 2016 Algorithmen, Komplexität und wissensbasierte Systeme Prof. Dr. Alexander Wolff M. Sc. Fabian Lipp Universität Würzburg 1. Übungsblatt zur Vorlesung Algorithmische Graphentheorie (Sommersemester 2016) Aufgabe 1 – Algorithmus von Dijkstra a) Ermitteln Sie für den abgebildeten Graphen mit Hilfe des Algorithmus von Dijkstra einen Baum kürzester Wege bezüglich x. Geben Sie in nachvollziehbarer Art und Weise die Zwischenschritte an. t 1 u 3 1 w v 1 2 3 2 4 6 1 y x 1 10 7 z 4 Punkte b) Geben Sie einen Graphen an, der gerichtete Kanten negativer Länge enthält, und bei dem der Algorithmus von Dijkstra versagt. Konstruieren Sie ferner einen Graphen G = (V, E), der gerichtete Kanten negativer Länge enthält, bei dem der Algorithmus von Dijkstra aber ein korrektes Ergebnis liefert. G soll n ≥ 3 Knoten und m ≥ n + 3 Kanten enthalten. Erklären Sie Ihre Lösungen kurz. 4 Punkte Aufgabe 2 – Kreissuche Gegeben sei ein zusammenhängender ungerichteter Graph G = (V, E). Wir interessieren uns hier für einfache Kreise, d. h. Kreise, die jede Kante höchstens einmal enthalten, mit einer Länge von mindestens 3. Modifizieren Sie die Breitensuche so, dass der resultierende Algorithmus ermittelt, ob ein zusammenhängender Graph einen einfachen Kreis mit einer Länge von mindestens 3 enthält. Der modifizierte Algorithmus soll eine Laufzeit von O(|V|) aufweisen – im Gegensatz zur Breitensuche, die O(|V|+|E|) Zeit benötigt. a) Geben Sie den Algorithmus in Worten und in Pseudocode an. 4 Punkte b) Zeigen Sie, dass Ihr Algorithmus die Anforderungen (d. h. Korrektheit und Laufzeit) erfüllt. 4 Sonderpunkte c) Erklären Sie kurz, wie sich der Algorithmus auf allgemeine, nicht notwendigerweise zusammenhängende ungerichtete Graphen verallgemeinern lässt. 1 Sonderpunkt Aufgabe 3 – Hamiltonkreise Ein sogenannter Turniergraph G = (V, E) ist ein gerichteter Graph mit der Knotenmenge V = {v1 , . . . , vn } und |V| ≥ 3, der für jedes Paar vi 6= vj von Knoten entweder die gerichtete Kante (vi , vj ) oder die umgekehrt gerichtete Kante (vj , vi ) besitzt. Ein Graph G = (V, E) heißt stark zusammenhängend, wenn es für jedes Paar (v, w) ∈ V × V einen gerichteten Weg von v nach w in G gibt. Gegeben sei nun ein stark zusammenhängender Turniergraph G = (V, E). Zeigen Sie, dass G einen Hamiltonkreis besitzt. Gehen Sie dazu nach den folgenden Schritten vor: a) Zeigen Sie, dass jeder Knoten v ∈ V auf einem Kreis der Länge ≥ 3 liegt. Hinweis: Wählen Sie eine Kante (u, v) oder (v, u) und nutzen Sie den starken Zusammenhang von G. 1 Punkt b) Zeigen Sie, dass jeder Knoten v ∈ V auf einem Kreis der Länge (genau) 3 liegt. Hinweis: Wählen Sie einen nach a) existierenden Kreis und machen Sie diesen schrittweise kürzer. 2 Punkte c) Betrachten Sie einen Kreis C in G. Sei V(C) die Menge der Knoten in C. Nehmen Sie an, dass C maximal ist, aber kein Hamiltonkreis, d.h. V(C) 6= V. Betrachten Sie einen Knoten v ∈ / V(C). Zeigen Sie: Ist w ∈ C und (w, v) ∈ E, so ist auch (w 0 , v) ∈ E für den Nachfolger w 0 von w auf dem Kreis C. Analog können Sie zeigen: Ist w ∈ C und (v, w) ∈ E, so ist auch (v, w 00 ) ∈ E für den Vorgänger w 00 von w auf dem Kreis C. 1 Punkt d) Folgern Sie aus c): Entweder gilt für alle Knoten w ∈ V(C), dass (v, w) ∈ E (i), oder für alle Knoten w ∈ V(C) gilt, dass (w, v) ∈ E (ii). 1 Punkt e) Sei nun V1 ⊆ V \ V(C) die Menge aller Knoten, für die Bedingung (i) gilt, und V2 ⊆ V \ V(C) die Menge aller Knoten, für die Bedingung (ii) gilt. Zeigen Sie: Ist V(C) 6= V, so sind weder V1 noch V2 leer. Hinweis: Verwenden Sie, dass G stark zusammenhängend ist. 1 Punkt f) Führen Sie nun mit Hilfe der Mengen V1 und V2 die Maximalität von C im Fall V(C) 6= V zum Widerspruch. Damit haben Sie gezeigt, dass G einen Hamiltonkreis besitzt. Hinweis: Versuchen Sie den Kreis mit Hilfe einer geeignete Kanten zwischen Knoten aus V1 und V2 zu verlängern. 2 Punkte Abgabe der Lösungen bis Dienstag, 19. April 2016, 10:15 Uhr zu Beginn der Vorlesung oder in den Briefkasten. Die Besprechung erfolgt in der Übung am Freitag, 22. April 2016.