Lecture 18.
Dynamic Programming
Introduction to Algorithms
Da Nang University of Science and Technology
Dang Thien Binh
dtbinh@dut.udn.vn
Intelligent Networking Laboratory
Copyright 2000-2022 Intelligent
DANG
Networking
THIEN BINH
Laboratory
1/32
Dynamic Programming
Dynamic programming solves optimization problems by combining
solutions to subproblems
“Programming” refers to a tabular method with a series of choices,
not “coding”
Recall the divide-and-conquer approach
Partition the problem into independent subproblems
Solve the subproblems recursively
Combine solutions of subproblems
Dynamic programming is applicable when subproblems are not
independent, i.e., subproblems share subsubproblems
Solve every subsubproblem only once and store the answer for use
when it reappears
A divide-and-conquer approach will do more work than necessary
Intelligent Networking Laboratory DANG THIEN BINH 2/32
Dynamic Programming Solution
4 Steps
1. Characterize the structure of an optimal solution
2. Recursively define the value of an optimal solution
3. Compute the value of an optimal solution in a bottom-
up fashion
4. Construct an optimal solution from computed
information
Intelligent Networking Laboratory DANG THIEN BINH 3/32
Matrix Multiplication (1/3)
Matrix multiplication
Two matrices 𝐴 and 𝐵 can be multiplied
The number of columns of 𝐴 must equal the number of
rows of 𝐵
𝐴(𝑝𝑞) x 𝐵(𝑞𝑟) → 𝐶(𝑝𝑟)
The number of scalar multiplications is 𝑝𝑞𝑟
For a 𝑝𝑞 matrix 𝐴 and a 𝑞𝑟 matrix 𝐵, the product 𝐴𝐵 is a
𝑝𝑟 matrix 𝐶
𝑞
𝐴𝐵 = 𝐶 = [𝑐𝑖,𝑗 ]𝑝×𝑟 ≡ 𝑎𝑖,𝑘 𝑏𝑘,𝑗
𝑘=1 𝑝×𝑟
Intelligent Networking Laboratory DANG THIEN BINH 4/32
Matrix Multiplication (2/3)
Intelligent Networking Laboratory DANG THIEN BINH 5/32
Matrix Multiplication (3/3)
Matrix multiplication
Intelligent Networking Laboratory DANG THIEN BINH 6/32
Matrix-Chain Multiplication (1/2)
Matrix multiplication
𝐴(𝑝𝑞) x 𝐵(𝑞𝑟) → 𝐶(𝑝𝑟)
The number of scalar multiplications is 𝑝𝑞𝑟
e.g. < 𝐴1(10100), 𝐴2(1005), 𝐴3(550) >
((𝐴1𝐴2)𝐴3) → 10x100x5 + 10x5x50 = 5000 + 2500 = 7,500
(𝐴1(𝐴2𝐴3)) → 100x5x50 + 10x100x50 = 25000 + 50000 = 75,000
10 times faster
Given a sequence (chain) <𝐴1, 𝐴2,…, 𝐴𝑛> of n matrices to be
multiplied, where 𝑖 = 1,2, … , 𝑛, matrix 𝐴𝑖 has dimension 𝑝𝑖−1 𝑝𝑖,
fully parenthesize the product 𝐴1𝐴2 … 𝐴𝑛 in a way that
minimizes the number of scalar multiplications
Determine an order for multiplying matrices that has the lowest
cost
Intelligent Networking Laboratory DANG THIEN BINH 7/32
Matrix-Chain Multiplication (2/2)
Determine an order for multiplying matrices
that has the lowest cost
Counting the number of parenthesizations
𝐴1 𝐴2 … 𝐴𝑘 𝐴𝑘+1 … 𝐴𝑛−1 𝐴𝑛
1 𝑖𝑓 𝑛 = 1
𝑃(𝑛) =
𝑛−1
( 𝟐𝒏 )
𝑃(𝑘)𝑃(𝑛 − 𝑘) 𝑖𝑓 𝑛 ≥ 2
𝑘=1
Exercise 15.2-3 on page 338
Impractical to check all possible parenthesizations
Intelligent Networking Laboratory DANG THIEN BINH 8/32
Step 1 (1/3)
The structure of an optimal parenthesization
Notation: 𝐴𝑖..𝑗
Result from evaluating 𝐴𝑖 𝐴𝑖+1 … 𝐴𝑗 (𝑖 < 𝑗)
Any parenthesization of 𝐴𝑖 𝐴𝑖+1 … 𝐴𝑗 must split
the product between 𝐴𝑘 and 𝐴𝑘+1 for some integer 𝑘
in the range 𝑖 ≤ 𝑘 < 𝑗
The cost of this parenthesization
cost of computing 𝐴𝑖..𝑘 + cost of computing 𝐴𝑘+1..𝑗
+ cost of multiplying 𝐴𝑖..𝑘 and 𝐴𝑘+1..𝑗 together
Intelligent Networking Laboratory DANG THIEN BINH 9/32
Step 1 (2/3)
Suppose that an optimal parenthesization of
𝐴𝑖 𝐴𝑖+1 … 𝐴𝑗 splits the product between 𝐴𝑘 and 𝐴𝑘+1
The parenthesization of the prefix sub-chain 𝐴𝑖 𝐴𝑖+1 … 𝐴𝑘
must be an optimal parenthesization of 𝐴𝑖 𝐴𝑖+1 … 𝐴𝑗
The parenthesization of the postfix sub-chain 𝐴𝑘+1 𝐴𝑖+1 … 𝐴𝑗
must be an optimal parenthesization of 𝐴𝑖 𝐴𝑖+1 … 𝐴𝑗
That is, the optimal solution to the problem contains
within it the optimal solution to subproblems
Intelligent Networking Laboratory DANG THIEN BINH 10/32
Step 1 (3/3)
Minimal
Cost_A1..6 + Cost_A7..9+p0p6p9
A1A2A3A4A5A6A7A8A9
Suppose ((A1A2)(A3((A4A5)A6))) ((A7A8)A9) is optimal
Then (A1A2) (A3((A4A5)A6)) must be optimal for A1A2A3A4A5A6
Otherwise, if (A1(A2 A3)) ((A4A5)A6) is optimal for A1A2A3A4A5A6
Then ((A1(A2 A3)) ((A4A5)A6)) ((A7A8)A9) will be better than
((A1A2)(A3((A4A5)A6))) ((A7A8)A9)
Contradiction!
Intelligent Networking Laboratory DANG THIEN BINH 11/32
Step 2
A Recursive Solution
Subproblem
Determine the minimum cost of a parenthesization of
𝐴𝑖 𝐴𝑖+1 … 𝐴𝑗 (1 ≤ 𝑖 ≤ 𝑗 ≤ 𝑛)
𝑚[𝑖, 𝑗]: the minimum number of scalar multiplications
needed to compute the matrix 𝐴𝑖..𝑗
𝑚[𝑖, 𝑗] = 𝑚[𝑖, 𝑘] + 𝑚[𝑘 + 1, 𝑗] + 𝑝𝑖−1 𝑝𝑘 𝑝𝑗
However, we do not know the value of 𝑘 (𝑠[𝑖, 𝑗]),
so we have to try all j-i possibilities
0 if i = j
m[i, j ] = {m[i, k ] + m[k + 1, j ]} + pi −1 pk p j if i j
min
ik j
A recursive solution takes exponential time
Intelligent Networking Laboratory DANG THIEN BINH 12/32
Step 3 (1/3)
Computing the optimal costs
How much subproblems in total?
One for each choice of 𝑖 and 𝑗 satisfying 1 ≤ 𝑖 ≤ 𝑗 ≤ 𝑛
(𝑛2)
MATRIX-CHAIN-ORDER(p)
Input: a sequence 𝑝 = < 𝑝0, 𝑝1, 𝑝2, … , 𝑝𝑛> (length[𝑝] = 𝑛 + 1)
Try to fill in the table 𝑚 in a manner that corresponds to
solving the parenthesization problem on matrix chains of
increasing length
Lines 4-12: compute 𝑚[𝑖, 𝑖 + 1], 𝑚[𝑖, 𝑖 + 2], … each time
Intelligent Networking Laboratory DANG THIEN BINH 13/32
Step 3 (2/3)
e.g. < 𝐴1(83), 𝐴2(35), 𝐴3(510) >
𝑚12 = 8x3x5 = 120
𝑚23 = 3x5x10 = 150
𝑚13 = 390
𝑚11 + 𝑚23 + 𝑝0𝑝1𝑝3 = 0 + 150 + 8x3x10 = 390
𝑚12 + 𝑚33 + 𝑝0𝑝2𝑝3 = 120 + 0 + 8x5x10 = 520
j
i j
1 2 3
2 3 i
m 0 120 390 1
s 1 1 1
0 150 2
2 2
0 3
Intelligent Networking Laboratory DANG THIEN BINH 14/32
Step 3 (3/3)
𝑶(𝒏𝟑), (𝒏𝟑) ⇒ (𝒏𝟑) running time
(𝒏𝟐) space
Intelligent Networking Laboratory DANG THIEN BINH 15/32
m[3,4]+m[5,5] + 15x10x20 = 750 + 0 + 3000 = 3750
m[3,5] = min
m[3,3]+m[4,5] + 15x5x20 = 0 + 1000 + 1500 = 2500
l =3
l=2
35x15x5=2625 10x20x25=5000
Intelligent Networking Laboratory DANG THIEN BINH 16/32
Step 4 (1/2)
Constructing an optimal solution
Each entry 𝑠[𝑖, 𝑗] records the value of k such that
the optimal parenthesization of 𝐴𝑖 𝐴𝑖+1 … 𝐴𝑗 splits the
product between 𝐴𝑘 and 𝐴𝑘+1
𝐴1..𝑛 ⇒ 𝐴1..𝑠[1..𝑛] 𝐴𝑠 1..𝑛 +1..𝑛
𝐴1..𝑠[1..𝑛] ⇒ 𝐴1..𝑠[1, 𝑠[1..𝑛]] 𝐴𝑠 1, 𝑠[1..𝑛 ]+1..𝑠[1..𝑛]
Recursive…
Intelligent Networking Laboratory DANG THIEN BINH 17/32
Step 4 (2/2)
Constructing an optimal solution
(( 𝐴1 ( 𝐴2 𝐴3 ) ) ( ( 𝐴4 𝐴5 ) 𝐴6 ))
Intelligent Networking Laboratory DANG THIEN BINH 18/32
Elements of Dynamic Programming (1/2)
Optimal substructure
If an optimal solution contains within it optimal solutions
to subproblems
Build an optimal solution from optimal solutions to
subproblems
Example
Matrix-chain multiplication
An optimal parenthesization of 𝐴𝑖 𝐴𝑖+1 … 𝐴𝑗 that splits the
product between 𝐴𝑘 and 𝐴𝑘+1 contains within it optimal
solutions to the problem of parenthesizing 𝐴𝑖 𝐴𝑖+1 … 𝐴𝑘 and
𝐴𝑘+1 𝐴𝑘+2 … 𝐴𝑗
Intelligent Networking Laboratory DANG THIEN BINH 19/32
Elements of Dynamic Programming (2/2)
Overlapping subproblems
The space of subproblems must be small in the sense that a
recursive algorithm for the problem solves the same
subproblems over and over, rather than always generating new
subproblems
Typically, the total number of distinct subproblems is a
polynomial in the input size
Divide-and-Conquer is suitable usually generate brand-
new problems at each step of the recursion
Intelligent Networking Laboratory DANG THIEN BINH 20/32
Characteristics of Optimal Substructure
How many subproblems are used in an optimal
solution to the original problem?
Matrix-Chain scheduling
2 (𝐴1𝐴2 … 𝐴𝑘 and 𝐴𝑘+1 𝐴𝑘+2 … 𝐴𝑗 )
How many choices we have in determining which
subproblems to use in an optimal solution?
Matrix-chain scheduling: 𝑗 − 𝑖 (choice for 𝑘)
Informally, the running time of a dynamic-
programming algorithm 𝑠 on: the number of
subproblems overall and how many choices we look
at for each subproblem
Matrix-Chain scheduling: (𝑛2) ∗ 𝑂(𝑛) = 𝑂(𝑛3)
Intelligent Networking Laboratory DANG THIEN BINH 21/32
Overlapping Subproblems (1/2)
Intelligent Networking Laboratory DANG THIEN BINH 22/32
Overlapping Subproblems (2/2)
m[3,4] is computed twice
Intelligent Networking Laboratory DANG THIEN BINH 23/32
Recursive Procedure for
Matrix-Chain Multiplication
The time to compute 𝑚[1, 𝑛] is at least exponential
in 𝑛
𝑇(1) ≥ 1
𝑛−1
𝑇(𝑛) ≥ 1 + (𝑇(𝑘) + 𝑇(𝑛 − 𝑘) + 1)
𝑘=1
𝑛−1
𝑇(𝑛) ≥ 2 𝑇(𝑖) + 𝑛
𝑖=1
Prove 𝑇(𝑛) = 𝛺(2𝑛) using the substitution method
Show that 𝑇(𝑛) ≥ 2𝑛−1
𝑛−1 𝑛−2
𝑇(𝑛) ≥ 2 2𝑖−1 + 𝑛 = 2 2𝑖 + 𝑛
𝑖=1 𝑖=0
= 2(2𝑛−1 − 1) + 𝑛 = (2𝑛 − 2) + 𝑛 ≥ 2𝑛−1
Intelligent Networking Laboratory DANG THIEN BINH 24/32
Memoization
A variation of dynamic programming that often
offers the efficiency of the usual dynamic programming
approach while maintaining a top-down strategy
Memoize the natural, but inefficient, recursive algorithm
Maintain a table with subproblem solutions, but
the control structure for filling in the table is more like
the recursive algorithm
Memoization for matrix-chain multiplication
Calls in which 𝑚 𝑖, 𝑗 = ⇒ (𝑛2) calls
Calls in which 𝑚 𝑖, 𝑗 < ⇒ 𝑂(𝑛3) calls
Turns an (2𝑛)-time into an 𝑂(𝑛3)-time algorithm
Intelligent Networking Laboratory DANG THIEN BINH 25/32
Memoization
Intelligent Networking Laboratory DANG THIEN BINH 26/32
Lookup-Chain(p, i, j)
Intelligent Networking Laboratory DANG THIEN BINH 27/32
Lookup-Chain(p, i, j)
Intelligent Networking Laboratory DANG THIEN BINH 28/32
Dynamic Programming vs. Memoization
If all subproblems must be solved at least once, a
bottom-up dynamic-programming algorithm usually
outperforms a top-down memoized algorithm by a
constant factor
No overhead for recursion and less overhead for
maintaining table
There are some problems for which the regular pattern of
table accesses in the dynamic programming algorithm can
be exploited to reduce the time or space requirements
even further
Intelligent Networking Laboratory DANG THIEN BINH 29/32
Self-Study
Two more dynamic-programming problems
Section 15.4 Longest Common Subsequence
Section 15.5 Optimal Binary Search Trees
Intelligent Networking Laboratory DANG THIEN BINH 30/32
Longest Common Subsequence (LCS)
Problem: Given two sequences 𝑋=<𝑥1, … , 𝑥𝑚> and
𝑌=<𝑦1, … , 𝑦𝑛>, find the longest subsequence
𝑍=<𝑧1, … , 𝑧𝑘 > that is common to 𝑋 and 𝑌
A subsequence is a subset of elements from the sequence with
strictly increasing order (not necessarily contiguous)
There are 2𝑚 subsequences of 𝑋 → checking all subsequences is
impractical for long sequences
Example: 𝑋=<𝐴, 𝐵, 𝐶, 𝐵, 𝐷, 𝐴, 𝐵> and 𝑌=<𝐵, 𝐷, 𝐶, 𝐴, 𝐵, 𝐴>
Common subsequences: <𝐴>; <𝐵>; <𝐶>; <𝐷>; <𝐴, 𝐴>; <𝐵, 𝐵>;
<𝐵, 𝐶, 𝐴>; <𝐵, 𝐶, 𝐵>; <𝐶, 𝐵, 𝐴>; etc.
The longest common subsequences: <𝐵, 𝐶, 𝐵, 𝐴>; <𝐵, 𝐷, 𝐴, 𝐵>
Intelligent Networking Laboratory DANG THIEN BINH 31/32
Step 1: Optimal Structure of an LCS
Let 𝑋=<𝑥1, … , 𝑥𝑚> and 𝑌=<𝑦1, … , 𝑦𝑛> be sequences, and
let 𝑍=<𝑧1, … , 𝑧𝑘 > be any LCS of 𝑋 and 𝑌
If 𝑥𝑚 = 𝑦𝑛, then 𝑧𝑘 = 𝑥𝑚 = 𝑦𝑛 and 𝑍𝑘−1 is an LCS of 𝑋𝑚−1 and 𝑌𝑛−1
If 𝑥𝑚 ≠ 𝑦𝑛, then 𝑧𝑘 ≠ 𝑥𝑚 implies that 𝑍 is an LCS of 𝑋𝑚−1 and 𝑌
If 𝑥𝑚 ≠ 𝑦𝑛, then 𝑧𝑘 ≠ 𝑦𝑛 implies that 𝑍 is an LCS of 𝑋 and 𝑌𝑛−1
Intelligent Networking Laboratory DANG THIEN BINH 32/32
Step 2: Recursive Solution (1/2)
Overlapping-subproblems
Intelligent Networking Laboratory DANG THIEN BINH 33/32
Step 2: Recursive Solution (2/2)
Define 𝑐[𝑖, 𝑗] = length of LCS for 𝑋𝑖 and 𝑌𝑗
Intelligent Networking Laboratory DANG THIEN BINH 34/32
Step 3: Computing the length of an LCS
𝑏[𝑖, 𝑗] points to the table entry
corresponding to the optimal
subproblem solution chosen
when computing 𝑐[𝑖, 𝑗]
LCS-LENGTH(X, Y) is (𝒎𝒏)
Intelligent Networking Laboratory DANG THIEN BINH 35/32
Step 4: Constructing an LCS
PRINT-LCS(b, X, i, j) is 𝑶(𝒎 + 𝒏)
Intelligent Networking Laboratory DANG THIEN BINH 36/32
Thanks to contributors
Mr. Phuoc-Nguyen Bui (2022)
Dr. Thien-Binh Dang (2017 – 2022)
Prof. Hyunseung Choo (2001 – 2022)
Intelligent Networking Laboratory
Copyright 2000-2022 Intelligent
DANGNetworking
THIEN BINH
Laboratory
37/32