Professional Documents
Culture Documents
Dynamic Programming
Writes down "1+1+1+1+1+1+1+1 =" on a sheet of paper.
"What's that equal to?"
Counting "Eight!"
Writes down another "1+" on the left.
"What about that?"
"Nine!" " How'd you know it was nine so fast?"
"You just added one more!"
"So you didn't need to recount because you remembered there were
eight! Dynamic Programming is just a elaborate way to say
remembering things to save time later!"
CS AA GS 1
Introduction
Dynamic Programming(DP) applies to optimization problems
in which a set of choices must be made in order to arrive at an
optimal solution.
As choices are made, subproblems of the same form arise.
DP is effective when a given problem may arise from more
than one partial set of choices.
The key technique is to store the solution to each subproblem
in case it should appear.
2
Introduction (cont.)
Divide and Conquer algorithms partition the problem into independent
subproblems.
Dynamic Programming is applicable when the subproblems are not
independent
Dynamic Programming algorithm solves every subproblem just once and
then saves its answer in a table.
Dynamic Programming is an algorithm design technique for optimization
problems: often minimizing or maximizing.
Like divide and conquer, DP solves problems by combining solutions to
sub problems.
• Unlike divide and conquer, sub problems are not independent.
• Sub problems may share sub problems,
• However, solution to one sub problem may not affect the solutions to other sub problems of the
same problem.
A DAC algorithm does redundant work– Repeatedly solves common subproblems
• A DP algorithm solves each problem just once – Saves its result in a table.
3
Essence of DP
The Dynamic Programming (DP) is the most powerful design technique for solving optimization
problems.
The DP in closely related to divide and conquer techniques, where the problem is divided into
smaller sub-problems and each sub-problem is solved recursively.
“Programming” refers to a tabular method with a series of choices, not “coding”
A set of choices must be made to arrive at an optimal solution.
As choices are made, sub problems of the same form arise frequently.
The key is to store the solutions of sub problems to be reused in the future.
Recall the divide-and-conquer approach: Partition the problem into independent sub problems.
Solve the sub problems recursively. Combine solutions of sub problems.
This contrasts with the dynamic programming approach.
The DP differs from divide and conquer in a way that instead of solving sub-problems recursively, it
solves each of the sub problems only once and stores the solution to the sub-problems in a table.
The solution to the main problem is obtained by the solutions of these sub problems.
Used for optimization problems.
Find a solution with the optimal value.
Minimization or maximization. CS AA GS 4
Algorithmic Paradigm Context
Divide & Dynamic
Conquer Programming
View problem as collection of
subproblems
“Recursive” nature
Independent subproblems
Overlapping subproblems
CS AA GS 7
Dynamic Programming Approach to Optimization
Problems
1. Characterize structure of an optimal solution.
2. Recursively define value of an optimal solution.
3. Compute value of an optimal solution in bottom-up fashion.
4. Construct an optimal solution from computed information.
Solves problems by combining the solution to sub-problems.
it solves the sub problems just once and then saves its answer in a table
A dynamic programming remembers past result and used them to find new result
Multiple solution exist need to find the best one Requires ”optimal substructure” and
“overlapping sub-problems”
Optimal substructure: Optimal solution contains optimal solutions to sub-problems
Overlapping sub-problems: -Solutions to sub-problems can be stored and reused in a
bottom-up fashion
CS AA GS 8
Matrix-Chain multiplication
A1, A2 , ..., An
A1A2 ...An
9
Matrix-Chain multiplication (cont.)
NOTE: The way the chain is parenthesized can have a dramatic impact on the cost
of evaluating the product 10
Example:
• A[30][35], B[35][15], C[15][5]
minimum of A*B*C
A*(B*C) = 30*35*5 + 35*15*5 = 7,585
(A*B)*C = 30*35*15 + 30*15*5 = 18,000
• How to optimize:
• Brute force – look at every possible way to parenthesize : Ω(4n/n3/2)
• Dynamic programming – time complexity of Ω(n3) and space complexity of Θ(n2).
11
Matrix-Chain multiplication
MATRIX-MULTIPLY (A,B)
if columns [A] ≠ rows [B]
then error “incompatible dimensions”
else for i←1 to rows [A]
do for j←1 to columns [B]
do C[i, j]←0
for k←1 to columns [A]
do C[ i, j ]← C[ i, j] +A[ i, k]*B[ k, j]
return C
12
Matrix-Chain multiplication (cont.)
Cost of the matrix multiplication:
An example: A1 A2 A3
A1 : 10 100
A2 : 100 5
A3 : 5 50
13
Matrix-Chain multiplication (cont.)
14
Matrix-Chain multiplication (cont.)
• The problem:
Given a chain A1, A2 , ..., An of n matrices, where matrix Ai has
dimension pi-1x pi, fully paranthesize the product A1A2 ...An
in a way that minimizes the number of scalar multiplications.
15
Matrix-Chain multiplication (cont.)
bn (2 n )
16
Matrix-Chain multiplication (cont.)
17
Matrix-Chain multiplication (cont.)
18
Matrix-Chain multiplication (cont.)
19
Matrix-Chain multiplication (cont.)
0 if i j
m[i, j ] min m[i, k ] m[k 1, j ] p p p }
i k j i 1 k j if i j.
20
Matrix-Chain multiplication (cont.)
21
Matrix-Chain multiplication (cont.)
22
Matrix-Chain multiplication (cont.)
23
Matrix-Chain multiplication (Contd.)
MATRIX-CHAIN-ORDER(p)
n←length[p]-1
for i←1 to n
do m[i,i]←0
for l←2 to n
do for i←1 to n-l+1
do j←i+l-1
m[i,j]← ∞
for k←i to j-1
do q←m[i,k] + m[k+1,j]+pi-1 pk pj
if q < m[i,j]
then m[i,j] ←q
s[i,j] ←k
return m and s
24
Matrix-Chain multiplication (cont.)
An example: matrix dimension
A1 30 x 35
A2 35 x 15
A3 15 x 5
A4 5 x 10
A5 10 x 20
A6 20 x 25
15125 3 3
11875 10500 3 3
3
A1 A2 A3 A4 A5 A6
26
Matrix-Chain multiplication (cont.)
27
Matrix-Chain multiplication (Contd.)
PRINT-OPTIMAL-PARENS (s, i, j)
1 if i=j
2 then print “Ai”
3 else print “ ( “
4 PRINT-OPTIMAL-PARENS (s, i, s[i,j])
5 PRINT-OPTIMAL-PARENS (s, s[i,j]+1, j)
6 Print “ ) ”
28
Matrix-Chain multiplication (Contd.)
RUNNING TIME:
29
CS AA GS 30