TU Ilmenau, Fakultät IA Institut TI, FG Automaten und Formale Sprachen Prof. Dr. M. Kunde, Dipl.-Inf. Sascha Grau http://www.tu-ilmenau.de/fakia/ea ws09.html Effiziente Algorithmen“ ” Übungsblatt 5, WS 09/10 Abgabe bis: Dienstag, den 14.12.2009, 16:30 Uhr, Briefkasten im Blechhaus, zweiter Stock Aufgabe 1 (Markierungen in Fibonacci-Heaps) [Fredman & Tarjan 1984] In einem Fibonacci-Heap entspricht für einen Knoten des Ranges k die Anzahl der Nachfolger in dessen Teilbaum (ihn mitzählend) mindestens Fk+2 (dabei sei Fi die i-te Fibonacci-Zahl). Die Operation decreaseKey2(x, k) entspreche decreaseKey(x, k) ohne Markenvergabe. D.h. sie modifiziert den Schlüsselwert von x, trennt den in x verwurzelten Teilbaum von seinem bisherigen Baum ab und fügt ihn als selbstständigen Baum in die Liste aller Bäume ein. Fügen sie in einen leeren Fibonacci-Heap die Schlüsselfolge {1, . . . , 16} ein und führen sie danach eine deleteMin-Operation durch. Finden sie auf dem entstehenden Heap eine Folge von 3 decreaseKey2 Operationen, so dass das obige zentrale Lemma verletzt wird. Aufgabe 2 (Kürzeste Wege) (k) G = (V, E) sei ein gerichteter Graph mit V = {1, . . . , n} und Kantenlängen w(e) ≥ 0 für e ∈ E. Sei aij die Länge eines kürzesten Weges von i nach j, der nur durch Knoten aus der Menge {1, . . . , k} läuft (i (k) und j ausgenommen). Falls kein solcher Weg existiert, sei aij = ∞. Beweisen Sie die folgenden Aussagen: ( w((i, j)) falls (ij) ∈ E (0) (a) aij = ∞ sonst n o (k) (k−1) (k−1) (k−1) (b) aij = min aij , aik + akj für alle k ≥ 1. Aufgabe 3 (Zuverlässigste Verbindung) Gegeben Sein ein gerichteter Graph G = (V, E), bei dem jede Kante (u, v) ∈ E ein Kantengewicht r(u, v) ∈ R mir 0 < r(u, v) < 1 besitzt. Das Kantengewicht r(u, v) gibt die Zuverlässigkeit eines Kommunikationskanals vom Knoten u zum Knoten v an, d.h. r(u, v) ist die Wahrscheinlichkeit, dass der Kanal von u nach v korrekt überträgt. Diese einzelnen Wahrscheinlichkeiten seien unabhängig. Geben Sie einen effizienten Algorithmus an, der einen zuverlässigsten Weg zwischen zwei gegebenen Knoten berechnet. Aufgabe 4 (Kürzeste Wege und Spannbäume) Sei G = (V, E) ein ungerichteter, zusammenhängender Graph mit Kantengewichten. Ein Spannbaum von G ist ein azyklischer, zusammenhängender Teilgraph T = (V 0 , E 0 ) von G mit V 0 = V und E 0 ⊆ E. Ein Spannbaum heißt minimal, wenn die Summe seiner Kantengewichte minimal unter allen Spannbäumen ist. (a) Zeigen Sie, dass die kürzesten Wege, die der Dijkstra-Algorithmus zu einer gegebenen Quelle konstruiert, einen Spannbaum bilden (nicht unbedingt einen minimalen). (b) Ist der Spannbaum, der durch den Dijkstra-Algorithmus konstruiert wird, ein minimaler Spannbaum? Begründen Sie Ihre Anwort. (c) Ist der Weg zwischen zwei Knoten in einem minimalen Spannbaumes in G auch ein kürzester Weg? Begründen Sie Ihre Antwort. Bitte wenden! 2 Effiziente Algorithmen“ ” Übungsblatt 5, WS 09/10 Aufgabe 5 (Eindeutige Kantengewichte und minimale Spannbäume) Sei G = (V, E) ein ungerichteter, zusammenhängender Graph mit nicht negativen Kantengewichten c(e) ≥ 0 für e ∈ E. Ferner gelte c(e) 6= c(e0 ) falls e 6= e0 , d.h. die Kantengewichte sind paarweise verschieden. Zeigen Sie, dass es genau einen minimalen Spannbaum in G gibt. Aufgabe 6 (Dynamische Minimale Spannbäume) (a) Sei G = (V, E; c) ein ungerichteter Graph und T ein minimaler Spannbaum von G. Zeigen Sie, dass für jede Kante (u, v) ∈ E, die nicht im Spannbaum liegt, und jede Kante (u0 , v 0 ) auf dem Weg ω von u nach v in T folgende Ungleichung gilt: c(u0 , v 0 ) ≤ c(u, v). (b) G = (V, e; c) sei ein gewichteter Graph und T sei ein minimaler Spannbaum von G. Wir nehmen an, dass G0 aus G durch Senken des Gewichts einer Kante außerhalb von T entsteht. Geben Sie einen O(|V |) Algorithmus an, der einen minimalen Spannbaum T 0 von G0 aus T berechnet.