Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund.

Ähnliche Präsentationen


Präsentation zum Thema: "1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund."—  Präsentation transkript:

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 23. VO DAP2 SS Juli Petra Mutzel DAP2 SS08

2 2 Algorithmus von Dijkstra Analogien 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]

3 3Petra Mutzel DAP2 SS08 Algorithmus von Dijkstra S := {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

4 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 1.Wähle mit E XTRACT M IN Knoten u mit minimalem Abstandswert. Start: (s) = d[s] = 0 2.Aktualisiere für ausgehende Kanten (u, v) Abstandswerte der Endknoten (Relaxieren) mit D ECREASE P RIORITY und Vorgänger π[v]

5 5Petra Mutzel DAP2 SS08 0 Algorithmus von Dijkstra s Priority Queue PQ: Knoten, Priorität Weglänge Kandidatenmenge K in PQ: Weg von s gefunden Abgeschlossene Knoten: Minimum aus PQ 1

6 6Petra Mutzel DAP2 SS08 Algorithmus von Dijkstra s 0 4 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π 12 1

7 7Petra Mutzel DAP2 SS08 Algorithmus von Dijkstra s 0 4 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

8 8Petra Mutzel DAP2 SS Algorithmus von Dijkstra s 0 4 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π 1

9 9Petra Mutzel DAP2 SS Algorithmus von Dijkstra s 0 4 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π 1

10 10Petra Mutzel DAP2 SS Algorithmus von Dijkstra s 0 4 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π 1

11 11Petra Mutzel DAP2 SS Algorithmus von Dijkstra s 0 4 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π 1

12 12Petra Mutzel DAP2 SS Algorithmus von Dijkstra s 0 4 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π 1

13 13Petra Mutzel DAP2 SS Algorithmus von Dijkstra s 0 4 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π 1

14 14Petra Mutzel DAP2 SS Algorithmus von Dijkstra s 0 4 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π 1

15 15Petra Mutzel DAP2 SS Algorithmus von Dijkstra s 0 4 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π 1

16 16Petra Mutzel DAP2 SS Algorithmus von Dijkstra s 0 4 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π 1

17 17Petra Mutzel DAP2 SS08 Pseudo-Code: Initialisierung G=(V, A), w: AR 0 + (1) var π[V], PriorityQueue Q, pos[V] (2) for each u V \ {s} do { (3) pos[u] := Q.I NSERT (, u) (4) π[u] := nil (5) } (6) pos[s] := Q.I NSERT (0, s) (7) π[s] := nil

18 18Petra Mutzel DAP2 SS08 Pseudo-Code (8) while not Q.ISEMPTY() do { (9) (d u, u ) := Q.EXTRACTMIN(); // d u Abstand s zu u (10) pos[u] := nil // Minimum entfernt (11)for all e = (u,v) A - (u) do { // Erreichbare Knoten (12) if d u +w(e) < Q.PRIORITY(pos[v]) then { (13)Q.DECREASEPRIORITY(pos[v], d u + w(e)) (14)π[v] := u (15) } (16) } (17) }


Herunterladen ppt "1Petra Mutzel DAP2 SS08 Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund."

Ähnliche Präsentationen


Google-Anzeigen