1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm...
-
Upload
mariele-kemna -
Category
Documents
-
view
103 -
download
0
Transcript of 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm...
![Page 1: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/1.jpg)
1Petra Mutzel DAP2 SS08
Animation von Dijkstra
Professor Dr. Petra Mutzel
Lehrstuhl für Algorithm Engineering, LS11
Fakultät für Informatik, TU Dortmund
23. VO DAP2 SS 2008 3. Juli 2008
1Petra Mutzel DAP2 SS08
![Page 2: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/2.jpg)
2Petra Mutzel DAP2 SS08
Algorithmus von DijkstraAnalogien mit BFS und Prim:
• BFS/Prim läßt einzelnen Baum wachsen: Neue Kante verbindet Baum mit Rest
• Dijkstra bildet Kürzeste-Wege Baum (SPT) ausgehend von Wurzel s, aber andere Auswahl
• Greedy, Priority Queue
Bezeichnungen• Vorgänger von Knoten v im SPT: π[v]• Kanten, die Knotenmenge S verlassen: A(S)• Min. Abstand vom Startknoten zu Knoten v: d[v]
![Page 3: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/3.jpg)
3Petra Mutzel DAP2 SS08
Algorithmus von DijkstraS := {s} // S Knoten im SPT
d[s] := 0; π[s] := nil // s Wurzel
while A(S) ≠ ø do // erreichbare Knoten
// Optimale Substruktur Sei e = (u, v) A(S) mit d[u] + w(e) minimal
S := S {⋃ v}
d[v] := d[u] + w(e)
π[v] := u
end while
![Page 4: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/4.jpg)
4Petra Mutzel DAP2 SS08
Realisierung von Dijkstra• Knotenmenge S: Kürzester Weg mit Länge d[v]
bereits ermittelt
• Knotenmenge V \ S: Speichere vorläufige Werte für den Abstand zu s (obere Schranke (v) d[v]) in Priority Queue, und aktualisiere Priorität, falls günstigerer Weg gefunden wird, (s) = 0
• Wähle mit EXTRACTMIN Knoten u mit minimalem Abstandswert. Start: (s) = d[s] = 0
• Aktualisiere für ausgehende Kanten (u, v) Abstandswerte der Endknoten („Relaxieren“) mit DECREASEPRIORITY und Vorgänger π[v]
![Page 5: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/5.jpg)
5Petra Mutzel DAP2 SS08
0
Algorithmus von Dijkstra
4
12
22
10
2
119
5
47
4
2
7
8
5
s
Priority Queue PQ: Knoten, Priorität WeglängeKandidatenmenge K in PQ: Weg von s gefundenAbgeschlossene Knoten: Minimum aus PQ
1
![Page 6: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/6.jpg)
6Petra Mutzel DAP2 SS08
Algorithmus von Dijkstra
4
12
22
10
2
119
5
47
4
2
7
8
5
s 0
4
Ausgehende Kanten des gewählten KnotenErreichte KandidatenVorgänger-Kanten: π
121
![Page 7: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/7.jpg)
7Petra Mutzel DAP2 SS08
Algorithmus von Dijkstra
4
12
22
10
2
119
5
47
4
2
7
8
5
s 0
4
Ausgehende Kanten des gewählten KnotenErreichte KandidatenVorgänger-Kanten: π
12
26
1
![Page 8: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/8.jpg)
8Petra Mutzel DAP2 SS08
12
26
Algorithmus von Dijkstra
4
12
22
10
2
119
5
47
4
2
7
8
5
s 0
4
Ausgehende Kanten des gewählten KnotenErreichte KandidatenVorgänger-Kanten: π
1
![Page 9: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/9.jpg)
9Petra Mutzel DAP2 SS08
12
26
Algorithmus von Dijkstra
14
17
4
12
22
10
2
119
5
47
4
2
7
8
5
s 0
4
Ausgehende Kanten des gewählten KnotenErreichte KandidatenVorgänger-Kanten: π
1
![Page 10: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/10.jpg)
10Petra Mutzel DAP2 SS08
12
26
Algorithmus von Dijkstra
14
17
4
12
22
10
2
119
5
47
4
2
7
8
5
s 0
4
Ausgehende Kanten des gewählten KnotenErreichte KandidatenVorgänger-Kanten: π
1
![Page 11: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/11.jpg)
11Petra Mutzel DAP2 SS08
12
25
Algorithmus von Dijkstra
14
17
4
12
22
10
2
119
5
47
4
2
7
8
5
s 0
4
Ausgehende Kanten des gewählten KnotenErreichte KandidatenVorgänger-Kanten: π
1
![Page 12: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/12.jpg)
12Petra Mutzel DAP2 SS08
12
25
Algorithmus von Dijkstra
14
17
4
12
22
10
2
119
5
47
4
2
7
8
5
s 0
4
Ausgehende Kanten des gewählten KnotenErreichte KandidatenVorgänger-Kanten: π
1
![Page 13: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/13.jpg)
13Petra Mutzel DAP2 SS08
12
25
Algorithmus von Dijkstra
14
17 18
4
12
22
10
2
119
5
47
4
2
7
8
5
s 0
4
Ausgehende Kanten des gewählten KnotenErreichte KandidatenVorgänger-Kanten: π
1
![Page 14: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/14.jpg)
14Petra Mutzel DAP2 SS08
12
22
Algorithmus von Dijkstra
14
26
23
17 18
4
12
22
10
2
119
5
47
4
2
7
8
5
s 0
4
Ausgehende Kanten des gewählten KnotenErreichte KandidatenVorgänger-Kanten: π
1
![Page 15: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/15.jpg)
15Petra Mutzel DAP2 SS08
12
22
Algorithmus von Dijkstra
14
26
23
17 18
4
12
22
10
2
119
5
47
4
2
7
8
5
s 0
4
Ausgehende Kanten des gewählten KnotenErreichte KandidatenVorgänger-Kanten: π
1
![Page 16: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/16.jpg)
16Petra Mutzel DAP2 SS08
12
22
Algorithmus von Dijkstra
14
26
23
17 18
4
12
22
10
2
119
5
47
4
2
7
8
5
s 0
4
Ausgehende Kanten des gewählten KnotenErreichte KandidatenVorgänger-Kanten: π
1
![Page 17: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/17.jpg)
17Petra Mutzel DAP2 SS08
Pseudo-Code: Initialisierung
G=(V, A), w: A→R0+
(1) var π[V], PriorityQueue Q, pos[V]
(2) for each u V \ {s} do { • pos[u] := Q.INSERT(, u)• π[u] := nil
(5) }
(6) pos[s] := Q.INSERT(0, s)
(7) π[s] := nil
![Page 18: 1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.](https://reader035.fdocument.pub/reader035/viewer/2022062623/55204d7549795902118ca0cc/html5/thumbnails/18.jpg)
18Petra Mutzel DAP2 SS08
Pseudo-Code(8) while not Q.ISEMPTY() do {
(9) (du, u ) := Q.EXTRACTMIN(); // du Abstand s zu u
(10) pos[u] := nil // Minimum entfernt
(11) for all e = (u,v) A-(u) do { // Erreichbare Knoten
(12) if du+w(e) < Q.PRIORITY(pos[v]) then {
(13) Q.DECREASEPRIORITY(pos[v], du + w(e))
(14) π[v] := u
(15) }
(16) }
(17) }