Dijkstra's algorithm
Procedure
DIJKSTRA(G, w, s):
INITIALIZE-SINGLE-SOURCE(G, s)
S = ∅
Q = G.V
while Q != ∅:
u = EXTRACT-MIN(Q) // greedy here
S = S ∪ {u}
for each vertex v ∈ G.Adj[u]:
RELAX(u, v, w)
INITIALIZE-SINGLE-SOURCE(G, s):
for each vertex v ∈ G.V:
v.d = ∞
v.π = NIL
s.d = 0
RELAX(u, v, w):
if v.d > u.d + w(u, v):
v.d = u.d + w(u, v)
v.π = u
The operation EXTRACT-MIN
can be implmented by
HEAP-EXTRACT-MIN
in setting of priority queue.
Reference(s)
- T. H. Cormen, C. E. Leiserson, R. L. Rivest and C. Stein, Introduction to Algorithms, 3rd ed. Cambridge, MA: The MIT Press, 2009.