Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
51 views

Unit V: Dynamic Programming

This document introduces the concepts of dynamic programming and how it differs from divide-and-conquer. It discusses how dynamic programming solves problems by breaking them into overlapping sub-problems and storing the results, rather than recomputing common sub-problems. It then uses the matrix chain multiplication problem as an example to showcase the four steps of developing a dynamic programming algorithm: 1) characterizing optimal solutions, 2) recursive definition of optimal values, 3) bottom-up computation of optimal values, and 4) constructing optimal solutions from computed information. The document explains how this dynamic programming solution computes the optimal parenthesization of multiplying matrices with time and space complexity of O(n3).

Uploaded by

tharunkutti
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views

Unit V: Dynamic Programming

This document introduces the concepts of dynamic programming and how it differs from divide-and-conquer. It discusses how dynamic programming solves problems by breaking them into overlapping sub-problems and storing the results, rather than recomputing common sub-problems. It then uses the matrix chain multiplication problem as an example to showcase the four steps of developing a dynamic programming algorithm: 1) characterizing optimal solutions, 2) recursive definition of optimal values, 3) bottom-up computation of optimal values, and 4) constructing optimal solutions from computed information. The document explains how this dynamic programming solution computes the optimal parenthesization of multiplying matrices with time and space complexity of O(n3).

Uploaded by

tharunkutti
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 16

Unit V

Dynamic Programming
2
Introduction
Optimization problem: there can be many possible solution. Each solution has a
value, and we wish to find a solution with the optimal (minimum or maximum)
value
Dynamic Programming VS. Divide-and-Conquer
Solve problems by combining the solutions to sub-problems
The sub-problems of D-A-C are non-overlap
The sub-problems of D-P are overlap
Sub-problems share sub-sub-problems
D-A-C solves the common sub-sub-problems repeatedly
D-P solves every sub-sub-problems once and stores its answer in
a table
Programming refers to a tabular method
3
Development of A Dynamic-
Programming Algorithm
Characterize the structure of an optimal
solution
Recursively define the value of an
optimal solution
Compute the value of an optimal
solution in a bottom-up fashion
Construct an optimal solution from
computed information
Matrix-Chain Multiplication
5
Overview
Given a sequence (chain) <A
1
, A
2
,, A
n
> of n matrices to be multiplied, compute the
product A
1
A
2
A
n
in a way that minimizes the number of scalar multiplications
Matrix multiplication
Two matrices A and B can be multiplied only if they are compatible
The number of columns of A must equal the number of rows of B
A(p*q) * B(q*r) C(p*r)
The number of scalar multiplication is p*q*r
Example: <A
1
, A
2
, A
3
> (10*100, 100*5, 5*50)
((A
1
A
2
)A
3
) 10*100*5 + 10*5*50 = 5000 + 2500 = 7500
(A
1
(A
2
A
3
)) 100*5*50 + 10*100*50 = 25000 + 50000 = 75000
6
Matrix-Chain Multiplication
Problem
Given a sequence (chain) <A
1
, A
2
,, A
n
> of n matrices to be
multiplied, where i=1,2,, n, matrix A
i
has dimension
p
i-1
*p
i
, fully parenthesize the product A
1
A
2
A
n
in a way that minimizes
the number of scalar multiplications
Determine an order for multiplying matrices that has the lowest
cost
Counting the number of parenthesizations

>
=
=

