Professional Documents
Culture Documents
Dynamic Programming 4
Dr. K V Arya
ABV- IIITM ,Gwalior
Summary
Dynamic programming applied to
Algorithm )
Graphs
A graph is an ordered pair G = ( V , E) where
V is a finite set of vertices
E V * V is a set of edges
For example,
V = {1,2,3,4,5}
E={ (1,2) , (1,4) , (1,5) , (2,3) , (3,4) , (3,5) , (4,5) }
1
Directed Graphs
A directed graph is a graph with directions on the edges.
For example,
V = {1,2,3,4,5}
E ={ (1,2) , (1,4) , (1,5) , (2,3) , (3,4) , (3,5) , (4,5) }
1
5
on the edges.
10
100
30
10
50
60
20
Paths in Graphs
A path in a graph G = ( V,E) is a sequence of edges
(v1, v2), (v2,v3) ,,(vn,vn+1)
10
2
100
5
30
10
50
60
4
20
If i=j , then 0.
Computing A k
1.k. Either:
Computing A k
Hence,
Ak
Computing A k
The entries in row k and column k of A k are the same as those in
A k-1.
Row k:
Floyds Algorithm
for i:=1 to n do
for j:=1 to n do
if (i, j) E
then A[i ,j] := cost of (i, j)
else A[i ,j] :=
A[i ,j] := 0
for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
Example
1
10
100
30
10
50
60
4
20
Example
for j:=1 to n do
P [ i, j ] := 0
if (i, j) E
A[i ,j] := 0
for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
if A[i ,k ]+ A[k , j] < A[i ,j ] then
A[i , j] := A[ i , k] + A[ k , j]
P [ i, j ] := k
Procedure shortest ( I, j)
k: = P [ i, j]
if k > 0 then
shortest ( i , k); print ( k) ; shortest ( k , j)
Warshalls Algorithm
for i := 1 to n do
for j := 1 to n do
A[ i, j] := (i,j) E
A[ i, i] := true
for k:= 1 to n do
for i:= 1 to n do
for j:= 1 to n do
A[ i, j] := A[ i, j] or (A[i, k] and A[ k, j])
problem.
The principle is the same every time:
Matrix Product
As another example , consider the matrix product
algorithm.
for i := 1 to n do m [ i,i ] := 0
for d := 1 to n-1 do
for i := 1 to n-d do
j := i + d
m [i , j] := min i k < j ( m[ i, k] + m[k+1, j] + ri-1 r k r j )
Matrix Product
In more detail:
for i := 1 to n do m [ i,i ] := 0
for d := 1 to n-1 do
for i := 1 to n-d do
j := i + d
m [i , j] := m [i , i] + m [i+1 , j] + ri-1 r i r j
for k := i +1 to j-1 do
if m [i , k] + m [k+1 , j] + ri-1 r k r j < m [i , j]
then
m [i , j] := m [i , k] + m [k+1 , j] + ri-1 r k r j
Matrix Product
Add the extra lines :
for i := 1 to n do m [ i,i ] := 0
for d := 1 to n-1 do
for i := 1 to n-d do
j := i + d
m [i , j] := m [i , i] + m [i+1 , j] + ri-1 r i r j
P [ i, j ] := i
for k := i +1 to j-1 do
m [i , j] := m [i , k] + m [k+1 , j] + ri-1 r k r j
P [ i, j ] := k