Dijkstra in Pseudocode
Knoten, die in die Menge M aufgenommen worden sind, heißen markiert. Für die Implementation des Dijkstra-Algorithmus ist es besser, an Stelle der Menge M die Menge
U = {v aus V : Dist(v) < unendlich, v nicht aus M}
zu betrachten. Diese Menge, die aus den noch nicht markierten Knoten besteht, zu denen der Algorithmus schon einen provisorischen Weg gefunden hat, heißt Front. Neu formuliert heißt der Algorithmus jetzt so:
- for all v aus V do
- Dist(v) := unendlich, Vor(v) := leer
- end for
- Dist(s) := 0, Vor(s) := s, U := {s}
- while U nicht leer do
- wähle u aus U mit Dist(u) minimal (finde Min)
- U := U - {u} (lösche Min)
- if u = t then STOP # optional
- for all (u,v) aus E do
- if Dist(u) + c(u,v) < Dist(v) then
- Dist(v) = Dist(u) + c(u,v), Vor(v) := u (verringere)
- if v nicht aus U then U := U + {v} (füge ein)
- end if
- end for
- end while
Wir wollen uns im folgenden eine Animation des Verfahrens anschauen:
![]() |
![]() |
![]() |