divide and conquer
play

Divide-and-Conquer Carola Wenk Slides courtesy of Charles Leiserson - PowerPoint PPT Presentation

CMPS 6610/4610 Fall 2016 Divide-and-Conquer Carola Wenk Slides courtesy of Charles Leiserson with changes and additions by Carola Wenk 1 CMPS 6610/4610 Algorithms The divide-and-conquer design paradigm 1. Divide the problem (instance)


  1. CMPS 6610/4610 – Fall 2016 Divide-and-Conquer Carola Wenk Slides courtesy of Charles Leiserson with changes and additions by Carola Wenk 1 CMPS 6610/4610 Algorithms

  2. The divide-and-conquer design paradigm 1. Divide the problem (instance) into subproblems of sizes that are fractions of the original problem size. 2. Conquer the subproblems by solving them recursively. 3. Combine subproblem solutions. 2 CMPS 6610/4610 Algorithms

  3. Merge sort 1. Divide: Trivial. 2. Conquer: Recursively sort 2 subarrays of size n /2 3. Combine: Linear-time key subroutine M ERGE M ERGE -S ORT ( A [0 . . n- 1]) 1. If n = 1, done. 2. M ERGE -S ORT ( A [ 0 . .  n /2  -1]) 3. M ERGE -S ORT ( A [  n /2  . . n- 1 ]) 4. “ Merge ” the 2 sorted lists. 3 CMPS 6610/4610 Algorithms

  4. Merging two sorted arrays 20 12 20 12 20 12 20 12 20 12 20 12 13 11 13 11 13 11 13 11 13 11 13 7 9 7 9 7 9 9 2 1 2 1 2 7 9 11 12 Time dn   ( n ) to merge a total of n elements (linear time). 4 CMPS 6610/4610 Algorithms

  5. Analyzing merge sort T ( n ) M ERGE -S ORT ( A [0 . . n- 1]) 1. If n = 1, done. d 0 T ( n /2) 2. M ERGE -S ORT ( A [ 0 . .  n /2  +1]) T ( n /2) 3. M ERGE -S ORT ( A [  n /2  . . n- 1 ]) 4. “ Merge ” the 2 sorted lists. dn Sloppiness: Should be T (  n /2  ) + T (  n /2  ) , but it turns out not to matter asymptotically. 5 CMPS 6610/4610 Algorithms

  6. Recurrence for merge sort d 0 if n = 1; T ( n ) = 2 T ( n /2) + dn if n > 1. • But what does T ( n ) solve to? I.e., is it O( n ) or O( n 2 ) or O( n 3 ) or …? 6 CMPS 6610/4610 Algorithms

  7. Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. T ( n ) 7 CMPS 6610/4610 Algorithms

  8. Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. dn T ( n /2) T ( n /2) 8 CMPS 6610/4610 Algorithms

  9. Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. dn dn /2 dn /2 T ( n /4) T ( n /4) T ( n /4) T ( n /4) 9 CMPS 6610/4610 Algorithms

  10. Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. dn dn dn /2 dn /2 dn h = log n dn /4 dn /4 dn /4 dn /4 dn … #leaves = n d 0 d 0 n Total dn log n + d 0 n 10 CMPS 6610/4610 Algorithms

  11. Recursion-tree method • A recursion tree models the costs (time) of a recursive execution of an algorithm. • The recursion-tree method can be unreliable, just like any method that uses ellipses (…). • It is good for generating guesses of what the runtime could be. But: Need to verify that the guess is correct. → Induction (substitution method) 11 CMPS 6610/4610 Algorithms

  12. Substitution method The most general method to solve a recurrence (prove O and  separately): 1. Guess the form of the solution: (e.g. using recursion trees, or expansion) 2. Verify by induction (inductive step). 3. Solve for O-constants n 0 and c (base case of induction) 12 CMPS 6610/4610 Algorithms

  13. Convex Hull Problem  Given a set of pins on a pinboard and a rubber band around them. How does the rubber band look when it snaps tight?  The convex hull of a point set is one of the simplest shape approximations for a set of points. 13 CMPS 6610/4610 Algorithms

  14. Convex Hull: Divide & Conquer  Preprocessing: sort the points by x- coordinate  Divide the set of points into two sets A and B :  A contains the left  n/2  points,  B contains the right  n/2  points  Recursively compute the convex hull of A A B  Recursively compute the convex hull of B  Merge the two convex hulls 14 CMPS 6610/4610 Algorithms

  15. Merging  Find upper and lower tangent  With those tangents the convex hull of A  B can be computed from the convex hulls of A and the convex hull of B in O( n ) linear time A B 15 CMPS 6610/4610 Algorithms

  16. Finding the lower tangent 3 a = rightmost point of A b = leftmost point of B 4=b 4 2 while T=ab not lower tangent to both convex hulls of A and B do{ 3 5 5 a=2 while T not lower tangent to 6 convex hull of A do{ 1 7 a=a-1 1 } 0 0 while T not lower tangent to convex hull of B do{ A B b=b+1 left turn } right turn } check with orientation test 16 CMPS 6610/4610 Algorithms

  17. Convex Hull: Runtime  Preprocessing: sort the points by x- O( n log n ) just once coordinate  Divide the set of points into two O(1) sets A and B :  A contains the left  n/2  points,  B contains the right  n/2  points  Recursively compute the convex T( n /2) hull of A  Recursively compute the convex T( n /2) hull of B O( n )  Merge the two convex hulls 17 CMPS 6610/4610 Algorithms

  18. Convex Hull: Runtime  Runtime Recurrence: T(n) = 2 T( n /2) + d n  Solves to T( n ) =  ( n log n ) 18 CMPS 6610/4610 Algorithms

  19. Powering a number Problem: Compute a n , where n  N . Naive algorithm:  ( n ). Divide-and-conquer algorithm: (recursive squaring) a n/ 2  a n/ 2 if n is even; a n = a ( n– 1) / 2  a ( n– 1) / 2  a if n is odd. T ( n ) = T ( n /2) +  (1)  T ( n ) =  (log n ) . 19 CMPS 6610/4610 Algorithms

Recommend


More recommend