=
1
1
2 ) ( ) (
1 1
) (
n
k
n if k n P k P
n if
n P


O(2
n
)
Impractical to check all possible parenthesizations
7
Matrix Multiplication
8
Step 1
The structure of an optimal parenthesization
Notation: A
i..j
= result from evaluating A
i
A
i+1
A
j
(i s j)
Any parenthesization of A
i
A
i+1
A
j
must split the product between A
k
and
A
k+1
for some integer k in the range i s k < j
Cost = cost of computing A
i..k
+ cost of computing A
k+1..j
+ cost of
multiplying A
i..k
and A
k+1..j
together
Suppose that an optimal parenthesization of A
i
A
i+1
A
j
splits the product
between A
k
and A
k+1
.
The parenthesization of the prefix sub-chain A
i
A
i+1
A
k
must be an
optimal parenthesization of A
i
A
i+1
A
k
The parenthesization of the prefix sub-chain A
k+1
A
i+1
A
j
must be an
optimal parenthesization of A
k+1
A
i+1
A
j

9
Illustration of Optimal
SubStructure
A
1
A
2
A
3
A
4
A
5
A
6
A
7
A
8
A
9
Suppose
((A
7
A
8
)A
9
)
is optimal
((A
1
A
2
)(A
3
((A
4
A
5
)A
6
)))
Minimal
Cost_A
1..6
+ Cost_A
7..9
+p
0
p
6
p
9

(A
3
((A
4
A
5
)A
6
)) (A
1
A
2
)
Then must be optimal for A
1
A
2
A
3
A
4
A
5
A
6
Otherwise, if
((A
4
A
5
)A
6
) (A
1
(A
2
A
3
))
is optimal for A
1
A
2
A
3
A
4
A
5
A
6
Then
((A
1
(A
2
A
3
)) ((A
4
A
5
)A
6
)) ((A
7
A
8
)A
9
)
will be better than
((A
7
A
8
)A
9
) ((A
1
A
2
)(A
3
((A
4
A
5
)A
6
)))
10
Step 2
A Recursive Solution
Sub-problem: determine the minimum cost of a parenthesization of
A
i
A
i+1
A
j
(1 s i s j s n)
m[i..j] = the minimum number of scalar multiplications needed to
compute the matrix A
i..j
s[i, j] = k, such that m[i, j] = m[i, k] + m[k+1, j] + p
i-1
p
k
p
j
We need to compute m[1..n]
A recursive solution takes exponential time
Encounter each sub-problem many times in different branches
of its recursion tree overlapping sub-problems

< + + +
=
=

< s


j i if p p p j k m k i m
j i if
j i m
j k i
j k
1
1
] , 1 [ ] , [ {
0
] , [
min
11
Step 3
Computing the optimal costs
How much sub-problems in total?
One for each choice of i and j satisfying 1 s i s j s n O(n
2
)
MATRIX-CHAIN-ORDER(p)
Input: a sequence p= <P
1
, P
2
,, P
n
> (length[p] = n+1)
Try to fill in the table m in a manner that corresponds to
solving the parenthesization problem on matrix chains of
increasing length
Lines 4-12: compute m[i, i+1], m[i, i+2], each time

12
O(n
3
), O (n
3
) O(n
3
) running time
O(n
2
) space
13
l = 2
10*20*25
=5000
35*15*5=
2625
l =3
m[3,5] = min
m[3,4]+m[5,5] + 15*10*20
=750 + 0 + 3000 = 3750
m[3,3]+m[4,5] + 15*5*20
=0 + 1000 + 1500 = 2500
14
Step 4
Constructing an optimal solution
Each entry s[i, j] records the value of k such that the optimal
parenthesization of A
i
A
i+1
A
j
splits the product between A
k
and A
k+1
A
1..n
A
1..s[1..n]
A
s[1..n]+1..n
A
1..s[1..n]
A
1..s[1, s[1..n]]
A
s[1, s[1..n]]+1..s[1..n]
Recursive
Elements of Dynamic
Programming
Optimal substructure
Overlapping subproblems
13 March 2013
Unit V Dynamic Programming and
String Matching 16
Example
1
a b a c a a b a c a b a c a b a a b b
7
8
19 18 17 15
a b a c a b
16 14
13
2 3 4 5 6
9
a b a c a b
a b a c a b
a b a c a b
a b a c a b
10 11 12
c
0
c
3
1
a
4 5 2 1 0 j
2 1 0 0
F(j)
b a b a P[j]

You might also like