objectives
play

Objectives Divide and conquer algorithms Recurrence relations - PDF document

3/8/19 Objectives Divide and conquer algorithms Recurrence relations Counting inversions March 8, 2019 CSCI211 - Sprenkle 1 Review What approach are we learning to solve problems (as of Wednesday)? What is the recurrence


  1. 3/8/19 Objectives • Divide and conquer algorithms Ø Recurrence relations Ø Counting inversions March 8, 2019 CSCI211 - Sprenkle 1 Review • What approach are we learning to solve problems (as of Wednesday)? • What is the recurrence relation for merge sort? Ø What is a recurrence relation in general? March 8, 2019 CSCI211 - Sprenkle 2 1

  2. 3/8/19 Merge Sort’s Recurrence Relation • T(n) = number of comparisons to mergesort an input of size n • Goal: put an upperbound on T(n): O(n) For some constant c, T(n) ≤ 2 T(n/2) + cn when n > 2, T(2) ≤ c basecase Solve T(n) to come up with explicit bound March 8, 2019 CSCI211 - Sprenkle 3 Approaches to Solving Recurrences • Unroll recursion Ø Look for patterns in runtime at each level Ø Sum up running times over all levels • Substitute guess solution into recurrence Ø Check that it works Ø Induction on n March 8, 2019 CSCI211 - Sprenkle 4 2

  3. 3/8/19 Unrolling Recurrence: T(n) T(n) = 2 T(n/2) + cn March 8, 2019 CSCI211 - Sprenkle 5 Unrolling Recurrence: 2 T(n/2) + cn • First level: 2 T(n/2) + cn cn T(n/2) T(n/2) How does the next level break down? March 8, 2019 CSCI211 - Sprenkle 6 3

  4. 3/8/19 Unrolling Recurrence: 2 T(n/2) + cn • Next level: cn c n/2 c n/2 T(n/4) T(n/4) T(n/4) T(n/4) Each one is 2 T(n/4) + c ( n /2) Next level? March 8, 2019 CSCI211 - Sprenkle 7 Unrolling Recurrence • Next level: cn Each one is 2 T(n/8) + c ( n /4) c n/2 c n/2 c n/4 c n/4 c n/4 c n/4 … T(n/8) T(n/8) T(n/8) T(n/8) And so on… What does the final level look like? March 8, 2019 CSCI211 - Sprenkle 8 4

  5. 3/8/19 Unrolling Recurrence • How much does each level cost, in terms of the level ? • How many levels are there (assuming n is a power of 2)? • What is the total run time? T(n) 0 cn c n/2 1 c n/2 2 c n/4 c n/4 c n/4 c n/4 T(n / 2 k ) c c c c c c c c T(2) March 8, 2019 CSCI211 - Sprenkle 9 Unrolling Recurrence • How many levels are there (assuming n is a power of 2)? • How much does each level cost, in terms of the level? • What is the total run time? T(n) 0 cn Number of levels: log 2 n c n/2 1 c n/2 2 k problems Size: n/2 k 2 c n/4 c n/4 c n/4 c n/4 Each level takes T(n / 2 k ) 2 k * c * (n/2 k ) = cn O(n log n) c c c c c c c c T(2) March 8, 2019 CSCI211 - Sprenkle 10 5

  6. 3/8/19 Alternative: Proof by Induction • Claim. If T(n) satisfies the recurrence T(n) ≤ 2 T(n/2) + cn , then T(n) ≤ cn log 2 n. • Pf. (by induction on n) Ø Base case: n = 2 Ø Inductive hypothesis: T(n) ≤ cn log 2 n Ø Goal: show that T(2n) ≤ 2cn log 2 (2n) Why doubling n? March 8, 2019 CSCI211 - Sprenkle 11 Proof by Induction • Claim. If T(n) satisfies the recurrence T(n) ≤ 2 T(n/2) + cn , then T(n) ≤ cn log 2 n. • Pf. (by induction on n) Ø Inductive hypothesis: T(n) ≤ cn log 2 n Ø Goal: show that T(2n) ≤ 2cn log 2 (2n) • Recurrence relation ≤ 2T(n) + c2n T(2n) • Replace T(n) w/ induction hypothesis ≤ 2cn log 2 n + 2cn • Log rules: what is the ≤ 2cn (log 2 (2n)-1) + 2cn difference between ≤ 2cn log 2 (2n) - 2cn + 2cn log 2 (2n) and log 2 (n)? ≤ 2cn log 2 (2n) ✔ March 8, 2019 CSCI211 - Sprenkle 12 6

  7. 3/8/19 Another Recurrence Relation: Binary Search • How does binary search work? • What is its recurrence relation? March 8, 2019 CSCI211 - Sprenkle 13 Analyzing Binary Search BinarySearch( L[1…n], key ): if len(L) == 1 and L[1] == key: return 1 #return the index else: return NOT_FOUND mid = n/2 if L[mid] == key: return mid #return the index if L[mid] < key: return BinarySearch(L[mid+1:], key) else: return BinarySearch(L[:mid], key) What is the recurrence relation? March 8, 2019 CSCI211 - Sprenkle 14 7

  8. 3/8/19 Analyzing Binary Search BinarySearch( L[1…n], key ): if len(L) == 1 and L[1] == key: return 1 #return the index else: return NOT_FOUND mid = n/2 if L[mid] == key: return mid #return the index if L[mid] < key: return BinarySearch(L[mid+1:], key) else: return BinarySearch(L[:mid], key) What is the recurrence relation? T(n) = T(n/2) + c March 8, 2019 CSCI211 - Sprenkle 15 Unroll the Recurrence • T(n) = T(n/2) + c • Which makes the runtime? March 8, 2019 CSCI211 - Sprenkle 16 8

  9. 3/8/19 Unroll the Recurrence • T(n) = T(n/2) + c Ø Constant work at each level Ø Number of levels: log n • Which makes the runtime? O(log n) March 8, 2019 CSCI211 - Sprenkle 17 Another Recurrence Relation • Instead of recursively solving 2 problems, solve q problems Ø Size of problems is still n/2 • Combining solutions is still O(n) n Example: q=3: n/2 n/2 n/2 What is the recurrence relation? March 8, 2019 CSCI211 - Sprenkle 18 9

  10. 3/8/19 Another Recurrence Relation • Instead of recursively solving 2 problems, solve q problems Ø Size of problems is still n/2 • Combining solutions is still O(n) • Recurrence relation: Ø For some constant c , T(n) ≤ q T(n/2) + cn when n > 2 T(2) ≤ c Intuition about running time? March 8, 2019 CSCI211 - Sprenkle 19 Unrolling Recurrence, q > 2 T(n) ≤ q T(n/2) + cn March 8, 2019 CSCI211 - Sprenkle 20 10

  11. 3/8/19 Unrolling Recurrence, q > 2 • First level: cn q T(n/2) + cn q … T(n/2) T(n/2) March 8, 2019 CSCI211 - Sprenkle 21 Unrolling Recurrence, q > 2 • Next level: cn q T(n/4) + c(n/2) q … c n/2 c n/2 … … q … q T(n/4) T(n/4) T(n/4) T(n/4) March 8, 2019 CSCI211 - Sprenkle 22 11

  12. 3/8/19 Unrolling Recurrence, q > 2 How much does each level cost, in terms of the level? 0 cn Number of levels? q … What is the total run time? c n/2 c n/2 1 … q … q T(n/4) T(n/4) T(n/4) T(n/4) q k problems at level k Size: n/2 k Number of levels: log 2 n Each level takes q k * c * (n/2 k ) = (q/2) j cn à Total work per level is increasing as level increases March 8, 2019 CSCI211 - Sprenkle 23 Unrolling Recurrence, q > 2 How much does each level cost, in terms of the level? 0 cn Number of levels? q … What is the total run time? c n/2 c n/2 1 … q … q T(n/4) T(n/4) T(n/4) T(n/4) T(n) ≤ Σ j=0,logn (q/2) j cn Geometric series: (constant ratio between successive terms) O(n log2 q ) Multiplying previous term by (q/2) March 8, 2019 CSCI211 - Sprenkle 24 12

  13. 3/8/19 Unrolling the Recurrence • Generalize: What are the steps? March 8, 2019 CSCI211 - Sprenkle 25 Summary • Use recurrences to analyze the runtime of divide and conquer algorithms • Need to figure out Ø Number of sub problems Ø Size of sub problems Ø Number of times divided (number of levels) Ø Cost of merging problems March 8, 2019 CSCI211 - Sprenkle 26 13

  14. 3/8/19 Know Your Recurrence Relations What algorithm has this recurrence relation? What is that algorithm’s running time? Recurrence Algorithm Running Time T(n) = T(n/2) + O(1) T(n) = T(n-1) + O(1) T(n) = 2 T(n/2) + O(1) T(n) = T(n-1) + O(n) T(n) = 2 T(n/2) + O(n) March 8, 2019 CSCI211 - Sprenkle 27 Looking Ahead • Problem Set 7 – due next Friday • Wiki – 4.8, 5-5.3 March 8, 2019 CSCI211 - Sprenkle 28 14

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend