Algorithmus von Dijkstra Voraussetzung: globale Vorinformation (wird erreicht über “link state broadcast”) Aufgabe: Finde kürzesten Weg von u nach z Lösung: Findet alle kürzesten Wege von u zu anderen Knoten, die nicht länger als zu z sind Dynamisierbarkeit: kann geänderte Werte für Weiterreise richtig nutzen Notation: 1 Initialization: z c(x,y): Kantenkosten von x nach y 2 Done = {u} (∞ wenn nicht benachbart) 3 for all nodes v do: z Cu(v): Berechnete Kosten von u bis v 4 if v adjacent to u z pu(v): Vorgänger auf dem berechneten 5 then Cu(v) = c(u,v) Weg von u nach v 6 else Cu(v) = ∞ z Done: Menge der Knoten, zu denen 7 die Kosten endgültig feststehen 8 Loop 9 find w not in Done such that Cu(w) is a minimum 10 add w to Done 11 update Cu(v) for all v adjacent to w and not in Done: 12 Cu(v) = min( Cu(v), Cu(w) + c(w,v) ) 13 until all nodes in Done (resp. z in Done) Dijkstra Slide 1 Algorithmus von Dijkstra Beispiel: Weg von u nach z 5 Gerüst der kürzesten Wege von u: v v w u Step 0 1 2 3 4 5 Done u ux uxy uxyv uxyvw uxyvwz u 2 1 z x 2 y x 3 w 3 1 5 z 1 y 2 Cu(v),p(v) Cu(w),p(w) Cu(x),p(x) Cu(y),p(y) Cu(z),p(z) ∞ ∞ 2,u 1,u 5,u ∞ 2,u 4,x 2,x 4,y 2,u 3,y 4,y 3,y 4,y Dijkstra Slide 2 Algorithmus von Dijkstra Beispiel: 5 Gerüst der kürzesten Wege von u: v v w u u y (u,v) y (u,x) w (u,x) z (u,x) (u,x) 3 x 1 destination 5 z 1 y 2 link y w z link v x w Forwarding table von x: Forwarding table von u: destination 2 1 z x 2 3 (x,y) (x,y) (x,y) Forwarding table von y: destination w z Dijkstra Slide 3 link (y,w) (y,z) Algorithmus von Dijkstra Analyse Algorithmische Komplexität für n Knoten und m Kanten: findet die kürzesten Wege von u zu jedem anderen Knoten in Zeit O(m + n log n) Es ist kein Algorithmus bekannt, der das Problem für feste u und z schneller löst • Gesamtzeit O(nm + n2 log n) Bei Anwendung auf jede Startecke u: • Für die Berechnung aller Wege gibt es etwas schnellere Verfahren Bei Kostenmaß = Verkehrsaufkommen: Oszillierung möglich ! 1 D 0 1 A 0 0 C e A 1+e 2+e e D 1+e 1 B 0 0 C B 1 0 0 D A 2+e 0 0 B 1 1+e C Startsituation: B und C entdecken B, C, D entdecken Kontinuierliche Versendung besseren Weg besseren Weg der angegegeben Paketzahl nach A Dijkstra Slide 4 2+e A 0 D 1+e 1 B e 0 C B, C, D entdecken besseren Weg, ….