Design and Analysis of Algorithms: CSE 5311 Lecture 22 All-Pairs Shortest Paths
Design and Analysis of Algorithms: CSE 5311 Lecture 22 All-Pairs Shortest Paths
CSE 5311
Lecture 22 All-Pairs Shortest Paths
vi vj
• SLOW-APSP( W )
D1 ← W
for m ← 2 to n-1 do
Dm ← EXTEND( Dm-1 , W )
return Dn-1
EXTEND ( D , W ) MATRIX-MULT ( A , B )
► D = ( d ij ) is an n x n matrix ► C = ( cij ) is an n x n result
for i ← 1 to n do matrix
for j ← 1 to n do for i ←1 to n do
d ij ← ∞ for j ← 1 to n do
for k ← 1 to n do cij ← 0
d ij ← min{d ij , d ik + ωk j} for k ← 1 to n do
return D cij ← cij + aik x bk j
return C
• running time : Θ( n4 ) = Θ( V4 )
► each matrix product : Θ( n3 )
► number of matrix products : n-1
• Example
2
3 4
1 3
8
2
-5
1
-4 7
5 4
6
2 1 2 3 4 5
3 4
1 0 3 8 ∞ -4
1 3
2
8 2 ∞ 0 ∞ 1 7
-5
1 3 ∞ 4 0 ∞ ∞
7
-4 4 2 ∞ -5 0 ∞
5 4
6 5 ∞ ∞ ∞ 6 0
D1= D0W
2 1 2 3 4 5
3 4
1 0 3 8 2 -4
1 3
2
8 2 3 0 -4 1 7
-5
1 3 ∞ 4 0 5 11
-4 7
4 2 -1 -5 0 -2
5 4
6
5 8 ∞ 1 6 0
D2= D1W
2 1 2 3 4 5
3 4
1 0 3 -3 2 -4
1 3
2
8 2 3 0 -4 1 -1
-5
1 3 7 4 0 5 11
-4 7 4 2 -1 -5 0 -2
5 4
6 5 8 5 1 6 0
D3= D2W
1 2 3 4 5
2
3 4 1 0 1 -3 2 -4
1 3 2 3 0 -4 1 -1
8
2
-5 3 7 4 0 5 3
1
-4 7 4 2 -1 -5 0 -2
5 4
6 5 8 5 1 6 0
D4= D3W
k
dijm
= k ×
ri ri
Dm ↔ C Dm-1 ↔ A W↔B
► ri of C = matrix B multiplied by ri of A
⇒ Dim = Dim-1 x W
0 if i = j
• let Di0 = d0, where dj0 =
∞ otherwise
• we compute a sequence of n-1 “matrix-vector” products
di1 = di0 x W
di2 = di1 x W
di3 = di2 x W
:
din-1 = din-2 x W
BELLMAN-FORD ( G , vi ) EXTEND ( di , W )
► perform RELAX ( u , v ) ► di is an n-vector
for for j ← 1 to n do
► every edge ( u , v ) ∈ E dj ← ∞
for k ← 1 to n do
for j ← 1 to n do dj ← min { dj , dk +
for k ← 1 to n do ωkj }
RELAX ( vk , vj )
RELAX ( u , v )
dv = min { dv , du + ωuv }
• final iteration computes D2m for some n-1 ≤ 2m ≤ 2n-2 ⇒ D2m = Dn-1
• running time : Θ( n3lgn ) = Θ( V3lgV )
vi vj
Vm
p1 vm p2
vi vj
FLOYD-WARSHALL( W )
►D0, D1, ... , Dn are n x n matrices
for m ← 1 to n do
for i ← 1 to n do
for j ← 1 to n do
dijm ← min {dijm-1 , dimm-1 + dmjm-1 }
return Dn
FLOYD-WARSHALL ( W )
► D is an n x n matrix
D←W
for m ← 1 to n do
for i ← 1 to n do
for j ← 1 to n do
if dij > dim + dmj then
dij ← dim + dmj
return D
• running time : Θ( n3 ) = Θ( V3 )
simple code, no complex data structures, small hidden constants
• recursive definition for tijm = tijm-1 (timm-1 tmjm-1 ) with tij0 = ωij
T-CLOSURE (G )
► T = ( tij ) is an n x n boolean matrix
for i ← 1 to n do
for j ← 1 to n do
if i = j or ( vi , vj ) ∈ E then
tij ← 1
else
tij ← 0
for m ← 1 to n do
for i ← 1 to n do
for j ← 1 to n do
tij ← tij ( tim tmj )
Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 34
Johnson’s Algorithm for Sparse Graphs
• L1 : given G = ( V , E ) with ω : E → R
► let h : V → R be any weighting function on the vertex set
► define ω( ω , h ) : E → R as ω( u , v ) = ω( u , v ) + h (u) – h (v)
► let p0k = < v0 , v1 , ... , vk > be a path from v0 to vk