Presentation is loading. Please wait.

Presentation is loading. Please wait.

Binhai Zhu Computer Science Department, Montana State University

Similar presentations


Presentation on theme: "Binhai Zhu Computer Science Department, Montana State University"— Presentation transcript:

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. 4/29/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. 4/29/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. 4/29/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. 4/29/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. 4/29/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 4/29/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? 4/29/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. 4/29/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. 4/29/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? 4/29/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 → 4/29/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 → 4/29/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 → 4/29/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? 4/29/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). 4/29/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. 4/29/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 4/29/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. 4/29/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 4/29/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. 4/29/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. 4/29/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} 4/29/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 4/29/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} 4/29/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 4/29/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 4/29/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 4/29/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 4/29/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 4/29/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 4/29/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 4/29/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 4/29/2019

33 Example 3. Optimal Polygon Triangulation
Dynamic Programming 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 4/29/2019

34 Example 3. Optimal Polygon Triangulation
Dynamic Programming 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 4/29/2019

35 Example 3. Optimal Polygon Triangulation
Dynamic Programming 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 4/29/2019

36 Example 4. Longest Common Subsequence
X=<A,B,C,B,D>, Y<B,A,D,C>, then <B,C> is a common subsequence of X and Y. The problem has applications in bioinformatics and communications. 4/29/2019

37 Example 4. Longest Common Subsequence
Given a sequence X=<x1,x2,…,xm>, another sequence Z=<z1,z2,…,zk> is a subsequence of X if there exists a strictly increasing sequence <i1,i2,…,ik> such that xij=zj for j =1,2,…,k. Example. X=<A,B,C,B,D>, then Z=<A,D> is a subsequence of X. Choose i1=1,i2=5, then xi1=z1=A, xi2=z2=D. 4/29/2019

38 Example 4. Longest Common Subsequence
Given a sequence X=<x1,x2,…,xm>, another sequence Z=<z1,z2,…,zk> is a subsequence of X if there exists a strictly increasing sequence <i1,i2,…,ik> such that xij=zj for j =1,2,…,k. Example. X=<A,B,C,B,D>, then Z=<A,D> is a subsequence of X. Choose i1=1,i2=5, then xi1=z1=A, xi2=z2=D. So by name, the LCS of X and Y is a common subsequence of X and Y whose length is the largest. 4/29/2019

39 Example 4. Longest Common Subsequence
Example. X=<A,B,C,B,D>, Y=<B,A,C,A,D> then Z=<A,C,D> is a LCS of X and Y. Can you find another LCS in this case? 4/29/2019

40 Example 4. Longest Common Subsequence
Example. X=<A,B,C,B,D>, Y=<B,A,C,A,D> then Z=<A,C,D> is a LCS of X and Y. Can you find another LCS in this case? Z’=<B,C,D> is another LCS, so longest common subsequence is not unique! 4/29/2019

41 Example 4. Longest Common Subsequence
Dynamic programming solution. (For simplicity, let’s say we are only interested in finding the length.) -Define table c[-,-] -c[i,j] stores the length of an LCS of the sequences X[1..i] and Y[1..j]. c[i,j] = 0, if i=0 or j=0 c[i,j] = c[i-1,j-1] + 1, if i,j>0 and xi = yj c[i,j] = max{ c[i-1,j], c[i,j-1] }, if i,j>0 and xi ≠ yj 4/29/2019

42 Example 4. Longest Common Subsequence
j 1 2 3 4 m ← length[X] n ← length[Y] For i = 1 to m do c[i,0] ← 0 For j = 0 to n do c[0,j] ← 0 for j = 1 to n if xi = yj then c[i,j]←c[i-1,j-1]+1 else if c[i-1,j] ≥ c[i,j-1] then c[i,j] ← c[i-1,j] else c[i,j] ← c[i,j-1] i 1 2 3 4 X=<A,C,B,D> Y=<B,A,C,D> 4/29/2019

43 Example 4. Longest Common Subsequence
j 1 2 3 4 m ← length[X] n ← length[Y] For i = 1 to m do c[i,0] ← 0 For j = 0 to n do c[0,j] ← 0 for j = 1 to n if xi = yj then c[i,j]←c[i-1,j-1]+1 else if c[i-1,j] ≥ c[i,j-1] then c[i,j] ← c[i-1,j] else c[i,j] ← c[i,j-1] i 1 1 1 1 2 3 4 X=<A,C,B,D> Y=<B,A,C,D> 4/29/2019

44 Example 4. Longest Common Subsequence
j 1 2 3 4 m ← length[X] n ← length[Y] For i = 1 to m do c[i,0] ← 0 For j = 0 to n do c[0,j] ← 0 for j = 1 to n if xi = yj then c[i,j]←c[i-1,j-1]+1 else if c[i-1,j] ≥ c[i,j-1] then c[i,j] ← c[i-1,j] else c[i,j] ← c[i,j-1] i 1 1 1 1 2 1 2 2 3 1 1 2 2 4 1 1 2 3 X=<A,C,B,D> Y=<B,A,C,D> 4/29/2019


Download ppt "Binhai Zhu Computer Science Department, Montana State University"

Similar presentations


Ads by Google