cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2...
Transcript of cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2...
![Page 1: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/1.jpg)
Warm UpHow many ways are there to tile a 2×𝑛 board with
dominoes?
1
How many ways to tile this:
With these?
Fall 2019
![Page 2: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/2.jpg)
2
![Page 3: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/3.jpg)
3
How many ways are there to tile a 2×𝑛 board with dominoes?
Two ways to fill the final column:
𝑛 − 1
𝑛 − 2
𝑇𝑖𝑙𝑒 𝑛 = 𝑇𝑖𝑙𝑒 𝑛 − 1 + 𝑇𝑖𝑙𝑒(𝑛 − 2)
𝑇𝑖𝑙𝑒 0 = 𝑇𝑖𝑙𝑒 1 = 1
![Page 4: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/4.jpg)
Homeworks
• HW3 due 11pm Wednesday, October 2– Divide and Conquer– Written (use LaTeX!)– Submit BOTH a pdf and a zip file (2 separate attachments)
• HW4 out tonight!– Sorting, Divide and Conquer, Dynamic Programming– Written (use LaTeX!)
• Regrade Office Hours– Thursdays 11am-12pm @ Rice 210– Thursdays 4pm-5pm @ Rice 501
4
![Page 5: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/5.jpg)
Today’s Keywords
• Maximum Sum Continuous Subarray• Domino Tiling• Dynamic Programming• Log Cutting
5
![Page 6: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/6.jpg)
CLRS Readings
• Chapter 8
6
![Page 7: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/7.jpg)
Maximum Sum Contiguous Subarray Problem
The maximum-sum subarray of a given array of integers 𝐴 is the interval [𝑎, 𝑏] such that the sum of all values in the array between 𝑎 and 𝑏 inclusive is maximal. Given an array of 𝑛 integers (may include both positive and negative values), give a 𝑂(𝑛 log 𝑛) algorithm for finding the maximum-sum subarray.
7
![Page 8: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/8.jpg)
Divide and Conquer Θ(𝑛 log 𝑛)
8
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
Divide in halfRecursively
Solve on LeftRecursively
Solve on Right
![Page 9: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/9.jpg)
Divide and Conquer Θ(𝑛 log 𝑛)
9
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
Divide in halfRecursively
Solve on Left19
Recursively Solve on Right
25Find Largest sum that spans
the cut
2-13-6-3-716 -20-42-37135-128
Largest sum that ends here
+ Largest sum that starts here
![Page 10: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/10.jpg)
Divide and Conquer Θ(𝑛 log 𝑛)
10
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
Divide in halfRecursively
Solve on Left19
Recursively Solve on Right
25Find Largest sum that spans
the cut19
2-13-6-3-716 -20-42-37135-128
Return the Max of Left, Right, Center
𝑇 𝑛 = 2𝑇𝑛2+ 𝑛
![Page 11: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/11.jpg)
Divide and Conquer Summary
• Divide– Break the list in half
• Conquer– Find the best subarrays on the left and right
• Combine– Find the best subarray that “spans the divide”– I.e. the best subarray that ends at the divide concatenated with the
best that starts at the divide
Typically multiple subproblems.Typically all roughly the same size.
![Page 12: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/12.jpg)
Generic Divide and Conquer Solution
def myDCalgo(problem):if baseCase(problem):
solution = solve(problem) #brute force if necessaryreturn solution
subproblems = Divide(problem)for sub in subproblems:
subsolutions.append(myDCalgo(sub))solution = Combine(subsolutions)return solution
12
![Page 13: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/13.jpg)
MSCS Divide and Conquer Θ(𝑛 log 𝑛)
def MSCS(list):if list.length < 2:
return list[0] #list of size 1 the sum is maximal{listL, listR} = Divide (list)for list in {listL, listR}:
subSolutions.append(MSCS(list))solution = max(solnL, solnR, span(listL, listR))return solution
13
![Page 14: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/14.jpg)
Types of “Divide and Conquer”
• Divide and Conquer– Break the problem up into several subproblems of roughly equal size,
recursively solve– E.g. Karatsuba, Closest Pair of Points, Mergesort…
• Decrease and Conquer– Break the problem into a single smaller subproblem, recursively solve– E.g. Impossible Missions Force (Double Agents), Quickselect, Binary
Search
![Page 15: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/15.jpg)
Pattern So Far
• Typically looking to divide the problem by some fraction (½, ¼ the size)
• Not necessarily always the best!– Sometimes, we can write faster algorithms by finding unbalanced
divides.– Chip and Conquer
![Page 16: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/16.jpg)
Chip (Unbalanced Divide) and Conquer
• Divide– Make a subproblem of all but the last element
• Conquer– Find Best Subarray (sum) on the Left (𝐵𝑆𝐿(𝑛 − 1))– Find the Best subarray Ending at the Divide (𝐵𝐸𝐷(𝑛 − 1))
• Combine– New Best Ending at the Divide:
• 𝐵𝐸𝐷 𝑛 = max(𝐵𝐸𝐷 𝑛 − 1 + 𝑎𝑟𝑟 𝑛 , 0)– New Best Subarray (sum) on the Left:
• 𝐵𝑆𝐿 𝑛 = max 𝐵𝑆𝐿 𝑛 − 1 , 𝐵𝐸𝐷 𝑛
![Page 17: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/17.jpg)
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
DivideRecursively Solve on Left
25 Find Largest sum ending at
the divide22
![Page 18: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/18.jpg)
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
DivideRecursively Solve on Left
25 Find Largest sum ending at
the divide0
![Page 19: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/19.jpg)
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
DivideRecursively Solve on Left
25 Find Largest sum ending at
the divide0
![Page 20: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/20.jpg)
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
DivideRecursively Solve on Left
25 Find Largest sum ending at
the divide25
![Page 21: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/21.jpg)
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
DivideRecursively Solve on Left
19 Find Largest sum ending at
the divide17
![Page 22: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/22.jpg)
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
DivideRecursively Solve on Left
19 Find Largest sum ending at
the divide0
![Page 23: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/23.jpg)
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
DivideRecursively Solve on Left
13 Find Largest sum ending at
the divide12
![Page 24: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/24.jpg)
Chip (Unbalanced Divide) and Conquer
• Divide– Make a subproblem of all but the last element
• Conquer– Find Best Subarray (sum) on the Left (𝐵𝑆𝐿(𝑛 − 1))– Find the Best subarray Ending at the Divide (𝐵𝐸𝐷(𝑛 − 1))
• Combine– New Best Ending at the Divide:
• 𝐵𝐸𝐷 𝑛 = max(𝐵𝐸𝐷 𝑛 − 1 + 𝑎𝑟𝑟 𝑛 , 0)– New Best Subarray (sum) on the Left:
• 𝐵𝑆𝐿 𝑛 = max 𝐵𝑆𝐿 𝑛 − 1 , 𝐵𝐸𝐷 𝑛
![Page 25: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/25.jpg)
Was unbalanced better?
• Old:– We divided in Half– We solved 2 different problems:
• Find the best overall on BOTH the left/right• Find the best which end/start on BOTH the left/right respectively
– Linear time combine• New:– We divide by 1, n-1– We solve 2 different problems:
• Find the best overall on the left ONLY • Find the best which ends on the left ONLY
– Constant time combine
𝑇 𝑛 = 2𝑇𝑛2+ 𝑛
𝑇 𝑛 = 1𝑇 𝑛 − 1 + 1
𝑇 𝑛 = Θ(𝑛 log 𝑛)
𝑇 𝑛 = Θ(𝑛)
YES
![Page 26: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/26.jpg)
MSCS Problem - Redux
• Solve in 𝑂(𝑛) by increasing the problem size by 1 each time.• Idea: Only include negative values if the positives on both sides
of it are “worth it”
![Page 27: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/27.jpg)
Θ(𝑛) Solution
27
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
Begin here
Remember two values: Best So Far Best ending here5 5
![Page 28: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/28.jpg)
Θ(𝑛) Solution
28
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
Remember two values: Best So Far Best ending here13 13
![Page 29: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/29.jpg)
Θ(𝑛) Solution
29
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
Remember two values: Best So Far Best ending here13 9
![Page 30: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/30.jpg)
Θ(𝑛) Solution
30
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
Remember two values: Best So Far Best ending here13 12
![Page 31: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/31.jpg)
Θ(𝑛) Solution
31
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
Remember two values: Best So Far Best ending here19 19
![Page 32: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/32.jpg)
Θ(𝑛) Solution
32
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
Remember two values: Best So Far Best ending here19 4
![Page 33: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/33.jpg)
Θ(𝑛) Solution
33
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
Remember two values: Best So Far Best ending here19 14
![Page 34: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/34.jpg)
Θ(𝑛) Solution
34
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
Remember two values: Best So Far Best ending here19 0
![Page 35: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/35.jpg)
Θ(𝑛) Solution
35
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
Remember two values: Best So Far Best ending here19 17
![Page 36: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/36.jpg)
Θ(𝑛) Solution
36
5 8 -4 3 7 -15 2 8 -20 17 8 -50 -5 220 21 3 4 5 6 7 8 9 10 11 12 13
Remember two values: Best So Far Best ending here25 25
![Page 37: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/37.jpg)
End of Midterm Exam Materials!
37
![Page 38: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/38.jpg)
Back to Tiling
38
![Page 39: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/39.jpg)
39
How many ways are there to tile a 2×𝑛 board with dominoes?
Two ways to fill the final column:
𝑛 − 1
𝑛 − 2
𝑇𝑖𝑙𝑒 𝑛 = 𝑇𝑖𝑙𝑒 𝑛 − 1 + 𝑇𝑖𝑙𝑒(𝑛 − 2)
𝑇𝑖𝑙𝑒 0 = 𝑇𝑖𝑙𝑒 1 = 1
![Page 40: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/40.jpg)
How to compute 𝑇𝑖𝑙𝑒(𝑛)?
40
Tile(n):if n < 2:
return 1return Tile(n-1)+Tile(n-2)
Problem?
![Page 41: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/41.jpg)
Recursion Tree
41
Tile(5)
Tile(4) Tile(3)
Tile(3) Tile(2) Tile(2) Tile(1)
Tile(0)Tile(1)Tile(0)Tile(1)Tile(1)Tile(2)
Tile(0)Tile(1)
Many redundant calls!
Better way: Use Memory!
Run time: Ω(2D)
![Page 42: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/42.jpg)
Computing 𝑇𝑖𝑙𝑒(𝑛) with Memory
42
Initialize Memory MTile(n):
if n < 2:return 1
if M[n] is filled:return M[n]
M[n] = Tile(n-1)+Tile(n-2)return M[n]
M
0
1
2
3
4
5
6
![Page 43: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/43.jpg)
Computing 𝑇𝑖𝑙𝑒(𝑛) with Memory - “Top Down”
43
Initialize Memory MTile(n):
if n < 2:return 1
if M[n] is filled:return M[n]
M[n] = Tile(n-1)+Tile(n-2)return M[n]
1
1
2
3
5
8
13
M
0
1
2
3
4
5
6
![Page 44: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/44.jpg)
Dynamic Programming
• Requires Optimal Substructure– Solution to larger problem contains the solutions to smaller ones
• Idea:1. Identify recursive structure of the problem• What is the “last thing” done?
44𝑛 − 1 𝑛 − 2
![Page 45: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/45.jpg)
Generic Divide and Conquer Solution
def myDCalgo(problem):
if baseCase(problem):solution = solve(problem)
return solutionfor subproblem of problem: # After dividing
subsolutions.append(myDCalgo(subproblem))solution = Combine(subsolutions)
return solution45
![Page 46: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/46.jpg)
Generic Top-Down Dynamic Programming Solnmem = {}def myDPalgo(problem):
if mem[problem] not blank:return mem[problem]
if baseCase(problem):solution = solve(problem)mem[problem] = solutionreturn solution
for subproblem of problem:subsolutions.append(myDPalgo(subproblem))
solution = OptimalSubstructure(subsolutions)mem[problem] = solutionreturn solution
46
![Page 47: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/47.jpg)
Computing 𝑇𝑖𝑙𝑒(𝑛) with Memory - “Top Down”
47
Initialize Memory MTile(n):
if n < 2:return 1
if M[n] is filled:return M[n]
M[n] = Tile(n-1)+Tile(n-2)return M[n]
1
1
2
3
5
8
13
M
0
1
2
3
4
5
6
Recursive calls happen in a predictable order
![Page 48: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/48.jpg)
Better 𝑇𝑖𝑙𝑒(𝑛) with Memory - “Bottom Up”
48
Tile(n):Initialize Memory MM[0] = 1M[1] = 1for i = 2 to n:
M[i] = M[i-1] + M[i-2]return M[n]
M
0
1
2
3
4
5
6
![Page 49: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/49.jpg)
Dynamic Programming
• Requires Optimal Substructure– Solution to larger problem contains the solutions to smaller ones
• Idea:1. Identify recursive structure of the problem• What is the “last thing” done?
2. Select a good order for solving subproblems• Usually smallest problem first• “Bottom up”
49
![Page 50: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/50.jpg)
Log Cutting
50
Given a log of length 𝑛A list (of length 𝑛) of prices 𝑃 (𝑃[𝑖] is the price of a cut of size 𝑖) Find the best way to cut the log
1 5 8 9 10 17 17 20 24 30
10987654321Length:
Price:
Select a list of lengths ℓG, … , ℓI such that:∑ℓK = 𝑛
to maximize ∑𝑃[ℓK] Brute Force: 𝑂(2D)
![Page 51: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/51.jpg)
Greedy won’t work
51
Greedy: Lengths: 5, 1Profit: 51
Better: Lengths: 2, 4Profit: 54
1 18 24 36 50
54321Length:
Price: 50
6
• Greedy algorithms (next unit) build a solution by picking the best option “right now”– Select the most profitable cut first
![Page 52: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/52.jpg)
Greedy won’t work
• Greedy algorithms (next unit) build a solution by picking the best option “right now”– Select the “most bang for your buck” • (best price / length ratio)
52
1 18 24 36 50
54321Length:
Price:Greedy: Lengths: 5, 1
Profit: 51
Better: Lengths: 2, 4Profit: 54
50
6
![Page 53: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/53.jpg)
Dynamic Programming
• Idea:1. Identify recursive structure of the problem• What is the “last thing” done?
2. Select a good order for solving subproblems• Usually smallest problem first• “Bottom up”
53
![Page 54: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/54.jpg)
1. Identify Recursive Structure
54
𝐶𝑢𝑡(𝑛) = value of best way to cut a log of length 𝑛
ℓD𝐶𝑢𝑡(𝑛 − ℓD)
𝐶𝑢𝑡 𝑛 = max𝐶𝑢𝑡 𝑛 − 1 + 𝑃 1𝐶𝑢𝑡 𝑛 − 2 + 𝑃 2…𝐶𝑢𝑡 0 + 𝑃[𝑛]
Last Cutbest way to cut a log of length 𝒏 − ℓ𝒏
𝑃 𝑖 = value of a cut of length 𝑖
![Page 55: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/55.jpg)
Dynamic Programming
• Idea:1. Identify recursive structure of the problem• What is the “last thing” done?
2. Select a good order for solving subproblems• Usually smallest problem first• “Bottom up”
55
![Page 56: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/56.jpg)
2. Select a Good Order for Solving Subproblems
56
10987654321Length:
𝐶𝑢𝑡(𝑖): 0
0
Solve Smallest subproblem first
𝐶𝑢𝑡 0 = 0
0
![Page 57: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/57.jpg)
2. Select a Good Order for Solving Subproblems
57
10987654321Length:
𝐶𝑢𝑡(𝑖): 0
0
Solve Smallest subproblem first
𝐶𝑢𝑡 1 = 𝐶𝑢𝑡 0 + 𝑃[1]
1
![Page 58: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/58.jpg)
2. Select a Good Order for Solving Subproblems
58
10987654321Length:
𝐶𝑢𝑡(𝑖): 0
0
Solve Smallest subproblem first
𝐶𝑢𝑡 2 = max 𝐶𝑢𝑡 1 + 𝑃 1𝐶𝑢𝑡 0 + 𝑃 2
2
![Page 59: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/59.jpg)
2. Select a Good Order for Solving Subproblems
59
10987654321Length:
𝐶𝑢𝑡(𝑖): 0
0
Solve Smallest subproblem first
𝐶𝑢𝑡 3 = max 𝐶𝑢𝑡 2 + 𝑃 1𝐶𝑢𝑡 1 + 𝑃 2𝐶𝑢𝑡 0 + 𝑃[3]
3
![Page 60: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/60.jpg)
2. Select a Good Order for Solving Subproblems
60
10987654321Length:
𝐶𝑢𝑡(𝑖): 0
0
Solve Smallest subproblem first
𝐶𝑢𝑡 4 = max
𝐶𝑢𝑡 3 + 𝑃[1]𝐶𝑢𝑡 2 + 𝑃 2𝐶𝑢𝑡 1 + 𝑃 3𝐶𝑢𝑡 0 + 𝑃[4]
4
![Page 61: cs4102 L11 lmaxSubsetSum DPjh2jf/courses/fall... · Homeworks •HW3 due 11pm Wednesday, October 2 –Divide and Conquer –Written (use LaTeX!) –Submit BOTHa pdf and a zip file](https://reader036.fdocuments.net/reader036/viewer/2022070709/5ebb7a7e8772db18c74d18db/html5/thumbnails/61.jpg)
Log Cutting Pseudocode
61
Initialize Memory CCut(n):
C[0] = 0for i=1 to n:
best = 0for j = 1 to i:
best = max(best, C[i-j] + P[j])C[i] = best
return C[n]
Run Time: 𝑂(𝑛R)