Universität zu Lübeck Institut für Theoretische Informatik PD Dr. Andreas Jakoby Dipl.-Inf. Michael Elberfeld Wintersemester 2007/2008 Algorithmik 21.11.2007 5. Übung Inhalt: Source Shortest Path Problem Abgabe: Mittwoch, 28.11.2007, in der Vorlesung 1. (10 Punkte) Wir betrachten den aus der Vorlesung bekannten Algorithmus von Dijkstra für das Single Source Shortest Path Problem. Algorithmus Dijkstra() Eingabe: Eine Kostenmatrix C, die leere Menge S sowie Felder D,W Ergebnis: Lösung des SSSPP im Feld W 1: S := {1} 2: for v ∈ V \ S do 3: D[v] := C[1, v]; 4: W [v] := 1; 5: end for 6: while S 6= V do 7: modify(next-node()) 8: end while (a) (4 Punkte) Schätzen Sie die Laufzeit des Algorithmus möglichst genau ab. (b) (3 Punkte) Können Sie die Laufzeit verbessern, indem Sie für die im Algorithmus verwendeten Felder und Mengen (V , S, D, W ) spezielle Datenstrukturen verwenden? Diskutieren Sie diese Fragestellung ausführlich für Ihnen bekannte Datenstrukturen. (c) (3 Punkte) Diskutieren Sie Möglichkeiten für einen Algorithmus, der für jedes Knotenpaar u, v ∈ V den kürzeste Pfad von u nach v berechnet. 2. (10 Punkte) Sei G = (V, E) ein Graph. Wir unterscheiden bei Knotenfolgen v1 , v2 , ..., vk mit der Eigenschaft, dass für alle 1 ≤ i < n das Paar (vi , vi+1 ) eine Kante in E ist, zwischen Pfaden und Wegen. Während ein Pfad keinen Knoten zweimal enthält, hat ein Weg diese Eigenschaft nicht zwingend. Der Algorithmus von Dijkstra berechnet für jedes v ∈ V den kürzesten Pfad zwischen den Knoten 1 und v. (a) (3 Punkte) Zeigen Sie anhand eines Beispiels, dass der Algorithmus von Dijkstra nicht korrekt ist, wenn für die Kanten auch negative Kosten erlaubt sind. (b) (4 Punkte) Unter welcher Bedingung ist der kürzeste Pfad zwischen zwei Knoten u, v ∈ V auch der kürzeste Weg zwischen diesen Knoten? Begründen Sie Ihre Aussage. (c) (3 Punkte) Geben Sie einen Algorithmus an, der für einen gegebenen Graphen G = (V, E) mit Kosten w(e) ∈ Z, e ∈ E entscheidet, ob es einen Kreis in G gibt, dessen Kosten negativ sind.