Recurrences It continues… Jeff Chastine
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
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
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
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
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
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
One Last Example Jeff Chastine
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/ n/64 + … n Σ i=0 ∞ ( ) 3 4 i = 4n = n /4 = n Jeff Chastine
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
T(n)T(n)
cn 2 T(n/4) Jeff Chastine
cn 2 c(n/4) 2 T(n/16) Jeff Chastine
cn 2 c(n/4) 2 c(n/16) 2 T(1) Jeff Chastine
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
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
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
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