Dynamic Programming Applications Overview
Dynamic Programming Applications Overview
Principal of optimality:
The principle of optimality states that regardless of the first decision, the remaining decisions must be
optimal with respect to the state resulting from this first decision. This principle implies that an optimal
decision sequence exists for certain formulations of certain problems.
However, since the principle of optimality may not hold for all problem formulations, it is necessary to verify
whether it applies to the specific problem being solved. If the principle does not hold, dynamic programming
cannot be applied to the problem.
1.Characterize the given problem using a mathematical equation that defines the solution or sub-solutions
for the problem.
4 : 0 /1 Knapsack Problem -
5 : Reliability Design
1
OPTIMAL BINARY SEARCH TREE (OBST):
An optimal binary search tree (OBST) is a binary search tree that minimizes the total cost of searching for
a set of keys. The cost is determined by the frequency of access for each key and the depth of the key in the
tree.
The given set of identifiers { a1, a2,…., an} with a1<a2<a3…an. Let p(i) be the probability with which we
can search for ai. Let q(i) be the probability that the identifier x being searched. such that ai < x < ai + 1 and
0 ≤ i ≤ n. In other words, p(i) is the probability of successful search and q(i) be the probability of
unsuccessful search.
Clearly ∑p(i) + ∑ q(i) then obtain a tree with minimum cost. Such a tree with optimum Cost is
1≤i≤n 1≤i≤n
To solve this problem using dynamic programming method by using following formulas.
1 : c ( i, j ) = min { c( i , k - 1 ) + c( k , j ) + w ( i , j ) }
i<k≤j
2 : w( i , j ) = p(j) + q(j) + w ( i , j - 1 )
3 : r( i , j ) = k
Example1 : Using algorithm OBST compute w(i,j), r(i,j) and c(i,j), 0 ≤ i ≤ j ≤ 4 for the identifier set
( a1, a2, a3, a4 ) = ( do, while, for, if ) with ( p1, p2, p3, p4 ) = ( 3, 3, 1, 1 ) and
( q0, q1, q2, q3, q4 ) = ( 2, 3, 1, 1, 1 ) using r ( i , j ) construct the optimal binary search tree.
Solution :
Successful Probability : ( p1, p2, p3, p4 ) = ( 3, 3, 1, 1 )
UnSuccessful Probability : ( q0, q1, q2, q3, q4 ) = ( 2, 3, 1, 1, 1 )
identifier set : ( a1, a2, a3, a4 ) = ( do, while, for, if)
Initial Conditions :
w(i,j)= q(i)
c(i,j) = 0
r(i,j) = 0
Formulas :
1. w( i , j ) = p(j) + q(j) + w ( i , j - 1 )
2. c ( i, j ) = min { c( i , k - 1 ) + c( k , j ) + w ( i , j ) }
i<k≤j
3. r( i , j ) = k
Step1 : j – i = 0
w ( i , j ) = q(i)
w(0,0) = q(0)= 2 c(0,0) = 0 r(0,0) = 0
w(1,1) = q(1)= 3 c(1,1) = 0 r(1,1) = 0
w(2,2) = q(2)= 1 c(2,2) = 0 r(2,2) = 0
w(3,3) = q(3)= 1 c(3,3) = 0 r(3,3) = 0
w(4,4) = q(4)= 1 c(4,4) = 0 r(4,4) = 0
Step 2 : j – i = 1 , ( i =0, j = 1, k = 1 )
w( i , j ) = p(j) + q(j) + w ( i , j - 1 )
w ( 0, 1 ) = p(1) + q(1) + w(0,0)
=3 + 3 + 2 = 8
c ( i, j ) = min { c( i , k - 1 ) + c( k , j )} + w ( i , j )
i<k≤j
c( 0,1) = min { c(0,0)+c(1,1)} + w(0,1)
= min { 0 +0 } + 8
= 0+8 = 8
r(0,1) = 1
( i =1, j = 2, k = 2 )
w ( 1, 2 ) = p(2) + q(2) + w(1,1)
=3+1+3=7
c ( i, j ) = min { c( i , k - 1 ) + c( k , j )} + w ( i , j )
i<k≤j
c(1,2) = min { c(1,1)+c(2,2)} + w(1,2)
= min { 0 + 0 } + 7= 7
r(1,2) = 2
( i =2, j = 3, k = 3 )
w ( 2, 3 ) = p ( 3 ) + q(3) + w(2,2)
=1+1+1=3
c ( i, j ) = min { c( i , k - 1 ) + c( k , j )} + w ( i , j )
i<k≤j
c( 2,3) = min { c(2,2) + c(3,3)} + w(2,3)
= min { 0 + 0 } + 3 = 3
r(2,3) = 3
3
( i =3, j = 4, k = 4 )
w ( 3, 4 ) = p(4)+q(4)+w(3,3)
=1+1+1=3
c ( i, j ) = min { c( i , k - 1 ) + c( k , j )} + w ( i , j )
i<k≤j
c( 3,4) = min { c(3,3) + c( 4,4) } + w(3,4)
= min { 0 + 0} + 3 = 3
r(3,4) = 4
Step 3 : j – i = 2 , ( i =0, j= 2, k= 1,2 )
( i =1, j= 3, k=2,3 )
4
Step 4 : j – i = 3 , ( i =0, j= 3, k=1,2,3 )
5
To build Optimal Binary Search Tree ( OBST )
w ( 0, 0 ) = 2 w ( 1, 1 ) = 3 w ( 2, 2 ) = 1 w ( 3, 3 ) = 1 w ( 4, 4 ) = 1
for a set( i, j )
c ( 0, 0 ) = 0 c (1, 1) = 0 c (2, 2) = 0 c (3, 3) = 0 c (4, 4) = 0
j–i=0
r ( 0, 0 ) = 0 r (1, 1 ) = 0 r (2, 2 ) = 0 r (3, 3 ) = 0 r (4, 4 ) = 0
w ( 0, 1 ) = 8 w ( 1, 2 ) = 7 w ( 2, 3 ) = 3 w ( 3, 4 ) = 3
r ( 0, 1 ) = 1 r (1, 2 ) = 2 r (2, 3 ) = 3 r ( 3, 4 ) = 4
w ( 0, 2 ) = 12 w (1, 3) = 9 w (2, 4) = 5
r ( 0, 2 ) = 1 r (1, 3 ) = 2 r (2, 4 ) = 3
w ( 0, 3 ) = 14 w (1, 4 ) = 11
j–i=3 c ( 0, 3 ) = 25 c (1, 4 ) = 19
r ( 0, 3 ) = 2 r (1, 4 ) = 2
w ( 0, 4 ) = 16
j–i=4 c ( 0, 4 ) = 32
r ( 0, 4 ) = 2
6
To build OBST, r ( 0,4) = 2, K =2.
r(i,k-1) r(k,j)
r(0,4)=2
r(i,k-1) r(k,j)
r(0,1)=1 r(2,4)= 3
r(i,k-1) r(k,j)
r(3,3)=0 r(4,4) = 0
( a1, a2, a3, a4 ) = ( do, while, for, if )
while
do for
if
7
Example 2 : Using the algorithm OBST, compute W(i,j), R(i,j) and C(i,j), 0<=i<j<=4 for the identifier set
(a1,a2,a3,a4)=(end, goto, print, stop) with p(1)=1/20, p(2)=1/5, p(3)=1/10, p(4)=1/20; q(0)=1/5,
q(1)=1/10, q(2)=1/5, q(3)=1/20 and q(4)=1/20. Using the R(i,j)’s construct the OBST.
Solution :
Successful Probability
P(1) = 1/20 * 20 = 1
P(2) = 1/5 * 20 = 4
P(3) = 1/10 * 20 = 2
P(4) = 1/20 * 20 = 1
( p1,p2,p3,p4 ) = ( 1, 4, 2, 1 )
UnSuccessful Probability
q(0)=1/5 * 20 = 4
q(1)=1/10 * 20 = 2
q(2)=1/5 * 20 = 4
q(3)=1/20 * 20=1
q(4)=1/20* 20=1
(q0,q1,q2,q3,q4) = ( 4,2,4,1,1 )
(a1,a2,a3,a4)=(end, goto, print, stop)
Initial Conditions :
w(i,j)= q(i)
c(i,j) = 0
r(i,j) = 0
Formulas :
1. w( i , j ) = p(j) + q(j) + w ( i , j - 1 )
2. c ( i, j ) = min { c( i , k - 1 ) + c( k , j ) + w ( i , j ) }
i<k≤j
3. r( i , j ) = k
8
Step1 : j – i = 0
w ( i , j ) = q(i)
w(0,0) = q(0)= 4 c(0,0) = 0 r(0,0) = 0
w(1,1) = q(1)= 2 c(1,1) = 0 r(1,1) = 0
w(2,2) = q(2)= 4 c(2,2) = 0 r(2,2) = 0
w(3,3) = q(3)= 1 c(3,3) = 0 r(3,3) = 0
w(4,4) = q(4)= 1 c(4,4) = 0 r(4,4) = 0
Step 2 : j – i = 1 , ( i =0, j = 1, k = 1 )
w( i , j ) = p(j) + q(j) + w ( i , j - 1 )
w ( 0, 1 ) = p(1) + q(1) + w(0,0)
=1 + 2 + 4 = 7
c ( i, j ) = min { c( i , k - 1 ) + c( k , j )} + w ( i , j )
i<k≤j
c( 0,1) = min { c(0,0)+c(1,1)} + w(0,1)
= min { 0 +0 } + 7
= 0+7 = 7
r(0,1) = 1
( i =1, j = 2, k = 2 )
w ( 1, 2 ) = p(2)+q(2)+w(1,1)
= 4 + 4 + 2 = 10
c ( i, j ) = min { c( i , k - 1 ) + c( k , j )} + w ( i , j )
i<k≤j
c(1,2) = min { c(1,1)+c(2,2)} + w(1,2)
= min { 0 + 0 } + 10= 10
r(1,2) = 2
( i =2, j = 3, k = 3 )
w ( 2, 3 ) = p ( 3 ) + q(3) + w(2,2)
=2+1+4=7
c ( i, j ) = min { c( i , k - 1 ) + c( k , j )} + w ( i , j )
i<k≤j
c( 2,3) = min { c(2,2) + c(3,3)} + w(2,3)
= min { 0 + 0 } + 7 = 7
r(2,3) = 3
9
( i =3, j = 4, k = 4 )
w ( 3, 4 ) = p(4)+q(4)+w(3,3)
=1+1+1=3
c ( i, j ) = min { c( i , k - 1 ) + c( k , j )} + w ( i , j )
i<k≤j
c( 3,4) = min { c(3,3) + c( 4,4) } + w(3,4)
= min { 0 + 0} + 3 = 3
r(3,4) = 4
Step 3 : j – i = 2 , ( i =0, j= 2, k= 1,2 )
10
Step 4 : j – i = 3 , ( i =0, j= 3, k=1,2,3 )
11
To build Optimal Binary Search Tree ( OBST )
w ( 0, 0 ) = 4 w ( 1, 1 ) = 2 w ( 2, 2 ) = 4 w ( 3, 3 ) = 1 w ( 4, 4 ) = 1
for a set( i, j )
c ( 0, 0 ) = 0 c (1, 1) = 0 c (2, 2) = 0 c (3, 3) = 0 c (4, 4) = 0
j–i=0
r ( 0, 0 ) = 0 r (1, 1 ) = 0 r (2, 2 ) = 0 r (3, 3 ) = 0 r (4, 4 ) = 0
w ( 0, 1 ) = 7 w ( 1, 2 )= 10 w ( 2, 3 ) = 7 w ( 3, 4 ) = 3
r ( 0, 1 ) = 1 r (1, 2 ) = 2 r (2, 3 ) = 3 r ( 3, 4 ) = 4
w ( 0, 2 ) = 15 w (1, 3) = 13 w (2, 4) = 9
r ( 0, 2 ) = 2 r (1, 3 ) = 2 r (2, 4 ) = 3
w ( 0, 3 ) = 18 w (1, 4 ) = 15
j–i=3 c ( 0, 3 ) = 21 c (1, 4 ) = 27
r ( 0, 3 ) = 2 r (1, 4 ) = 2
w ( 0, 4 ) = 20
j–i=4 c ( 0, 4 ) = 39
r ( 0, 4 ) = 2
12
To build OBST, r ( 0,4) = 2, K =2.
r(i,k-1) r(k,j)
r(0,4)=2
r(i,k-1) r(k,j)
r(0,1)=1 r(2,4)= 3
r(i,k-1) r(k,j)
r(3,3)=0 r(4,4) = 0
( a1, a2, a3, a4 )=( end, goto, print, stop )
goto
end print
Stop
13
ALL PAIRS SHORTEST PATHS PROBLEM:
Let G = ( V, E ) be a directed graph consisting of n vertices and each edge is associated with a weight. The
problem of finding the shortest path between all pairs of vertices in a graph is called all pairs shortest
path problem.
This problem can be solved by using Dynamic Programming technique. The all pairs shortest
path problem is to determine a matrix A such that A( i , j ) is the length of a shortest path from vertex i to
vertex j. Assume that this path contains no cycles. If k is an intermediate vertex on this path, then the sub
paths from i to k and from k to j are the shortest paths from i to k and k to j respectively. Otherwise the
path I to j is not shortest path. If k is intermediate vertex with higest index, then the path i to k is the
shortest path going through no vertex with index greater than k – 1. Similarly the path k to j is the shortest
path going through no vertex with index greater than k – 1.
14
Ex : find the shortest path between all pairs of node in the following graph.
1 2
1
4 3
2
3 4
6
Sol :
1 2
1
4 3
2
3 4
6
0 5 4 1
1
5 0 2 3
2 = A0
4 2 0 6
3
1 3 6 0
4
The formula for finding the all pairs shortest path problem as follows,
Ak ( i, j ) = min { Ak – 1 ( i, j ), Ak – 1 ( i, k ) + Ak – 1 ( k, j ) }
Where if k ≥ 1.
Ak , number of iterations to be taken .
These iterations depends on the number of weights of vertices given, in our problem, we have 5 vertices.
we will take 4 iterations and we will always start from A0 is the given matrix. So we have to find A1 , A2 ,
A3 A4 for the shortest path. According to the formula
15
K=1
A1 ( 1, 1 ) = min { A1 – 1 ( 1, 1 ), A1– 1 ( 1, 1 ) + A1 – 1 ( 1, 1 ) }
= min { 0, 0 + 0 } = 0
A1 ( 1, 2 ) = min { A1 – 1 ( 1, 2 ), A1– 1 ( 1, 1 ) + A1 – 1 ( 1, 2 ) }
= min { 5, 0 + 5 } = 5
A1 ( 1, 3 ) = min { A1 – 1 ( 1, 3 ), A1– 1 ( 1, 1 ) + A1 – 1 ( 1, 3 ) }
= min { 4, 0 + 4 } = 4
A1 ( 1, 4 ) = min { A1 – 1 ( 1, 4 ), A1– 1 ( 1, 1 ) + A1 – 1 ( 1, 4 ) }
= min { 1, 0 + 1 } = 1
A1 ( 2, 1 ) = min { A1 – 1 ( 2, 1 ), A1– 1 ( 2, 1 ) + A1 – 1 ( 1, 1 ) }
= min { 5, 5 + 0 } = 5
A1 ( 2, 2 ) = min { A1 – 1 ( 2, 2 ), A1– 1 (2, 1 ) + A1 – 1 ( 1, 2 ) }
= min { 0,5 + 5 } = 0
A1 ( 2, 3 ) = min { A1 – 1 ( 2, 3 ), A1– 1 ( 2, 1 ) + A1 – 1 ( 1, 3 ) }
= min { 2, 5 + 4 } = 2
A1 ( 2, 4 ) = min { A1 – 1 ( 2, 4 ), A1– 1 ( 2, 1 ) + A1 – 1 ( 1, 4 ) }
= min { 3, 5 + 1 } = 3
A1 ( 3, 1 ) = min { A1 – 1 ( 3, 1 ), A1– 1 ( 3, 1 ) + A1 – 1 ( 1, 1 ) }
= min { 4, 4 + 0 } = 4
A1 ( 3, 2 ) = min { A1 – 1 ( 3, 2 ), A1– 1 (3, 1 ) + A1 – 1 ( 1, 2 ) }
= min { 2,4 + 5 } = 2
A1 ( 3, 3 ) = min { A1 – 1 ( 3, 3 ), A1– 1 ( 3, 1 ) + A1 – 1 ( 1, 3 ) }
= min { 0, 4 + 4 } = 0
A1 ( 3, 4 ) = min { A1 – 1 ( 3, 4 ), A1– 1 ( 3, 1 ) + A1 – 1 ( 1, 4 ) }
= min { 6, 4 + 1 } = 5
A1 ( 4, 1 ) = min { A1 – 1 ( 4, 1 ), A1– 1 ( 4, 1 ) + A1 – 1 ( 1, 1 ) }
= min { 1, 1 + 0 } = 1
A1 ( 4, 2 ) = min { A1 – 1 ( 4, 2 ), A1– 1 (4, 1 ) + A1 – 1 ( 1, 2 ) }
= min { 3,1 + 5 } = 3
A1 ( 4, 3 ) = min { A1 – 1 ( 4, 3 ), A1– 1 ( 4, 1 ) + A1 – 1 ( 1, 3 ) }
= min { 6, 1 + 4 } = 5
A1 ( 4, 4 ) = min { A1 – 1 ( 4, 4 ), A1– 1 ( 4, 1 ) + A1 – 1 ( 1, 4 ) }
= min { 0, 1 + 1 } = 0
16
0 5 4 1
5 0 2 3
A1 =
4 2 0 5
1 3 5 0
K=2
A2 ( 1, 1 ) = min { A2 – 1 ( 1, 1 ), A2– 1 ( 1, 2 ) + A2 – 1 ( 2, 1 ) }
= min { 0, 5 + 5 } = 0
A2 ( 1, 2 ) = min { A2 – 1 ( 1, 2 ), A2– 1 ( 1, 2 ) + A2 – 1 ( 2, 2 ) }
= min { 5, 5 + 0 } = 5
A2 ( 1, 3 ) = min { A2 – 1 ( 1, 3 ), A2– 1 ( 1, 2 ) + A2 – 1 ( 2, 3 ) }
= min { 4, 5 + 2 } = 4
A2 ( 1, 4 ) = min { A2 – 1 ( 1, 4 ), A2– 1 ( 1, 2 ) + A\2 – 1 ( 2, 4 ) }
= min { 1, 5 + 3 } = 1
A2 ( 2, 1 ) = min { A2 – 1 ( 2, 1 ), A2– 1 ( 2, 2 ) + A2 – 1 ( 2, 1 ) }
= min { 5, 0 + 5 } = 5
A2 ( 2, 2 ) = min { A2 – 1 ( 2, 2 ), A2– 1 (2, 2 ) + A2 – 1 ( 2, 2 ) }
= min { 0,0 + 0 } = 0
A2 ( 2, 3 ) = min { A2 – 1 ( 2, 3 ), A2– 1 ( 2, 2 ) + A2 – 1 ( 2, 3 ) }
= min { 2, 0 + 2 } = 2
A2 ( 2, 4 ) = min { A2 – 1 ( 2, 4 ), A2– 1 ( 2, 2 ) + A2 – 1 ( 2, 4 ) }
= min { 3, 0 + 3} = 3
A2 ( 3, 1 ) = min { A2 – 1 ( 3, 1 ), A2– 1 ( 3, 2 ) + A2 – 1 ( 2, 1 ) }
= min { 4, 2 + 5 } = 4
A2 ( 3, 2 ) = min { A2 – 1 ( 3, 2 ), A2– 1 (3, 2 ) + A2 – 1 ( 2, 2 ) }
= min { 2,2 + 0 } = 2
A2 ( 3, 3 ) = min { A2 – 1 ( 3, 3 ), A2– 1 ( 3, 2 ) + A2 – 1 ( 2, 3 ) }
= min { 0, 2 + 2 } = 0
A2 ( 3, 4 ) = min { A2 – 1 ( 3, 4 ), A2– 1 ( 3, 2 ) + A2 – 1 ( 2, 4 ) }
= min { 5, 2 + 3 } = 5
17
A2 ( 4, 1 ) = min { A2 – 1 ( 4, 1 ), A2– 1 ( 4, 2 ) + A2 – 1 ( 2, 1 ) }
= min { 1, 3 + 5 } = 1
A2 ( 4, 2 ) = min { A2 – 1 ( 4, 2 ), A2– 1 (4, 2 ) + A2 – 1 ( 2, 2 ) }
= min { 3,3 + 0 } = 3
A2 ( 4, 3 ) = min { A2 – 1 ( 4, 3 ), A2– 1 ( 4, 2 ) + A2 – 1 ( 2, 3 ) }
= min { 5, 3 + 2 } = 5
A2 ( 4, 4 ) = min { A2 – 1 ( 4, 4 ), A2– 1 ( 4, 2 ) + A2 – 1 ( 2, 4 ) }
= min { 0, 3 + 3 } = 0
0 5 4 1
5 0 2 3
A2 =
4 2 0 5
1 3 5 0
K=3
A3 ( 1, 1 ) = min { A3 – 1 ( 1, 1 ), A3– 1 ( 1, 3 ) + A3 – 1 ( 3, 1 ) }
= min { 0, 4 + 4 } = 0
A3 ( 1, 2 ) = min { A3 – 1 ( 1, 2 ), A3– 1 ( 1, 3 ) + A3 – 1 ( 3, 2 ) }
= min { 5, 5 + 0 } = 5
A3 ( 1, 3 ) = min { A3 – 1 ( 1, 3 ), A3– 1 ( 1, 3 ) + A3 – 1 ( 3, 3 ) }
= min { 4, 5 + 2 } = 4
A3 ( 1, 4 ) = min { A3 – 1 ( 1, 4 ), A3– 1 ( 1, 3 ) + A\3 – 1 ( 3, 4 ) }
= min { 1, 4 + 5 } = 1
A3 ( 2, 1 ) = min { A3 – 1 ( 2, 1 ), A3– 1 ( 2, 3 ) + A3 – 1 ( 3, 1 ) }
= min { 5, 4 + 4 } = 5
A3 ( 2, 2 ) = min { A3 – 1 ( 2, 2 ), A3– 1 (2, 3 ) + A3 – 1 ( 3, 2 ) }
= min { 0,2 + 2 } = 0
A3 ( 2, 3 ) = min { A3 – 1 ( 2, 3 ), A3– 1 ( 2, 3 ) + A3 – 1 ( 3, 3 ) }
= min { 2, 2 + 0 } = 2
A3 ( 2, 4 ) = min { A3 – 1 ( 2, 4 ), A3– 1 ( 2, 3 ) + A3 – 1 ( 3, 4 ) }
= min { 3, 2 + 5} = 3
18
A3 ( 3, 1 ) = min { A3 – 1 ( 3, 1 ), A3– 1 ( 3, 3 ) + A3 – 1 ( 3, 1 ) }
= min { 4, 0 + 4 } = 4
A3 ( 3, 2 ) = min { A3 – 1 ( 3, 2 ), A3– 1 (3, 3 ) + A3 – 1 ( 3, 2 ) }
= min { 2,0 + 2 } = 2
A3 ( 3, 3 ) = min { A3 – 1 ( 3, 3 ), A3– 1 ( 3, 3 ) + A3 – 1 ( 3, 3 ) }
= min { 0, 0 + 0 } = 0
A3 ( 3, 4 ) = min { A3 – 1 ( 3, 4 ), A3– 1 ( 3, 3 ) + A3 – 1 ( 3, 4 ) }
= min { 5, 0 + 5} = 5
A3 ( 4, 1 ) = min { A3 – 1 ( 4, 1 ), A3– 1 ( 4, 3 ) + A3 – 1 ( 3, 1 ) }
= min { 1, 5 + 4 } = 1
A3 ( 4, 2 ) = min { A3 – 1 ( 4, 2 ), A3– 1 (4, 3 ) + A3 – 1 ( 3, 2 ) }
= min { 3,5 + 2 } = 3
A3 ( 4, 3 ) = min { A3 – 1 ( 4, 3 ), A3– 1 ( 4, 3 ) + A3 – 1 ( 3, 3 ) }
= min { 5, 5 + 0 } = 5
A3 ( 4, 4 ) = min { A3 – 1 ( 4, 4 ), A3– 1 ( 4, 3 ) + A3 – 1 ( 3, 4 ) }
= min { 0, 5 + 5} = 0
0 5 4 1
5 0 2 3
A3 =
4 2 0 5
1 3 5 0
K=4
A4 ( 1, 1 ) = min { A4 – 1 ( 1, 1 ), A4– 1 ( 1, 4 ) + A4 – 1 ( 4, 1 ) }
= min { 0, 1 + 1 } = 0
A4 ( 1, 2 ) = min { A4 – 1 ( 1, 2 ), A4– 1 ( 1, 4 ) + A4 – 1 ( 4, 2 ) }
= min { 5, 1 + 3 } = 4
A4 ( 1, 3 ) = min { A4 – 1 ( 1, 3 ), A4– 1 ( 1, 4 ) + A4 – 1 ( 4, 3 ) }
= min { 4, 1 + 5 } = 4
A4 ( 1, 4 ) = min { A4 – 1 ( 1, 4 ), A4– 1 ( 1, 4 ) + A\4 – 1 ( 4, 4 ) }
= min { 1, 1 + 0 } = 1
19
A4 ( 2, 1 ) = min { A4 – 1 ( 2, 1 ), A4– 1 ( 2, 4 ) + A4 – 1 ( 4, 1 ) }
= min { 5, 3 + 1 } = 4
A4 ( 2, 2 ) = min { A4 – 1 ( 2, 2 ), A4– 1 ( 2, 4 ) + A4 – 1 ( 4, 2 ) }
= min { 0, 3 + 3 } = 0
A4 ( 2, 3 ) = min { A4 – 1 ( 2, 3 ), A4– 1 ( 2, 4 ) + A4 – 1 ( 4, 3 ) }
= min { 2, 3 + 5 } = 2
A4 ( 2, 4 ) = min { A4 – 1 ( 2, 4 ), A4– 1 ( 2, 4 ) + A\4 – 1 ( 4, 4 ) }
= min { 3, 3 + 0 } = 3
A4 ( 3, 1 ) = min { A4 – 1 ( 3, 1 ), A4– 1 ( 3, 4 ) + A4 – 1 ( 4, 1 ) }
= min { 4, 5 + 1 } = 4
A4 ( 3, 2 ) = min { A4 – 1 ( 3, 2 ), A4– 1 ( 3, 4 ) + A4 – 1 ( 4, 2 ) }
= min { 2, 5 + 3 } = 2
A4 ( 3, 3 ) = min { A4 – 1 ( 3, 3 ), A4– 1 ( 3, 4 ) + A4 – 1 ( 4, 3 ) }
= min { 0, 5 + 5 } = 0
A4 ( 3, 4 ) = min { A4 – 1 ( 3, 4 ), A4– 1 ( 3, 4 ) + A\4 – 1 ( 4, 4 ) }
= min { 5, 5 + 0 } = 5
A4 ( 4, 1 ) = min { A4 – 1 ( 4, 1 ), A4– 1 ( 4, 4 ) + A4 – 1 ( 4, 1 ) }
= min { 1, 0 + 1 } = 1
A4 ( 4, 2 ) = min { A4 – 1 ( 4, 2 ), A4– 1 ( 4, 4 ) + A4 – 1 ( 4, 2 ) }
= min { 3, 0 + 3 } = 3
A4 ( 4, 3 ) = min { A4 – 1 ( 4, 3 ), A4– 1 ( 4, 4 ) + A4 – 1 ( 4, 3 ) }
= min { 5, 0 + 5 } = 5
A4 ( 4, 4 ) = min { A4 – 1 ( 4, 4 ), A4– 1 ( 4, 4 ) + A\4 – 1 ( 4, 4 ) }
= min { 0, 0 + 0 } = 0
0 4 4 1
4 0 2 3
A4 =
4 2 0 5
1 3 5 0
20
Travelling Salesperson Problem:
If there are n cities, and the cost of traveling between any two cities is given, a salesman needs to start
from one city, visit all the cities exactly once, and return to the starting city. The goal is to find the route
with the shortest distance or minimum cost.
1 : g(i, Φ ) = Ci , 1
Here g(i, S) means i is starting node and the nodes in S are to be traversed. min is considered as the
intermediate node g( j , S – { j } ) means j is already traversed. So next we have to traverse S – { j } with j
as starting point.
Example 1 : Construct an optimal travelling sales person tour using Dynamic Programming.
21
Step2 : Consider set of 1 elements, such that
S = 1, {2} , { 3 } , { 4 }
g( i, S ) = min { Ci j + g( j, S – { j })
g(i, S) = min { Ci j + g( j, S – { j }) }
22
g( 4, { 2,3 } ) = min { c42 + g( 2, {2,3 } – {2}) , c43 + g( 3, {2,3 } – {3}) }
= min { 3 + g( 2, {3}), 2 + g(3, {2}) }
= min { 3 + 17, 2 + 20 }
= min { 20, 22 }
= 20.
S = 3, { 2,3,4 }
23
Example 2 : Construct an optimal travelling sales person tour using Dynamic Programming.
g(i, S) = min { Ci j + g( j, S – { j }) }
S = 3, { 2,3,4 }
g(i, S) = min { Ci j + g( j, S – { j }) }
25
0 /1 Knapsack Problem:
Initially S0 = { ( 0,0 ) }
S3 = { (0,0),(1,2),(2,3),(5,4),(6,6),(7,7),(8,9) }
27
Here Capacity of the Knapsack is 6, Now we have to remove the pairs, in which wi>m, i.e wi>6
S3 = { (0,0),(1,2),(2,3),(5,4),(6,6) }
( 1,2 ) belongs to S1
28
Example 2 : Consider the following 0 / 1 Knapsack problem using dynamic programming m = 8,
n = 4.
Solution : we have to build the sequence of decisions S0, S1, S2, S3, S4
Initially S0 = { ( 0,0 ) }
S1 = S0 U S01
= { ( 0,0 ) } U { ( 1,2 ) }
= { ( 0,0 ), ( 1,2 ) }
To apply Purging Rule : There will be no deleted
S11 = Select next (P2,W2) pair and add it with S1
= ( 2,3 ) + { ( 0,0 ), ( 1,2 ) }
= { ( 2 + 0, 3 + 0 ), ( 2 + 1, 3 + 2 ) }
= { ( 2,3 ) , ( 3,5 ) }
S2 = S1 U S11
= { ( 0,0 ), ( 1,2 ) } U{ ( 2,3 ) , ( 3,5 ) }
= { ( 0,0 ) , (1,2), (2,3),(3,5) }
To apply Purging Rule : There will be no deleted
S21 = Select next (P3,W3) pair and add it with S2
= ( 5,4 ) + { ( 0,0 ) , (1,2), (2,3),(3,5) }
= { ( 5+0,4+0),(5+1,4+2),(5+2,4+3),(5+3,4+5)}
= { ( 5,4 ),(6,6), (7,7), (8,9) }
29
S3 = S2 U S21
= { (0,0),(1,2),(2,3),(3,5),(5,4),(6,6),(7,7),(8,9) }
To apply Purging Rule
( 3,5) and ( 5,4 )
(pj,wj) and ( pk,wk)
S3 = { (0,0),(1,2),(2,3),(5,4),(6,6),(7,7),(8,9) }
Here Capacity of the Knapsack is 8, Now we have to remove the pairs, in which wi>m, i.e wi>8
( 2,3 ) belongs to S2
30
Therefore , We must set x3 = 0
( 2,3 ) belongs to S2
( 2,3 ) does not belongs to S1
31
Reliability design