Single Source Shortest Paths, All Pairs Shortest Paths
Single Source Shortest Paths, All Pairs Shortest Paths
Haidong Xue
Summer 2012, at GSU
Single-source shortest paths
Single-source shortest paths
1
2 3
10
9
3 2
1 6 4
5
7
4 5
10+2=12
Single-source shortest paths
1
2 3
10
9
3 2
1 6 4
5
7
4 5
10+2 + 3 + 2 = 17
Single-source shortest paths
1
2 3
10
9
3 2
1 6 4
5
7
4 5
2 3
10
9
3 2
1 -6 4
5
7
4 5
Idea:
Solve it using dynamic programming
For all the paths have at most 0 edge, find all the shortest paths
For all the paths have at most 1 edge, find all the shortest paths
For all the paths have at most |V|-1 edge, find all the shortest
paths
Bellman-Ford algorithm
//Initialize 0-edge shortest paths
-2
2 3
6
-3
0
8
1 7
-4
7 2
4 5
9
Bellman-Ford algorithm
Calculate all at most 1 edge
shortest paths 5
-2
2 3
6
-3
0 /0
8
1 7
-4
7 2
4 5
9
Bellman-Ford algorithm
Calculate all at most 2 edges
shortest paths 5
6 /11
/4
-2
2 3
6
-3
0 /0
8
1 7
-4
7 2
4 5
7 /2
/7
9
Bellman-Ford algorithm
Calculate all at most 3 edges
shortest paths 5
6 4 /4
-2
2 3
6
-3
0 /0
8
1 7
-4
7 2
4 5
7 /7 2 /2
9
Bellman-Ford algorithm
Calculate all at most 4 edges
shortest paths 5
2 4 /4
-2
2 3
6
-3
0 /0
8
1 7
-4
7 2
4 5
7 /7 2 /-2
9
Bellman-Ford algorithm
Final result:
5
2 4
-2
2 3
6
-3
0
8
1 7
-4
7 2
4 5
7 -2
9
What is the shortest path 1, 4, 3, 2, 5
from 1 to 5?
What is the shortest path
What is weight of this path? -2 from 1 to 2, 3, and 4?
Dijkstras Algorithm
Dijkstras Algorithm
The shortest path of the vertex with smallest distance is
determined
1
2 3
10
0 9
3 2
1 6 4
5
7
4 5
2
Dijkstras Algorithm
Choose a vertex whose shortest path is now determined
1
10
2 3
10
0 9
3 2
1 6 4
5
7
4 5
2
Dijkstras Algorithm
Choose a vertex whose shortest path is now determined
1
8 14
2 3
10
0 9
3 2
1 6 4
5
7
4 5
2
Dijkstras Algorithm
Choose a vertex whose shortest path is now determined
1
8 13
2 3
10
0 9
3 2
1 6 4
5
7
4 5
2
Dijkstras Algorithm
Choose a vertex whose shortest path is now determined
1
8 9
2 3
10
0 9
3 2
1 6 4
5
7
4 5
2
Dijkstras Algorithm
Final result:
1
8 9
2 3
10
0 9
3 2
1 6 4
5
7
4 5
1 2
9
1 2 3 4
3
1 0
6 4
2 4
3 3 2
3 4 4 6 0
2
All-pairs shortest paths
D(0)
1 2 3 4
1 0
1 2 2 0 4
3 3 2 0 9
2
3 4 6 0
6 4
What are the weights of shortest paths with
intermediate vertex 1?
3 D(1)
4
1 2 3 4
9
1 0
2 0 4
3 3 0 9
4 6 0
All-pairs shortest paths
D(1)
1 2 3 4
1 0
1 2 2 0 4
3 3 0 9
2
3 4 6 0
6 4
What are the weights of shortest paths with
intermediate vertices 1 and 2?
3 D(2)
4
1 2 3 4
9
1 0
2 0 4
3 3 0 6
4 6 0
All-pairs shortest paths
D(2)
1 2 3 4
1 0
1 2 2 0 4
2
3 3 0 6
3
4 6 0
6 4
What are the weights of shortest paths with
intermediate vertices 1, 2 and 3?
3 4 D(3)
1 2 3 4
9
1 0
2 0 4
3 3 0 6
4 6 0
All-pairs shortest paths
D(3)
1 2 3 4
1 0
1 2 2 0 4
3 3 0 6
2
3 4 6 0
6 4
What are the weights of shortest paths with
intermediate vertices 1, 2, 3 and 4?
D(4)
3 4
1 2 3 4
9 1 0
2 0 4
3 3 0 6
4 6 0
All-pairs shortest paths
Add predecessor information to reconstruct a shortest path
If updated the predecessor i-j in D(k) is the same as the predecessor k-j in D(k-1)
D(0) D(1)
1 2 3 4 1 2 3 4
1 0/n 1 0/n
2 0/n 4/2 2 0/n 4/2
3 3/3 0/n 9/3 3 3/3 0/n 9/3
4 6/4 0/n 4 6/4 0/n
D(2) D(3)
1 2 3 4 1 2 3 4
1 0/n 1 0/n
2 0/n 4/2 2 0/n 4/2
3 3/3 0/n 6/2 3 3/3 0/n 6/2
6/4 0/n 4 6/4 0/n
4
All-pairs shortest paths
D(4)
1 2
1 2 3 4
1 0/n 2
3
2 0/n 4/2 6 4
3 3/3 0/n 6/2
4 6/4 0/n
3 4
9
What is the shortest path 3, 2, 4
from 3 to 4?
What is weight of this path? 6