Presentation is loading. Please wait.

Presentation is loading. Please wait.

Recurrences It continues… Jeff Chastine. Recurrences When an algorithm calls itself recursively, its running time is described by a recurrence. A recurrence.

Similar presentations


Presentation on theme: "Recurrences It continues… Jeff Chastine. Recurrences When an algorithm calls itself recursively, its running time is described by a recurrence. A recurrence."— Presentation transcript:

1 Recurrences It continues… Jeff Chastine

2 Recurrences When an algorithm calls itself recursively, its running time is described by a recurrence. A recurrence describes itself in terms of its value on smaller inputs There are four methods of solving these: substitution, iteration, recursion tree, or master method Jeff Chastine

3 What it looks like This is the recurrence of M ERGE -S ORT What this says is that the time involved is 1 if n = 1, Else, the time involved is 2 times calling on half the size of the array, plus n time to merge sorted sub-arrays T(n) = { Θ (1) 2T(n/2) + Θ (n) if n = 1 if n > 1 Jeff Chastine

4 Substitution Similar to induction Guess solution, and prove it holds true for next call Powerful method, but can sometimes be difficult to guess the solution! Jeff Chastine

5 Substitution Example: – T (n) = 2T (n/2) + n – Guess that T (n) = O(n lg n) We must prove that T (n)  cn lg n | c > 0 Assume it holds for n/2 as well T (n/2) = c(n/2) lg (n/2) + n// Rewrite using n/2 T (n)  2 (c(n/2) lg (n/2)) + n// Substitution = cn lg (n/2)) + n// Math stuff = cn (lg n – lg 2) + n = cn lg n – cn + n  cn lg n  c  1 Note:  means ‘for all’ Jeff Chastine

6 Subtleties Let T (n) = T (n/2) + T(n/2) + 1 Assume that T (n) = O(n) Then T (n/2) = c(n/2) T (n)  c(n/2) + c(n/2) + 1 = cn + 1 Which does not imply T (n)  cn Here, we’re correct, but off by a constant! Jeff Chastine

7 Subtleties We strengthen our guess: T (n)  cn – b T (n)  (c(n/2) – b) + (c(n/2) – b) + 1 = cn – 2b + 1  cn – b  b > 1 Jeff Chastine

8 One Last Example Jeff Chastine

9 Iteration Method Expand out the recurrence T(n) = 3T(n/4) + n T(n) = 3(3T(n/16) + (n/4)) + n T(n) = 3((3T(n/64) + 3(n/16))+ (n/4))) + n T(n) < n + 3n/4 + 9n/16 + 27n/64 + … n Σ i=0 ∞ ( ) 3 4 i = 4n = n 1 1 - 3/4 = n 1 1 4 Jeff Chastine

10 Recursion Tree Method A recursion tree is built We sum up each level, Total cost = number of levels * cost at each level Usually used to generate a good guess for the substitution method Could still be used as direct proof Example: T (n) = 3T (n/4) +  (n 2 ) Jeff Chastine

11 T(n)T(n)

12 cn 2 T(n/4) Jeff Chastine

13 cn 2 c(n/4) 2 T(n/16) Jeff Chastine

14 cn 2 c(n/4) 2 c(n/16) 2 T(1) Jeff Chastine

15 cn 2 c(n/4) 2 c(n/16) 2 T(1) cn 2 3/16 cn 2 (3/16) 2 cn 2  (n log 4 3 ) Jeff Chastine

16 Questions How many levels does this tree have? The subproblem at depth i is n/4 i When does the subproblem hit size 1? – n/4 i = 1 – n = 4 i – lg 4 n = i Therefore, the tree has lg 4 n levels The cost at each level is 3 i c(n/4 i ) 2 The last level has 3 log 4 n nodes = n log 4 3 Jeff Chastine

17 The Master's Method When it has this form: T(n) = aT(n/b) + f(n) If f (n) = Ο(n log b a-ε ) for some constant ε>0, then T (n) = Θ (n log b a ) If f (n) = Θ(n log b a ), then T (n) = Θ (n log b a lgn) If f (n) = Ω (n log b a+ε ) for some constant ε>0, then T (n) = Θ (f (n)) Jeff Chastine

18 T(n) = 9T(n/3) + n – a = 9, b = 3 thus n log b a = n log 3 9 = n 2 T(n) = T(2n/3) + 1 – a = 1, b = 3/2 thus n log b a = n log 3/2 1 = n 0 = 1 Problem: – T(n) = 2T(n/2) + nlgn Jeff Chastine


Download ppt "Recurrences It continues… Jeff Chastine. Recurrences When an algorithm calls itself recursively, its running time is described by a recurrence. A recurrence."

Similar presentations


Ads by Google