Shortest Paths
The problem A D 2 5 1 F 10 B 2 6 E C 3
Breadth-first search A D 1 1 1 F 1 B 1 1 E C 1
Breadth-first search Queue: A A D 1 1 1 F 1 B 1 1 E C 1
Breadth-first search Queue: B, C A D 1 1 1 F 1 B 1 1 1 E C 1 1
Breadth-first search Queue: C, D 2 A D 1 1 1 F 1 B 1 1 1 E C 1 1
Breadth-first search Queue: D, E 2 A D 1 1 1 F 1 B 1 1 1 E C 1 2 1
Breadth-first search Queue: E, F 2 A 1 3 D 1 1 F 1 B 1 1 1 E C 1 2 1
Breadth-first search Queue: F 2 A 1 3 D 1 1 F 1 B 1 1 1 E C 1 2 1
Breadth-first search Queue: 2 A 1 3 D 1 1 F 1 B 1 1 1 E C 1 2 1
Breadth-first search Time: O(n+e)
Dijkstra's algorithm A D 2 5 1 F 10 B 2 6 E C 3
Dijkstra's algorithm Priority queue: A, B, C, D, E, F oo A D 2 5 1 F A D 2 5 1 F oo 10 B 2 oo 6 E C 3 oo oo
Dijkstra's algorithm Priority queue: C, B, D, E, F oo A D 2 5 1 F oo A D 2 5 1 F oo 10 B 2 5 6 E C 3 oo 2
Dijkstra's algorithm Priority queue: B, E, D, F oo A D 2 5 1 F oo 10 B A D 2 5 1 F oo 10 B 2 5 6 E C 3 5 2
Dijkstra's algorithm Priority queue: E, D, F 6 A D 2 5 1 F oo 10 B 2 5 A D 2 5 1 F oo 10 B 2 5 6 E C 3 5 2
Dijkstra's algorithm Priority queue: D, F 6 A D 2 5 1 F 11 10 B 2 5 6 A D 2 5 1 F 11 10 B 2 5 6 E C 3 5 2
Dijkstra's algorithm Priority queue: F 6 A D 2 5 1 F 8 10 B 2 5 6 E C A D 2 5 1 F 8 10 B 2 5 6 E C 3 5 2
Dijkstra's algorithm Priority queue: 6 A D 2 5 1 F 8 10 B 2 5 6 E C 3 A D 2 5 1 F 8 10 B 2 5 6 E C 3 5 2
Dijkstra's algorithm Time: O((n + e)log n)
Floyd-Warshall Algorithm Start: d[i][j] = weight of edge from i to j or infinity if no edge End: d[i][j] = shortest distance from i to j or infinity if no edge for j = 1 to n for i = 1 to n for k = 1 to n d[i][k] = min(d[i][k], d[i][j] + d[j][k]) NB: Loop order is very important! Time: O(n^3) Space: O(n^2)