Informatik II ‐ SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 19 (22.7.2014) Kürzeste Wege: Negative Gewichte, alle Paare Fabian Kuhn Algorithmen und Komplexität Fabian Kuhn Informatik II, SS 2014 Kürzeste Wege Problem • Gegeben: gewichteter Graph – Wir bezeichnen Gewicht einer Kante – Annahme: ∀ ∈ : 0 , , , als , Startknoten ∈ , • Ziel: Finde kürzeste Pfade / Distanzen von zu allen Knoten , – Distanz von zu : 1 1 3 9 3 (Länge eines kürzesten Pfades) 2 15 3 7 8 4 2 6 6 1 5 8 Fabian Kuhn 6 9 7 Informatik II, SS 2014 2 Negative Kantengewichte • Kürzeste Pfade können auch in Graphen mit negativen Kantengewichten definiert werden Beispiel 4 3 5 2 4 6 3 3 8 7 6 Fabian Kuhn Informatik II, SS 2014 3 Negative Kantengewichte Satz: In einem gerichteten, gewichteten Graphen hat es genau dann einen kürzesten Pfad von nach , falls es keinen negativen Kreis gibt, welcher von erreichbar ist und von welchem erreichbar ist. • gilt auch für ungerichtete Graphen, falls Kanten , als 2 gerichtete Kanten , und , betrachtet werden Fabian Kuhn Informatik II, SS 2014 4 Optimalität von Teilpfaden Lemma: Falls , , … , ein kürzester Pfad von nach ist, dann gilt für alle 0 , dass der Teilpfad , ,…, ein kürzester Pfad von nach ist. • gilt auch bei negativen Kantengewichten... Fabian Kuhn Informatik II, SS 2014 5 Zur Erinnerung: Dijkstras Algorithmus • Algorithmus kennt zu jedem Zeitpunkt einen Teilbaum eines Shortest Path Trees • Man merkt sich zudem für jeden Knoten, wie er über 1 Kante von am besten erreicht werden kann und nimmt in jedem Schritt den besten solchen Knoten zu hinzu. Fabian Kuhn Informatik II, SS 2014 6 Dijkstras Algorithmus Initialisierung ∅, ∅ • , 0, sowie , NULL für alle ∈ • ∞ für alle ∈ ∖ ∖ (braucht’s nicht für ) Interationsschritt • Wähle Knoten mit kleinstem , ≔ min , ∈ ∩ • Gehe durch die Ausgangsnachbarn ∈ , ≔ min , , , , ∖ und setze , – Falls nötig, setze auch • Füge Kante Fabian Kuhn , zum Baum hinzu. Informatik II, SS 2014 7 Dijkstras Algorithmus und negative Gewichte Funktioniert Dijkstras Algorithmus auch bei negativen Kantengewichten? • Antwort: nein Fabian Kuhn Informatik II, SS 2014 8 Bellman‐Ford Algorithmus • Zur Vereinfachung beschränken wir uns darauf, die Distanzen zu berechnen Annahme: • Für alle Knoten : Algorithmus hat Wert , • Initialisierung: , 0, , ∞ für Beobachtung: • Falls , ∈ , so dass , Fabian Kuhn , , , Informatik II, SS 2014 , , , dann gilt: , 9 Bellman‐Ford • Betrachte alle Kanten , und versuche – solange, bis alle Distanzen korrekt sind (∀ ∈ : repeat for all , if , zu verbessern , , ) ∈ do , ≔ , , until ∀ ∈ : , , , then , , • Wieviele Wiederholungen sind nötig? Fabian Kuhn Informatik II, SS 2014 10 Bellman‐Ford • Betrachte alle Kanten , und versuche – solange, bis alle Distanzen korrekt sind (∀ ∈ : for i := 1 to n‐1 do for all , ∈ do , if , , ≔ , , , zu verbessern , , ) then , Nach Wiederholungen ist , , , wobei , die Länge des kürzesten Pfades aus höchstens Kanten bezeichnet. Fabian Kuhn Informatik II, SS 2014 11 Bellman‐Ford Lemma: Falls der Graph keine negativen Kreise enthält, sind am Schluss alle Distanzen korrekt berechnet. Fabian Kuhn Informatik II, SS 2014 12 Negative Kreise erkennen • Wir werden sehen: Falls es einen (von erreichbaren) negativen Kreis hat, dann gibt es für irgendeine Kante eine Verbesserung. ∃ , ∈ ∶ , , , Bellman‐Ford Algorithmus for i := 1 to n‐1 do for all , ∈ do , if , , ≔ , for all , ∈ do , , if return false return true Fabian Kuhn , then , , then Informatik II, SS 2014 13 Negative Kreise erkennen Lemma: Falls einen von erreichbaren negativen Kreis enthält, dann gibt der Bellman‐Ford Algorithmus false zurück. Fabian Kuhn Informatik II, SS 2014 14 Kürzeste Pfade Ein Shortest Path Tree kann in der üblichen Art konstruiert werden. Initialisierung: • , 0, für ∶ , NULL • (Wurzel zeigt auf sich selbst), für In jedem Schleifendurchlauf: ... if , , , ≔ , ≔ • Am Schluss zeigt , ∶ NULL then , zum Parent in einem Shortest Path Tree – falls es keine negativen Kreise hat... Fabian Kuhn Informatik II, SS 2014 15 Bellman‐Ford Alg.: Zusammenfassung Theorem: Falls es einen von erreichbaren negativen Kreis hat, wird dieser vom Bellman‐Ford Algorithmus erkennt. Falls kein solcher negativer Kreis existiert, berechnet der Bellman‐Ford Algorithmus in Zeit ⋅ einen Shortest Path Tree. • Man kann den Algorithmus einfach so abändern, dass er für alle , für welche ein kürzester Pfad von existiert, einen solchen Pfad berechnet. Fabian Kuhn Informatik II, SS 2014 16 Bellman‐Ford Algorithmus: Beispiel 1 0 2 1 3 1 3 2 3 2 Fabian Kuhn Informatik II, SS 2014 17 Routing‐Pfade in Netzwerken Ziel: Optimale Routing‐Pfade zu einer Destination • Von jedem Knoten aus wollen wir wissen, zu welchem Nachbar einen Nachricht geschickt werden muss. • Entspricht einem Shortest Path Tree, falls alle Kanten umgedreht werden (transponierter Graph) Algorithmus: • Knoten merken sich aktuelle Distanz , und den aktuell besten Nachbar • Alle Knoten schauen gleichzeitig (parallel), ob’s bei irgendeinem Nachbar eine Verbesserung gibt ∃ , ∈ ∶ , , , • entspricht einer parallelen Version des Bellman‐Ford Algorithmus Fabian Kuhn Informatik II, SS 2014 18 Kürzeste Wege zw. allen Knotenpaaren • all pairs shortest paths problem Berechne single‐source shortest paths für alle Knoten • Dijkstras Algorithmus mit allen Knoten: Laufzeit: ⋅ LaufzeitDijkstra ∈ log – Problem: funktioniert nur bei nichtnegativen Kantengewichten • Bellman‐Ford Algorithmus mit allen Knoten: Laufzeit: ⋅ LaufzeitBF ∈ ∈ – Problem: langsam... Fabian Kuhn Informatik II, SS 2014 19 Distanzen zw. allen Knotenpaaren • Wir beschränken uns zur Einfachheit auf Distanzen • Anstatt mit Adjazenzlisten werden wir dieses Mal mit der Adjazenzmatrix arbeiten • Oder etwas genauer, mit einer Distanzmatrix • Initialisierung: 1 1 2 2 1 3 3 3 1 2 3 4 5 2 Fabian Kuhn Informatik II, SS 2014 20 Distanzmatrix Nach Initialisierung: • Matrix : Distanzen, falls man nur Pfade bestehend aus Kante verwenden darf Pfade aus Kanten? • Ziel: Matrix : Distanzen durch Pfade aus Fabian Kuhn Informatik II, SS 2014 1 2 Kanten 21 Distanzmatrix Pfade aus Kanten? • Matrix : Distanzen, falls nur Pfade aus werden dürfen 2 Kanten benutzt Rekursive Berechnung: Fabian Kuhn Informatik II, SS 2014 22 Distanzmatrix und Matrixmultiplikation Berechnung von (aus Matrixmultiplikation von und ): und : Definition: ⊙ • Matrixmultiplikation in der sogenannten Min‐Plus‐Algebra Fabian Kuhn Informatik II, SS 2014 23 Distanzmatrix berechnen Algorithmus zum Berechnen der Distanzmatrix ≔ for ≔ 2 to 1 do ≔ ⊙ oder ausgeschrieben... ≔ for ≔ 2 to 1 do for ≔ 1 to do for ≔ 1 to do , ≔ , for ≔ 1 to do if , , ≔ Fabian Kuhn Informatik II, SS 2014 , , , , then 24