130 likes | 149 Views
Learn how to solve recurrences in algorithms using the Substitution, Iteration, and Master methods. Understand through examples and algebraic evaluations. Master the art of guessing the answer and proving it. Achieve efficiency in algorithmic analysis.
E N D
Introduction to Algorithms Chapter 4: Recurrences
Solving Recurrences • A recurrence is an equation that describes a function in terms of itself by using smaller inputs • The expression: • Describes the running time for a function contains recursion.
Solving Recurrences • Examples: • T(n) = 2T(n/2) + (n) T(n) = (n lg n) • T(n) = 2T(n/2) + n T(n) = (n lg n) • T(n) = 2T(n/2) + 17 + n T(n) = (n lg n) • Three methods for solving recurrences • Substitution method • Iteration method • Master method
Substitution Method • The substitution method • “making a good guess method” • Guess the form of the answer, then • use induction to find the constants and show that solution works • Our goal: show that T(n) = 2T(n/2) + n = O(n lg n)
Substitution MethodT(n) = 2T(n/2) + n = O(n lg n) • Thus, we need to show that T(n) c n lg n with an appropriate choice of c • Inductive hypothesis: assume T(n/2) c (n/2) lg (n/2) • Substitute back into recurrence to show thatT(n) c n lg n follows, when c 1 • T(n) = 2 T(n/2) + n 2 (c (n/2) lg (n/2)) + n = cn lg(n/2) + n = cn lg n – cn lg 2 + n = cn lg n – cn + n cn lg n for c 1 = O(n lg n) for c 1
Iteration Method • Iteration method: • Expand the recurrence k times • Work some algebra to express as a summation • Evaluate the summation
T(n) = c + T(n-1) = c + c + T(n-2) = 2c + T(n-2) = 2c + c + T(n-3) = 3c + T(n-3) … kc + T(n-k) = ck + T(n-k) • So far for nk we have • T(n) = ck + T(n-k) • To stop the recursion, we should have • n - k = 0 k = n • T(n) = cn + T(0) = cn • Thus in general T(n) = O(n)
T(n) = n + T(n-1) = n + n-1 + T(n-2) = n + n-1 + n-2 + T(n-3) = n + n-1 + n-2 + n-3 + T(n-4) = … = n + n-1 + n-2 + n-3 + … + (n-k+1) + T(n-k) = for nk • To stop the recursion, we should have n - k = 0 k = n
T(n) = 2 T(n/2) + c 1 = 2(2 T(n/2/2) + c) + c 2 = 22 T(n/22) + 2c + c = 22(2 T(n/22/2) + c) + (22-1)c 3 = 23 T(n/23) + 4c + 3c = 23 T(n/23) + (23-1)c = 23(2 T(n/23/2) + c) + 7c 4 = 24 T(n/24) + (24-1)c = … = 2kT(n/2k) + (2k - 1)ck
So far for nk we have • T(n) = 2k T(n/2k) + (2k - 1)c • To stop the recursion, we should have • n/2k = 1 n = 2k k = lg n • T(n) = n T(n/n) + (n - 1)c = nT(1) + (n-1)c = nc + (n-1)c = nc + nc – c = 2cn – c T(n) = 2cn – c = O(n)