Algorithmus von Dijkstra

Werbung
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, ….
Herunterladen