Dijkstra's Algorithm
Q = {(a, 0, nil), (b, inf, nil), (c, inf, nil), (d, inf, nil), (e, inf, nil)}
Extract (a, 0, nil)
Q = {(b, 5, a), (c, 3, a), (d, inf, nil), (e, inf, nil)}
Extract (c, 3, a)
Q = {(b, 4, c), (d, 5, c), (e, 6, c)}
Extract (b, 4, c)
Q = {(d, 5, c), (e, 5, b)}
Extract (d, 5, c)
Q = {(e, 5, b)}
Extract (e, 5, b)
Bellman-Ford Algorithm
Initial values
(a, 0, nil), (b, inf, nil), (c, inf, nil), (d, inf, nil), (e, inf, nil)
Check edges (a,b), (a,c), (b,e), (c,b), (c,d), (c,e), (d,e)
After iteration 1
(a, 0, nil), (b, 5, a), (c, 3, a), (d, inf, nil), (e, inf, nil)
After iteration 2
(a, 0, nil), (b, 4, c), (c, 3, a), (d, 5, c), (e, 6, b)
After iteration 3
(a, 0, nil), (b, 4, c), (c, 3, a), (d, 5, c), (e, 5, b)
After iteration 4
(a, 0, nil), (b, 4, c), (c, 3, a), (d, 5, c), (e, 5, b)
No negative weight cycles
G = ({a,b,c,d}, {(a,b,2), (a,c,4), (b,d,1), (c,b,-3)}
Node a is the source (cost 0), Q = {(b,2,a), (c,4,a), (d,inf,nil)}.
Remove b (cost 2), Q = {(c,4,a), (d,b,1)}.
Remove d (cost 3), Q = {(c,4,a)} .
Remove c (cost 4), Q = {}.
Dijkstra's algorithm finds a path from a to b of a->b with cost 2.
The shortest path from a to b is actually a->c->b with cost 1.