next up previous contents
Nächste Seite: Laufzeit Aufwärts: Der Algorithmus von Dijkstra Vorherige Seite: Dijkstra an einem Beispiel   Inhalt

Implementierung

Nachfolgend wird eine Beispielimplementierung in Pseudocode angegeben, die sich an [4] anlehnt.

algorithm Dijkstra(G, s) { berechne alle kürzesten Wege von s zu allen
anderen Knoten in G }

ROT := {s}; GRÜN := {}; dist(s) := 0;
while ROT <> {} do
      wähle v aus ROT, so dass dist(v) minimal von allen Knoten aus ROT;
      färbe v grün;
      for each Nachfolger w von v do
          if w nicht in ROT oder GRÜN
          { w wurde also noch nie besucht }
          then färbe (v, w) grün;
               färbe w rot;
               dist(w) := dist(v) + c(v, w);
          elseif w in ROT
          { w wurde bereits besucht, aber noch nicht abschließend }
          then if dist(w) > dist(v) + c(v, w)
               then färbe (v, w) grün;
                    färbe die bisherige grüne Kante zu w rot;
                    dist(w) := dist(v) + c(v, w);
               else färbe (v, w) rot;
               fi
          else
          { w ist also in GRÜN und schon abschließend betrachtet }
               färbe (v, w) rot;
          fi
      od
od.



Christian Raskob 2003-02-14