Lecture 5 Dynamic Programming
Quiz Sample True or false? Every algorithm that contains a divide step and a conquer step is a divide-and-conquer algorithm. Answer: No A dynamic programming contains a divide step and a conquer step and may not be a divide-and-conquer algorithm.
Dynamic Programming Self-reducibility
Divide and Conquer Divide the problem into subproblems. Conquer the subproblems by solving them recursively. Combine the solutions to subproblems into the solution for original problem.
Dynamic Programming Divide the problem into subproblems. Conquer the subproblems by solving them recursively. Combine the solutions to subproblems into the solution for original problem.
Remark on Divide and Conquer Key Point: Divide-and-Conquer is a DP-type technique.
Algorithms with Self-Reducibility Dynamic Programming Divide and Conquer Greedy Local Ratio
Matrix-chain Multiplication
Fully Parenthesize
Scalar Multiplications
e.g., # of scalar multiplications
Step 1. Find recursive structure of optimal solution
Step 2. Build recursive formula about optimal value
Step 3. Computing optimal value
Step 3. Computing optimal value
Step 4. Constructing an optimal solution
151 15,125 11,875 10,500 9,375 7,125 5,375 7,875 4,375 2,500 3,500 15,700 2,625 750 1,000 5,000
Optimal solution 151 15,125 (3) 11,875 10,500 (3) (3) 9,375 7,125 5,375 (3) (3) (3) 7,875 4,375 2,500 3,500 (1) (3) (3) (5) 15,700 2,625 750 1,000 5,000 (1) (2) (3) (4) (5) Optimal solution
Running Time
Running Time How many recursive calls? How many m[I,j] will be computed?
# of Subproblems
Running Time
Remark on Running Time (1) Time for computing recursive formula. (2)The number of subproblems. (3) Multiplication of (1) and (2)
Longest Common Subsequence
Problem 10110110 00100100
Recursive Formula
Related Problem 10110110 00100100
Recursive Formula
More Examples
A Rectangle with holes NP-Hard!!!
Guillotine cut
Guillotine Partition A sequence of guillotine cuts Canonical one: every cut passes a hole.
Minimum length Guillotine Partition Given a rectangle with holes, partition it into smaller rectangles without hole to minimize the total length of guillotine cuts.
Minimum Guillotine Partition Dynamic programming In time O(n ): 5 Each cut has at most 2n choices. 4 There are O(n ) subproblems. Minimum guillotine partition can be a polynomial-time approximation.
What we learnt in this lecture? How to design dynamic programming. Two ways to implement. How to analyze running time.
Quiz Sample True or False Analysis method for dynamic programming can also be applied to divide-and-conquer algorithms. Answer: True
Quiz Sample True or False Every dynamic programming can be analyzed with formula: Run-time = (table size) x (computation time of recursive formula). Answer: False A counterexample can be seen in study of the shortest path problem.
Puzzle