# Recurrence Relations Divide and conquer is a very

- Slides: 16

Recurrence Relations • Divide and conquer is a very common problem solving strategy in computer science • Recursion, where you solve a simpler version of the same problem, is a common application of divide and conquer – the recursion “bottoms out” in a base case – Merge sort divides a problem in “half” and solves each half separately – The recurrence relation is – Binary search divides a problem in half but only has to solve the problem for one of the two halves

Common Ways to Solve Recurrence Relations • There are several common ways to solve a recurrence relation – The substitution method (guess and then check) – The recurrence tree method (sum up complexity at each level, then sum all the levels) – The master method (prove a general theorem once then apply theorem where appropriate; covers many common cases but not all cases) – Generating functions (only introduced in exercise 4 -5 in this textbook; we will not cover it in class)

The Substitution Method - 1 • Given the recurrence – This is the recurrence for a merge sort – Intuitively we know each pass of a merge sort has complexity O(n) (why? ) and there are O(log n) passes (why? ) – So we guess the correct solution is O(n log n) – we verify this by using mathematical induction

The Substitution Method - 2 • Our inductive assumption is • This is true for any c 1

The Substitution Method - 3 • Our induction must hold for the base case too • Using our formula we find T(1) c * 1 * lg 1 = 0 which does not agree with T(1) = 1 • Remember our asymptotic assumption only requires we find an n n 0 for which to formula holds, so selecting n 0 > 1 eliminates the “bad” base case

Some Subtleties - 1 • Given the recurrence • A reasonable guess would be O(n) • But there is no c such that T(n) c n • We are only using weak induction where we assume it is only true for the prior value; we need to use strong induction (it is true for all prior values)

Some Subtleties - 2 • We subtract a lower order term, call it b T(n) <= c n – b and now substitute in our solution • This works provided b >= 1 • We can then prove our boundary condition for c

Recursive Tree Method - 1 • Given the recurrence T(n) = 3 T(n/4) + c n 2 • Expanding the first couple levels of the tree

Recursive Tree Method - 2

Recursive Tree Method - 3 • We find the total cost for each level of the tree • We then add up the costs for all levels • This appears to be the formula for a decreasing geometric series

Recursive Tree Method - 4 • In general we have (A. 6)

Another Example - 1 • We use the recurrence tree to guess at a solution

Another Example - 2 • We now verify by substitution • It is a common strategy to use the recurrence tree method to guess a solution and then to verify the solution by substitution

The Master Method • The book provides a rigorous proof; we only suggest a proof by the tree diagram on the next page

Recursive Tree Diagram

Examples • First example • Second example

- Divide and conquer recurrence
- Divide and conquer advantages and disadvantages
- Top down greedy approach
- Rabbits and recurrence relations
- Voronoi diagram
- Delaunay triangulation divide and conquer algorithm
- Counting inversions divide and conquer
- Divide et impera c++
- Divide and conquer
- Dynamic programming vs divide and conquer
- Divide and conquer
- Strassen's matrix multiplication algorithm
- Let's divide and conquer
- Cse 202
- Divide and conquer pseudocode
- Tuliskan algoritma divide and conquer
- Divide should ideas prevail