Download presentation
Presentation is loading. Please wait.
Published byMaria Tamminen Modified over 6 years ago
1
Binhai Zhu Computer Science Department, Montana State University
Dynamic programming Binhai Zhu Computer Science Department, Montana State University Frequently, presenters must deliver material of a technical nature to an audience unfamiliar with the topic or vocabulary. The material may be complex or heavy with detail. To present technical material effectively, use the following guidelines from Dale Carnegie Training®. Consider the amount of time available and prepare to organize your material. Narrow your topic. Divide your presentation into clear segments. Follow a logical progression. Maintain your focus throughout. Close the presentation with a summary, repetition of the key steps, or a logical conclusion. Keep your audience in mind at all times. For example, be sure data is clear and information is relevant. Keep the level of detail and vocabulary appropriate for the audience. Use visuals to support key points or steps. Keep alert to the needs of your listeners, and you will have a more receptive audience. 1/2/2019
2
Idea You have a large problem to solve, you can divide the problem into smaller sub-problems (1) Solution of a sub-problem might be interrelated and might be re-used again (this is different from Divide & Conquer. (2) So it is better to store those smaller solutions somewhere. 1/2/2019
3
Idea You have a large problem to solve, you can divide the problem into smaller sub-problems (1) Solution of a sub-problem might be interrelated and might be re-used again (this is different from Divide & Conquer. (2) So it is better to store those smaller solutions somewhere. (3) Of course, sometimes it might not work. 1/2/2019
4
Example 1. World Series Odds
Two teams A and B play to see who is the first to win n games. In world series games n=4. Assumption: A and B are equally competent, each has a 50% chance to win any particular game. 1/2/2019
5
Example 1. World Series Odds
P(i,j) --- the probability that A needs i extra games to win and B needs j extra games to win. 1/2/2019
6
Example 1. World Series Odds
P(i,j) --- the probability that A needs i extra games to win and B needs j extra games to win. (Assume that we talk about team A is to win/lose.) P(i,j) = 1, if i = 0 and j > 0 P(i,j) = 0, if i >0 and j =0 1/2/2019
7
Example 1. World Series Odds
P(i,j) --- the probability that A needs i extra games to win and B needs j extra games to win. (Assume that we talk about team A is to win/lose.) P(i,j) = 1, if i = 0 and j > 0 P(i,j) = 0, if i >0 and j =0 P(i,j) = ( P(i-1,j) + P(i,j-1) ) /2, if i > 0 and j > 0 What is the cost to calculate P(i,j) recursively? 1/2/2019
8
Example 1. World Series Odds
P(i,j) = 1, if i = 0 and j > 0 P(i,j) = 0, if i >0 and j =0 P(i,j) = ( P(i-1,j) + P(i,j-1) ) /2, if i > 0 and j > 0 What is the cost to calculate P(i,j) recursively? Let i+j = n and T(n) be the cost for calculating P(i,j). T(1) = O(1) = c T(n) = 2T(n-1) + O(1) = 2T(n-1)+ d, c,d are constants. 1/2/2019
9
Example 1. World Series Odds
Let i+j = n and T(n) be the cost for calculating P[i,j]. T(1) = O(1) = c T(n) = 2T(n-1) + O(1) = 2T(n-1)+ d, c,d are constants. T(n) = c2n-1 + d(2n-1-1) ε O(2n) = O(2i+j). So when n is large, this is not an efficient solution. 1/2/2019
10
Example 1. World Series Odds
How to solve this problem with dynamic programming? (1) Define a Table P[-,-] Odds(i,j) for t = 1 to i+j do P[0,t] = 1 P[t,0] = 0 for k = 1 to t-1 do P[k,t-k]=(P[k-1,t-k]+P[k,t-k-1])/2; endfor return P[i,j] // running time? 1/2/2019
11
Example 1. World Series Odds
Odds(i,j) for t = 1 to i+j do P[0,t] = 1 P[t,0] = 0 for k = 1 to t-1 do P[k,t-k]=(P[k-1,t-k]+P[k,t-k-1])/2; endfor return P[i,j] // running time? 4 1 3 1 ↑ j 2 1 1 1 1 2 3 4 i → 1/2/2019
12
Example 1. World Series Odds
Odds(i,j) for t = 1 to i+j do P[0,t] = 1 P[t,0] = 0 for k = 1 to t-1 do P[k,t-k]=(P[k-1,t-k]+P[k,t-k-1])/2; endfor return P[i,j] // running time? 4 1 15/16 3 1 7/8 ↑ j 2 1 3/4 1 1 1/2 1 2 3 4 i → 1/2/2019
13
Example 1. World Series Odds
Odds(i,j) for t = 1 to i+j do P[0,t] = 1 P[t,0] = 0 for k = 1 to t-1 do P[k,t-k]=(P[k-1,t-k]+P[k,t-k-1])/2; endfor return P[i,j] // running time? 4 1 15/16 13/16 21/32 1/2 3 1 7/8 11/16 1/2 11/32 ↑ j 2 1 3/4 1/2 5/16 3/16 1 1 1/2 1/4 1/8 1/16 1 2 3 4 i → 1/2/2019
14
Example 2. Matrix Chain Multiplication
Given n matrices M1,M2,…,Mn, compute the product M1M2M3…Mn, where Mi has dimension di-1 x di (i.e., with di-1 rows and di columns), for i = 1,…,n. Objective? 1/2/2019
15
Example 2. Matrix Chain Multiplication
Given n matrices M1,M2,…,Mn, compute the product M1M2M3…Mn, where Mi has dimension di-1 x di (i.e., with di-1 rows and di columns), for i = 1,…,n. Objective? Fact 1. Given matrices A with dimension p x q and B with dimension q x r, multiplication AB takes pqr scalar multiplications (see handouts). 1/2/2019
16
Example 2. Matrix Chain Multiplication
Given n matrices M1,M2,…,Mn, compute the product M1M2M3…Mn, where Mi has dimension di-1 x di (i.e., with di-1 rows and di columns), for i = 1,…,n. Objective? Fact 1. Given matrices A with dimension p x q and B with dimension q x r, multiplication AB takes pqr scalar multiplications (see handouts). So the objective is to compute M1M2M3…Mn with the minimum number of scalar multiplications. 1/2/2019
17
Example 2. Matrix Chain Multiplication
Problem: Parenthesize the product M1M2…Mn in a way to minimize the number of scalar multiplications. Example. M x 10 M x 50 M x 5 M x 30 (M1(M2(M3M4))) multiplications (M1((M2M3)M4) multiplications ((M1M2)(M3M4)) multiplications ((M1(M2M3))M4) multiplications (((M1M2)M3)M4) multiplications 1/2/2019
18
Example 2. Matrix Chain Multiplication
Problem: Parenthesize the product M1M2…Mn in a way to minimize the number of scalar multiplications. However, exhaustive search is not efficient. Let P(n) be the number of alternative parenthesizations of n matrices. 1/2/2019
19
Example 2. Matrix Chain Multiplication
Problem: Parenthesize the product M1M2…Mn in a way to minimize the number of scalar multiplications. However, exhaustive search is not efficient. Let P(n) be the number of alternative parenthesizations of n matrices. P(n) = 1, if n=1 P(n) = ∑k=1 to n-1 P(k)P(n-k), if n ≥ 2 1/2/2019
20
Example 2. Matrix Chain Multiplication
Problem: Parenthesize the product M1M2…Mn in a way to minimize the number of scalar multiplications. However, exhaustive search is not efficient. Let P(n) be the number of alternative parenthesizations of n matrices. P(n) = 1, if n=1 P(n) = ∑k=1 to n-1 P(k)P(n-k), if n ≥ 2 P(n) ≥ 4n-1/(2n2-n). Ex. n = 20, this is > 228. 1/2/2019
21
Example 2. Matrix Chain Multiplication
So let’s use dynamic programming. Let mij be the number of multiplications performed using an optimal parenthesization of MiMi+1…Mj-1Mj. 1/2/2019
22
Example 2. Matrix Chain Multiplication
So let’s use dynamic programming. Let mij be the number of multiplications performed using an optimal parenthesization of MiMi+1…Mj-1Mj. mii = 0 mij = mink{mik + mk+1,j + di-1dkdj, 1 ≤ i ≤ k < j ≤ n} 1/2/2019
23
Example 2. Matrix chain multiplication
Now you see another difference between dynamic programming and Divide&Conquer --- dynamic programming is always bottom-up! j 1 2 3 4 i 1 10000 3500 2500 4000 2 3 7500 Pass 2 4 Pass 1 mii = 0 mij = mink{mik + mk+1,j + di-1dkdj, 1 ≤ i ≤ k < j ≤ n} Pass 0 1/2/2019
24
Example 2. Matrix chain multiplication
j m[1,4] contains the value of the optimal solution. 1 2 3 4 i 1 10000 3500 6500 2500 4000 2 7500 3 4 mii = 0 mij = mink{mik + mk+1,j + di-1dkdj, 1 ≤ i ≤ k < j ≤ n} 1/2/2019
25
Example 3. Optimal Polygon Triangulation
Given a convex polygon P=< v0,v1,…,vn-1 >, a chord vivj divides P into two polygons <vi,vi+1,…,vj> and <vj,vj+1,…,vi> (assume vn=v0 or more generally, vk=vk mod n). v5 v4 v6 v3 v2 v7 v1 v8 v0 1/2/2019
26
Example 3. Optimal Polygon Triangulation
Given a convex polygon P=< v0,v1,…,vn-1 >, a chord vivj divides P into two polygons <vi,vi+1,…,vj> and <vj,vj+1,…,vi> (assume vn=v0 or more generally, vk=vk mod n). v5 v4 v6 v3 v2 v7 v1 v8 v0 1/2/2019
27
Example 3. Optimal Polygon Triangulation
Given a convex polygon P=< v0,v1,…,vn-1 >, it can always be divided into n-2 non-overlapping triangles using n-3 chords. v5 v4 v6 v3 v2 v7 v1 v8 v0 1/2/2019
28
Example 3. Optimal Polygon Triangulation
Given a convex polygon P=< v0,v1,…,vn-1 >, it can always be divided into n-2 non-overlapping triangles using n-3 chords. v5 v4 v6 v3 v2 v7 v1 v8 v0 1/2/2019
29
Example 3. Optimal Polygon Triangulation
Given a convex polygon P=< v0,v1,…,vn-1 >, there could be a lot of triangulations (in fact, an exponential number of them). v5 v4 v6 v3 v2 v7 v1 v8 v0 1/2/2019
30
Example 3. Optimal Polygon Triangulation
Given a convex polygon P=< v0,v1,…,vn-1 >, we want to compute an optimal triangulation. v5 v4 v6 v3 Optimal on what? v2 v7 v1 v8 v0 1/2/2019
31
Example 3. Optimal Polygon Triangulation
Given a convex polygon P=< v0,v1,…,vn-1 >, we want to compute an optimal triangulation whose weight is minimized. The weight of a triangulation is the weight of all its triangles and the weight of a triangle is the sum of its 3 edge lengths. v5 v4 v6 v3 v2 v7 v1 v8 v0 1/2/2019
32
Example 3. Optimal Polygon Triangulation
Given a convex polygon P=< v0,v1,…,vn-1 >, we want to compute an optimal triangulation whose weight is minimized. The weight of a triangulation is the weight of all its triangles and the weight of a triangle is the sum of its 3 edge lengths. v5 v4 The weight of ∆v2v4v6 is |v2v4|+|v4v6|+|v2v6| v6 v3 v2 v7 v1 v8 v0 1/2/2019
33
Example 3. Optimal Polygon Triangulation
Dynamic Solution: Let t[i,j] be the weight of an optimal triangulation of polygon <vi-1,vi,…,vj>. vj vk+1 vk vi-1 vi 1/2/2019
34
Example 3. Optimal Polygon Triangulation
Dynamic Solution: Let t[i,j] be the weight of an optimal triangulation of polygon <vi-1,vi,…,vj>. vj t[i,j] = mink { t[i,k] + t[k+1,j] + w(∆vi-1vkvj) }, i<j t[i,i] = 0 vk+1 vk vi-1 vi 1/2/2019
35
Example 3. Optimal Polygon Triangulation
Dynamic Solution: Let t[i,j] be the weight of an optimal triangulation of polygon <vi-1,vi,…,vj>. vj t[i,j] = mink { t[i,k] + t[k+1,j] + w(∆vi-1vkvj) }, i<j t[i,i] = 0 Almost identical to the matrix chain multiplication problem! vk+1 vk vi-1 vi 1/2/2019
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.