Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Animation von Dijkstra

Ähnliche Präsentationen


Präsentation zum Thema: "Animation von Dijkstra"—  Präsentation transkript:

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

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 Idee 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 Realisierung durch PQ und edge scanning

4 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]

5 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

6 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) }

7 Algorithmus von Dijkstra
22 2 10 4 7 4 11 9 s 7 8 2 4 12 5 5 1 Priority Queue PQ: Knoten, Priorität Weglänge Kandidatenmenge K in PQ: Weg von s gefunden Abgeschlossene Knoten: Minimum aus PQ

8 Algorithmus von Dijkstra
22 2 4 10 4 7 4 11 9 s 7 8 2 4 12 5 12 5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

9 Algorithmus von Dijkstra
22 2 4 26 10 4 7 4 11 9 s 7 8 2 4 12 5 12 5 1 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

10 Algorithmus von Dijkstra
22 2 4 26 10 4 7 4 11 9 s 7 8 2 4 12 5 12 5 1 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

11 Algorithmus von Dijkstra
22 2 4 26 10 4 7 4 11 9 s 14 7 8 2 4 12 5 12 17 5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

12 Algorithmus von Dijkstra
22 2 4 26 10 4 7 4 11 9 s 14 7 8 2 4 12 5 12 17 5 1 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

13 Algorithmus von Dijkstra
22 2 4 25 10 4 7 4 11 9 s 14 7 8 2 4 12 5 12 17 5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

14 Algorithmus von Dijkstra
22 2 4 25 10 4 7 4 11 9 s 14 7 8 2 4 12 5 12 17 5 1 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

15 Algorithmus von Dijkstra
22 2 4 25 10 4 7 4 11 9 s 14 7 8 2 4 12 5 12 17 18 5 1 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

16 Algorithmus von Dijkstra
22 2 4 22 26 10 4 7 4 11 9 s 14 7 8 23 2 4 12 5 12 17 18 5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

17 Algorithmus von Dijkstra
22 2 4 22 26 10 4 7 4 11 9 s 14 7 8 23 2 4 12 5 12 17 18 5 1 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

18 Algorithmus von Dijkstra
22 2 4 22 26 10 4 7 4 11 9 s 14 7 8 23 2 4 12 5 12 17 18 5 1 Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π


Herunterladen ppt "Animation von Dijkstra"

Ähnliche Präsentationen


Google-Anzeigen