Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming:...
Transcript of Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming:...
![Page 1: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/1.jpg)
Algorithms LEISERSON, STEIN, RIVEST, AND CORMEN
15 DYNAMIC PROGRAMMING
‣ Rod cutting‣ Matrix multiplication‣ Longest Common Subsequence‣ Weighted Interval Scheduling‣ Knapsack problem
![Page 2: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/2.jpg)
2
HISTORY OF DYNAMIC PROGRAMMING
“We had a very interesting gentleman in Washington
named Wilson. He was Secretary of Defense, and he actually
had a pathological fear and hatred of the word research. Thus, I
thought dynamic programming was a good name. It was
something not even a Congressman could object to. So I used it
as an umbrella for my activities. ” — Richard Ernest Bellman
![Page 3: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/3.jpg)
‣ Rod cutting‣ Matrix multiplication‣ Longest Common Subsequence‣ Weighted Interval Scheduling‣ Knapsack problem‣
15 DYNAMIC PROGRAMMING
![Page 4: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/4.jpg)
Rod cutting
The problem: Serling Enterprises buys long steel rods an cuts them into
shorter rods, which it then sells at a profit
Each cut is free.
Given the price structure how could we make money?
4
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 10 17 17 20 24 30
![Page 5: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/5.jpg)
Rod cutting visual
5
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
Given the price structure how could we make money?
1. Buy a rod of length 4 for 9
2. Cut into two piece of length 2 and sell for 5 each
3. Total for sale 5 + 5 = 10 : Profit 10 - 9 = 1
4
2 2
5 5
![Page 6: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/6.jpg)
Revenue and Cuts
Revenue and Cuts
6
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
1Revenue 1
Revenue 5 2
Revenue 8 3
Revenue 10 2 2
Revenue 13 2 3
Profit of 1
![Page 7: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/7.jpg)
Rod cutting
Notation: i = 1, 2 ….. n-1 (length of the cut)
n = i1 + i2 + i3 …. ik (The length of the rod must equal the sum of its pieces)
1 ≤ k ≤ n (the number of pieces between 1 and n )
rn = pi1 + pi2 + …. pik (revenue is the sum of all the pieces)
rn = max(pn, r1 + rn-1 , r2 + rn-2 ….. , rn-1 +r1)
7
Price of rod Uncut
Every other combination.
Where represents the revenue for two pieces r1 + rn-1
i n - i
![Page 8: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/8.jpg)
Write a program to find the cut that maximizes revenue
Challenge: Since we don’t know ahead of time which value of i optimizes
revenue we have to consider all values of i including the case where we
don’t make a cut.
Insight: Once we make our first cut we consider can consider the two
pieces as independent instances of the rod cutting problem.
8
i n - i
i n - i
rn = max(pi + rn-1 )
What cut maximize revenue for this rod
![Page 9: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/9.jpg)
Example Run length of 4
9
4
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
Max = -∞
Revenue 9
![Page 10: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/10.jpg)
Example Run length of 4
10
4
1 3
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
Max = 9 Revenue 9
1 8
Max = 9 1 + max( 8, cut (3))
![Page 11: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/11.jpg)
Example Run length of 4
11
4
1 3
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
Max = 9 Revenue 9
1 8
Max = 9 Revenue 1 + max(8, cut(3))
21 Revenue 1 + max(5, cut (2))
![Page 12: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/12.jpg)
Example Run length of 4
12
4
1 3
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
Max = 9 Revenue 9
1 8
Max = 9 Revenue 1 + max(8, cut(3))
21 Revenue 1 + max(5, cut (2))
1 1 Revenue 1 + 1
![Page 13: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/13.jpg)
Example Run length of 4
13
4
1 3
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
Max = 9 Revenue 9
1 8
Max = 9 Revenue 1 + max(8, cut(3))
21 Revenue 1 + max(5, 2)
![Page 14: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/14.jpg)
Example Run length of 4
14
4
1 3
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
Max = 9 Revenue 9
1 8
Max = 9 Revenue 1 + max(8, 6)
![Page 15: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/15.jpg)
Example Run length of 4
15
4
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
Max = 9 Revenue 9
2 2Revenue max(5, cut(2) + max(5, cut(2) )
![Page 16: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/16.jpg)
Example Run length of 4
16
4
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
Max = 9 Revenue 9
2 2Revenue max(5, cut(2) + max(5, cut(2) )
1 1 Revenue 1 + 1
![Page 17: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/17.jpg)
Example Run length of 4
17
4
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
Max = 9 Revenue 9
2 2Revenue max(5, 2) + max(5, cut(2) )
![Page 18: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/18.jpg)
Example Run length of 4
18
4
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
Max = 9 Revenue 9
2 2Revenue max(5, 2) + max(5, cut(2) )
1 1Revenue 1 + 1
![Page 19: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/19.jpg)
Example Run length of 4
19
4
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
Max = 9 Revenue 9
2 2Revenue 10max(5, 2) + max(5, 2 )
![Page 20: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/20.jpg)
Example Run length of 4
20
4
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
Max = 10 Revenue 9
![Page 21: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/21.jpg)
Implementation
21
public class MaxProfit { public static int cut(double[] prices, int length) { if( length == 0) return 0; double maxRev = Double.NegativeInfinity; for (int i = 1; i <= length; i++) { maxRev = Math.max(maxRev, price[i]
+ cut(price, length -i) } } }
Base case rod of length 0
Recursive Call Keep the max discovered
![Page 22: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/22.jpg)
Run-time analysis
22
4
1 3 2 2
21
1 1
1 1 1 1
This Recursion Tree has 2n node and 2n-1 leaves runtime ~ 2n-1
Optimization : How we optimize this?
![Page 23: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/23.jpg)
Run-time analysis
23
4
1 3 2 2
21
1 1
1 1 1 1
This Recursion Tree has 2n node and 2n-1 leaves runtime ~ 2n-1
Optimization : How we optimize this?
Simply store the result of recursive call reuse them:
Optimal substructure: optimal solutions to a problem incorporate optimal
solutions to related problems
![Page 24: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/24.jpg)
Dynamic programming & Optimal Substructure
Dynamic programming: arranges the subproblems so that they are only
solved once and then looked up later. Trading memory for time.
24
public class MaxProfit { public static int cut(double[] prices, int length) { double[] maxRev = new double[length + 1]; for (int i = 1; i <= length; i++) {
maxRev[i] = Double.negativeInfinity; } return memCut(prices, length, maxRev); } }
Array max revenue for each length rod Including zero length
![Page 25: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/25.jpg)
Dynamic programming & Optimal Substructure
Dynamic programming: arranges the subproblems so that they are only
solved once and then looked up later. Trading memory for time.
25
public static int memCut(double[] prices, int length, double[] maxRev) { if maxRev[length] >= 0
return max[length]; if(length == 0)
return 0; double pieceMaxRev = Double.negativeInfinity; for (int i = 1; i <= length; i++) { pieceMaxRev = Math.max(pieceMaxRev, prices[i] + menCut(prices, length - 1, maxRev));
} maxRev[length] = pieceMaxRev; Return pieceMaxRev; }
![Page 26: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/26.jpg)
Example Memorization
26
4 Length Revenue4 ∞3 ∞2 ∞1 ∞0 ∞
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
![Page 27: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/27.jpg)
Example Memorization
27
4 Length Revenue4 ∞3 ∞2 ∞1 10 0
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
1 3
![Page 28: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/28.jpg)
Example Memorization
28
4 Length Revenue4 ∞3 ∞2 ∞1 10 0
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
1 3
21
![Page 29: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/29.jpg)
Example Memorization
29
4 Length Revenue4 ∞3 ∞2 ∞1 10 0
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
1 3
21
![Page 30: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/30.jpg)
Example Memorization
30
4 Length Revenue4 ∞3 ∞2 51 10 0
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
1 3
21
1 1
![Page 31: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/31.jpg)
Example Memorization
31
4 Length Revenue4 ∞3 ∞2 51 10 0
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
1 3
21
![Page 32: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/32.jpg)
Example Memorization
32
4 Length Revenue4 ∞3 82 51 10 0
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
1 3
![Page 33: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/33.jpg)
Example Memorization
33
4 Length Revenue4 ∞3 82 51 10 0
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
Note 4 is not set because the loop is still going
![Page 34: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/34.jpg)
Example Memorization
34
4 Length Revenue4 ∞3 82 51 10 0
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
2 2
![Page 35: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/35.jpg)
Example Memorization
35
4 Length Revenue4 103 82 51 10 0
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
![Page 36: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/36.jpg)
Top down approach
36
4
1 3 2 2
21
1 1
1 1 1 1
Length Revenue4 103 82 51 10 0
Top Down: This recursive approach is often referred to as a top down approach
![Page 37: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/37.jpg)
Bottom up approach
37
1
0
1
Length I 1 2 3 4 5 6 7 8 9
Price pi 1 5 8 9 10 17 17 20 30
2
Revenue = 0Already computed
2
3 3
maxRev[1]= max( -∞, price[1] + maxRev[0])
maxRev[2]= max( -∞, price[1] + maxRev[1],
price[2] + maxRev[0])
4 4
maxRev[2]= max( -∞, price[1] + maxRev[2],
price[2] + maxRev[1], price[3] + maxRev[0] )
maxRev[4]= max( -∞, price[1] + maxRev[3],
price[2] + maxRev[2], price[3] + maxRev[1] ,
price[4] + maxRev[0])Why not maxRev[2] + maxRev[2]
![Page 38: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/38.jpg)
Question
Question: Why price[2] + maxRev[2], and not maxRev[2] + maxRev[2]
38
![Page 39: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/39.jpg)
Bottom up approach
39
public static int cutBottomUp(double[] prices, int length) { double[] maxRev = new double[length +1]; maxRev = 0; for (int i = 1; i <= length; i++) { double pieceMaxRev = Double.negativeInfinity; for(int j = 1; j <= i; j++) { pieceMaxRev = Math.max(pieceMaxRev, prices[i] + maxRev[i-j]);
} maxRev[i] = pieceMaxRev; } return maxRev[length]; }
![Page 40: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/40.jpg)
Subproblem graph
Subproblem graph is a great way to understand
how problems depend on each other
40
4
3
2
1
0
4
1 3 2 2
21
1 1
1 1
11
![Page 41: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/41.jpg)
Reconstructing a solution
Challenge: Print out the sequence of cuts required to get the maximum revenue
41
public static int cutBottomUp(double[] prices, int length) { double[] maxRev = new double[length +1]; int[] cuts = new int[length + 1]; maxRev = 0; for (int i = 1; i <= length; i++) { double pieceMaxRev = Double.negativeInfinity; for(int j = 1; j <= i; j++) { if ( pieceMaxRev < price[i] + maxRev[i -j]) { pieceMaxRev = prices[i] + maxRev[j-1]; cut[i] = j; }
} maxRev[i] = pieceMaxRev;
} return new solution(maxRev,cuts) ; }
![Page 42: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/42.jpg)
Reconstructing a solution
42
Length I 1 2 3 4 5 6 7 8 9Price pi 1 5 8 9 10 17 17 20 30
Revenue 1 5 8 10 13 17 18 22 25
cut 1 2 3 2 2 6 1 2 3
public static void printCuts(double[] maxRev, int[] cuts, int length) { while (length > 0) { System.out.println(cuts[length]); length = length - cuts[length]; } }
![Page 43: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/43.jpg)
Quiz
Question: Calculate the n Fibonacci numbers using dynamic programming.
43
public static long fib(int n) {
if (n == 0) return 0; if( n == 1) return 1;
return(fib(n-1) + fib(n-2)); }
![Page 44: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/44.jpg)
Quiz
Question: Calculate the n Fibonacci numbers using dynamic programming.
44
![Page 45: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/45.jpg)
Quiz
Question: Calculate the n Fibonacci numbers using dynamic programming.
45
public static long fib_dp(int n) { int i; long[]f = new long[MAXN + 1]; f[0] = 0; f[1] = 1;
for( i = 2; i <= n; i++) f[i]= f[i-1] + f[1-2];
return(f[n]); }
![Page 46: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/46.jpg)
Quiz two
Question: How many was can you tile 2xn board with dominions
46
How many ways to tile this: With these?
![Page 47: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/47.jpg)
Quiz two
Question: How many was can you tile 2xn board with dominions
47
Two ways to fill the final column:
! − 1
! − 2
%&'( ! = %&'( ! − 1 + %&'((! − 2)
%&'( 0 = %&'( 1 = 1
![Page 48: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/48.jpg)
http://algs4.cs.princeton.edu
ROBERT SEDGEWICK | KEVIN WAYNE
Algorithms
‣ APIs‣ shortest-paths properties‣ Dijkstra's algorithm‣ edge-weighted DAGs‣ negative weights
4.4 SHORTEST PATHS
![Page 49: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/49.jpg)
Seam carving. [Avidan and Shamir] Resize an image without distortion for
display on cell phones and web browsers.
49
Content-aware resizing
http://www.youtube.com/watch?v=vIFCV2spKtg
![Page 50: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/50.jpg)
Seam carving. [Avidan and Shamir] Resize an image without distortion for
display on cell phones and web browsers.
In the wild. Photoshop CS 5, Imagemagick, GIMP, ... 50
Content-aware resizing
![Page 51: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/51.jpg)
To find vertical seam:
・Grid DAG: vertex = pixel; edge = from pixel to 3 downward neighbors.
・Weight of pixel = energy function of 8 neighboring pixels.
・Seam = shortest path (sum of vertex weights) from top to bottom.
51
Content-aware resizing
![Page 52: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/52.jpg)
To find vertical seam:
・Grid DAG: vertex = pixel; edge = from pixel to 3 downward neighbors.
・Weight of pixel = energy function of 8 neighboring pixels.
・Seam = shortest path (sum of vertex weights) from top to bottom.
52
Content-aware resizing
seam
![Page 53: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/53.jpg)
To remove vertical seam:
・Delete pixels on seam (one in each row).
53
Content-aware resizing
seam
![Page 54: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/54.jpg)
To remove vertical seam:
・Delete pixels on seam (one in each row).
54
Content-aware resizing
![Page 55: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/55.jpg)
Q2. How to model multiple sources and sinks?
55
Shortest path variants
![Page 56: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/56.jpg)
Formulate as a shortest paths problem in edge-weighted DAGs.
・Negate all weights.
・Find shortest paths.
・Negate weights in result.
Key point. Topological sort algorithm works even with negative weights.
56
Longest paths in edge-weighted DAGs
equivalent: reverse sense of equality in relax()
5->4 -0.35 4->7 -0.37 5->7 -0.28 5->1 -0.32 4->0 -0.380->2 -0.26 3->7 -0.39 1->3 -0.29 7->2 -0.346->2 -0.40 3->6 -0.526->0 -0.586->4 -0.93
shortest paths input
5->4 0.35 4->7 0.37 5->7 0.28 5->1 0.32 4->0 0.380->2 0.26 3->7 0.39 1->3 0.29 7->2 0.346->2 0.40 3->6 0.526->0 0.586->4 0.93
longest paths input
5->4 -0.35 4->7 -0.37 5->7 -0.28 5->1 -0.32 4->0 -0.380->2 -0.26 3->7 -0.39 1->3 -0.29 7->2 -0.346->2 -0.40 3->6 -0.526->0 -0.586->4 -0.93
s
![Page 57: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/57.jpg)
Longest paths in edge-weighted DAGs: application
Parallel job scheduling. Given a set of jobs with durations and precedence
constraints, schedule the jobs (by finding a start time for each) so as to
achieve the minimum completion time, while respecting the constraints.
57
Parallel job scheduling solution
0
4
3
5
9
7
6 8 2
1
41 700 91 123 173
A job scheduling problem
0 41.0 1 7 9 1 51.0 2 2 50.0 3 36.0 4 38.0 5 45.0 6 21.0 3 8 7 32.0 3 8 8 32.0 2 9 29.0 4 6
job duration must completebefore
![Page 58: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/58.jpg)
CPM. To solve a parallel job-scheduling problem, create edge-weighted
DAG:
・Source and sink vertices.
・Two vertices (begin and end) for each job.
・Three edges for each job.
– begin to end (weighted by duration)
– source to begin (0 weight)
– end to sink (0 weight)
・One edge for each precedence constraint (0 weight).
Critical path method
58Edge-weighted DAG representation of job scheduling
410 0
511 1
502 2
363 3
384 4
455 5
216 6
327 7
328 8
29 9 9
precedence constraint(zero weight)
job start job finish
duration
zero-weight edge to each
job start
zero-weight edge from each
job finish
A job scheduling problem
0 41.0 1 7 9 1 51.0 2 2 50.0 3 36.0 4 38.0 5 45.0 6 21.0 3 8 7 32.0 3 8 8 32.0 2 9 29.0 4 6
job duration must completebefore
![Page 59: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/59.jpg)
Critical path method
59
CPM. Use longest path from the source to schedule each job.
Longest paths solution to job scheduling example
410 0
511 1
502 2
363 3
384 4
455 5
216 6
327 7
328 8
29 9 9
critical path
duration
Parallel job scheduling solution
0
4
3
5
9
7
6 8 2
1
41 700 91 123 173
![Page 60: Algorithms - Daniel G. Graham PhD...Dynamic programming & Optimal Substructure Dynamic programming: arranges the subproblems so that they are only solved once and then looked up later.](https://reader035.fdocuments.us/reader035/viewer/2022071413/610c2607a26d9606852d8cbd/html5/thumbnails/60.jpg)
‣ Rod cutting‣ Matrix multiplication‣ Longest Common Subsequence‣ Weighted Interval Scheduling‣ Knapsack problem‣
15 DYNAMIC PROGRAMMING