TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Helmut Seidl, S. Pott, V. Prinz SS 2009 Übungsblatt 12 14.07.2009 Abgabe: Keine Abgabe. Aufgabe 12.1 (P) All Pairs Shortest Paths Das All Pairs Shortest Paths (APSP)-Problem kann auf beliebigen Graphen mit n DijkstraAnwendungen gelöst werden, wenn man zuvor die Kantenkosten in geeignete positive Kosten umwandelt. Führen Sie anhand des folgenden Graphen G die ersten zwei Schritte des APSP-Algorithmus aus: a 8 e1 e2 7 b -2 c e4 e8 -2 4 e3 e6 e 1 d e5 e7 3 e 9 9 5 f a) Erweitern Sie G um eine künstliche Quelle s, die mittels 0-Kanten mit allen Knoten im Graphen verbunden ist. Berechnen Sie unter Verwendung des Bellmann-Ford Algorithmus für s die kürzesten Wege. Geben Sie dabei die aktuellen Distanzen von s zu allen Knoten nach jedem Durchlauf des Algorithmus über alle Graphkanten an. Benutzen Sie dazu Lösungstabelle 1, und arbeiten Sie die Kanten in der Reihenfolge e1 , e2 , e3 , ..., e9 , e0−Kante1 , ..., e0−Kante6 ab. b) Berechnen Sie die reduzierten Kantenkosten r(v, w) := φ(v) + c(e) − φ(w) für alle Kanten in G. Tragen Sie Ihre Lösung in Lösungstabelle 2 ein. Lösungsvorschlag 12.1 a) Aktuellen Distanzen von s zu allen Knoten nach jedem Durchlauf des Bellmann-Ford Algorithmus: 2 s a b c d e f 0 0 0 0 0 0 0 Runde 2 0 0 -2 -2 -1 0 0 Runden 3 - 6 0 0 -2 -2 -1 0 0 Start Runde 1 0 Lösungstabelle 1. b) Reduzierte Kantenkosten: e1 e2 r(e) 10 0 e3 e4 e5 e6 e7 5 7 0 1 4 e8 e9 0 11 Lösungstabelle 2. Aufgabe 12.2 (P) Minimale Spannbäume Betrachten Sie den folgenden ungerichteten Graphen G: 6 1 7 1 1 2 2 1 4 3 4 3 4 5 3 1 4 2 6 2 5 2 4 9 8 1 1 10 Graph G. Berechnen Sie mithilfe des Jarnik-Prim Algorithmus den minimalen Spannbaum des Graphen G ausgehend vom Knoten 1. Arbeiten Sie ausgehende Kanten eines Knoten in aufsteigender Reihenfolge der Zielknoten ab. Markieren Sie durch Zahlen an den Knoten, in welcher Reihenfolge die Knoten vom Jarnik-Prim Algorithmus aus der Priority Queue entnommen werden, und zeichnen Sie den resultierenden minimalen Spannbaum. 3 Lösungsvorschlag 12.2 1 1 7 5 2 3 2 3 6 4 7 5 9 4 6 8 10 8 10 9 Graph G. Aufgabe 12.3 (P) Implizite Graphenrepräsentation Sei [x] eine Kurzform für {0, ..., x − 1} wobei x ∈ N. Eine Menge hoch einer Zahl y bedeutet die Menge der Folgen der Länge y der Elemente, z.B.: {0, 1}3 = {(000), (001), (010), (011), (100), (101), (110), (111)}. Zudem bedeute ab die b-te Stelle (die kleinste Stelle sei 0) der mehrstelligen Zahl a = ...a2 a1 a0 , also z.B. 23491 = 4. Betrachten Sie folgende zwei Graphen: a) Der d-dimensionale Graph BF (d) ist definiert auf der Knotenmenge V = [d + 1] × [2]d und Kantenmenge E = E1 ∪ E2 wobei E2 = {h(i, α), (i + 1, β)i|i ∈ [d], α, β ∈ [2]d , ∀j ∈ [d] : j = i ⇔ αj 6= βj } Dabei ist d ∈ N. b) Sei d ∈ N. Der d-dimensionale Graph CCC(d) ist definiert auf der Knotenmenge V = {(a, p)|a ∈ [2]d , p ∈ [d]} und Kantenmenge E = E1 ∪ E2 mit E1 = {h(a, p), (a, (p + 1) mod d)i|a ∈ [2]d , p ∈ [d]} E2 = {h(a, p), (b, p)i|a, b ∈ [2]d , p ∈ [d], ∀j ∈ [d] : j = p ⇔ aj 6= bj } Zeichnen Sie BF (3) und CCC(3)! 4 Lösungsvorschlag 12.3 Beide Graphen haben Bedeutungen im Computerarchitektur / Networking Bereich. a) BF (d) ist bekannt unter dem Namen Butterfly Graph. 000 001 010 011 100 101 110 111 0 1 2 3 b) CCC(d) nennt man den Cube-Connected-Cycle Graph. (110,0) (111,0) (110,1) (111,1) (101,1) (110,2) (100,1) (100,0) (111,2) 2 (101,0) (011,2) (010,2) 1 (101,2) (100,2) (011,0) 0 (010,0) 000 (010,1) (001,2) (000,2) (000,1) (000,0) (011,1) (001,1) (001,0) 001 010 011 100 101 110 111