CSE 2320 Notes 4: Recurrences (Last updated 2/12/16 4:40 AM) Sedgewick 2.5 4.A. BOUNDING RECURRENCES ASYMPTOTICALLY Goal: Take a function T ( n) that is defined recursively and find f ( n) such that T ( n) Î Q( f ( n)). Need to establish both T ( n) Î O( f ( n)) and (without using the limit theorems). 4.B. RECURRENCES, CONSTANTS, AND EVALUATING BY BRUTE EXPANSION Consider the recurrence: ænö æ nö T ( n) = Tç ÷ + e = Tç ÷ + Q(1) è2ø è 2ø T (1) = d = Q(1) [or use an arbitrary n0 , i.e. T ( n0 ) = d = Q(1)] Suppose n = 2k: T (1) = d T (2) = T (1) + e = d + e T ( 4) = T (2) + e = ( d + e) + e = d + 2e T (8) = T ( 4 ) + e = ( d + 2e) + e = d + 3e æ ö æ ö Tç2 k ÷ = Tç2 k-1÷ + e = d + ke = d + elg n = Q(log n ) è ø è ø Consider the recurrence: æ nö ænö T ( n) = 2Tç ÷ + en = 2Tç ÷ + Q( n) è 2ø è2ø T (1) = d = Q(1) 2 Suppose n = 2k: T (1) = d T (2) = 2T (1) + 2e = 2d + 2e T ( 4 ) = 2T (2) + 4e = 2(2d + 2e) + 4e = 4d + 8e T (8) = 2T ( 4) + 8e = 2( 4d + 8e) + 8e = 8d + 24e T (16) = 2T (8) + 16e = 2(8d + 24e) + 16e = 16d + 64e æ ö æ ö æ ö Tç n = 2 k ÷ = 2Tç 2 k-1÷ + 2 k e = 2ç 2 k-1d + 2 k-1( k -1)e÷ + 2 k e è ø è ø è ø = 2 k d + 2 k ke = nd + en lg n = Q n log n ( ) (see http://ranger.uta.edu/~weems/NOTES2320/notes04.c for examples of expansion) Constants d and e do not usually matter . . . 4.C. THE SUBSTITUTION METHOD FOR BOUNDING RECURRENCES Method Guess bound (lower and/or upper ) [On exams the guess will be given to you] Verify by math induction (solve for constants for some function in asymptotic set) i) Assume bounding hypothesis works for k < n ii) Show bounding hypothesis works for n in exactly the same form as (i). Refine bound Example: Binary search recurrence (number of probes) ænö T ( n ) = Tç ÷ + 1 è2ø O(log n) Assume T ( k ) £ c lg k for k < n. (Note : log a n Î Q(logb n )) æ nö æ nö Tç ÷ £ c lgç ÷ = c (lg n - lg2) = c lg n - c è 2ø è 2ø ænö T ( n ) = Tç ÷ + 1 è2ø £ c lg n - c + 1 £ c lg n if c ³ 1 3 Assume T ( k ) ³ c lg k for k < n æ nö æ nö Tç ÷ ³ c lgç ÷ = c (lg n - lg2) = c lg n - c è 2ø è 2ø ænö T ( n) = Tç ÷ + 1 è2ø ³ c lg n - c + 1 ³ c lg n if 0 < c £ 1 æ nö è 2ø Example: T ( n) = 2Tç ÷ + dn O( n log n) Assume T ( k ) £ ck lg k for k < n ænö n æ nö n n n Tç ÷ £ c lgç ÷ = c (lg n - lg2) = c lg n - c è2ø 2 è 2ø 2 2 2 æ nö T ( n) = 2Tç ÷ + dn è 2ø æ n nö £ 2ç c lg n - c ÷ + dn è 2 2ø = cn lg n - cn + dn £ cn lg n if c ³ d Assume T ( k ) ³ ck lg k for k < n ænö n æ nö n n n Tç ÷ ³ c lgç ÷ = c (lg n - lg2) = c lg n - c è2ø 2 è 2ø 2 2 2 æ nö T ( n) = 2Tç ÷ + dn è 2ø æ n nö ³ 2ç c lg n - c ÷ + dn è 2 2ø = cn lg n - cn + dn ³ cn lg n if 0 < c £ d Why is there no basis step for the math induction in these two examples? 4 Example: æ nö T ( n) = 4Tç ÷ + n è 2ø æ ö Try Oç n 3÷ and confirm by math induction: è ø Assume T ( k ) £ ck 3 for k < n æ nö n3 Tç ÷ £ c è 2ø 8 æ nö T ( n ) = 4Tç ÷ + n è 2ø n3 £ 4c +n 8 c = n3 + n 2 c = cn 3 - n 3 + n 2 £ cn 3 c - n 3 + n £ 0 if n is sufficiently large 2 æ ö Improve bound to Oç n 2 ÷ and confirm: è ø Assume T ( k ) £ ck 2 for k < n æ nö n2 Tç ÷ £ c è 2ø 4 æ nö n2 T ( n) = 4Tç ÷ + n £ 4c + n = cn 2 + n STUCK! è 2ø 4 5 as lower bound: Assume T ( k ) ³ ck 3 for k < n æ nö n3 Tç ÷ ³ c è 2ø 8 æ nö T ( n ) = 4Tç ÷ + n è 2ø n3 ³ 4c +n 8 c = n3 + n 2 c c = cn 3 - n 3 + n - n 3 + n ³ 0? 2 2 3 ³ cn DID NOT PROVE!!! as lower bound: Assume T ( k ) ³ ck 2 for k < n æ nö n2 Tç ÷ ³ c è 2ø 4 æ nö n2 T ( n) = 4Tç ÷ + n ³ 4c + n = cn2 + n ³ cn 2 for 0 < c è 2ø 4 What’s going on . . . back to brute expansion T (1) = d T (2) = 4T (1) + 2 = 4d + 2 T ( 4) = 4T (2) + 4 = 4 ( 4d + 2) + 4 = 16d + 8 + 4 = 16d + 12 T (8) = 4T ( 4) + 8 = 4 (16d + 12) + 8 = 64d + 48 + 8 = 64d + 56 T (16) = 4T (8) + 16 = 4 (64d + 56) + 16 = 256d + 224 + 16 = 256d + 240 æ ö Hypothesis : T ( n ) = dn 2 + n 2 - n = ( d + 1) n 2 - n = cn 2 - n = Qç n 2 ÷ è ø 6 æ ö Oç n 2 ÷: è ø Assume T ( k ) £ ck 2 - k for k < n æ nö n2 n Tç ÷ £ c è 2ø 4 2 æ 2 ö æ nö n n T ( n) = 4Tç ÷ + n £ 4ççc - ÷÷ + n = cn 2 - 2n + n = cn2 - n è 2ø 2ø è 4 : [This bound was already proven.] Assume T ( k ) ³ ck 2 - k for k < n æ nö n2 n Tç ÷ ³ c è 2ø 4 2 æ 2 ö æ nö n n T ( n) = 4Tç ÷ + n ³ 4ççc - ÷÷ + n = cn 2 - 2n + n = cn2 - n è 2ø 2ø è 4 Example: T ( n) = T ( n ) +1 O(log n): Assume T ( k ) £ c lg k for k < n ( n ) £ c lg lg n 2 lg n lg n T ( n) = T n + 1 £ c + 1 = c lg n - c +1 2 2 £ c lg n for sufficiently large n T ( ) n =c 7 O(loglog n): Assume T ( k ) £ c lglg k for k < n. (Note : log a log a n Î Q(logb logb n )) ( n ) £ c lglg n = c lg lg2n = c lglg n - c T ( n) = T ( n ) + 1 £ c lglg n - c + 1 T £ c lglg n if c ³ 1 Achieving Q(loglog n) seems irrelevant, but . . . 2 n is to n as n is to log n . . . and as log n is to loglog n. : Assume T ( k ) ³ c lglg k for k < n ( n ) ³ c lglg n = c lg lg2n = c lglg n - c T ( n) = T ( n ) + 1 ³ c lglg n - c + 1 T ³ c lglg n if 0 < c £ 1 Example: L. Adleman et.al., “Running Time and Program Size for Self-assembled Squares”, p. 745 (Lemma 3.4)”, http://dl.acm.org.ezproxy.uta.edu/citation.cfm?doid=380752.380881 ( 2) + Q(log n), and the solution to this recurrence is L(n) = Q(n)”. “Therefore, L( n) = 2L n æ nö L( n) = 2Lç ÷ + lg n is Q( n) è 2ø O( n) : L( k ) £ ck for k < n æ nö n Lç ÷ £ c è 2ø 2 æ nö n L( n) = 2Lç ÷ + lg n £ 2c + lg n = cn + lg n stuck! è 2ø 2 (aside: “An Algorithmic View of the Universe” at http://amturing.acm.org/acm_tcc_webcasts.cfm ) 8 : L( k ) ³ ck for k < n ænö n Lç ÷ ³ c è2ø 2 æ nö n L( n) = 2Lç ÷ + lg n ³ 2c + lg n = cn + lg n ³ cn è 2ø 2 More brute expansion: L(1) = d L(2) = 2L(1) + 1 = 2d + 1 L( 4) = 2L(2) + 2 = 2(2d + 1) + 2 = 4d + 2 + 2 = 4d + 4 L(8) = 2L( 4) + 3 = 2( 4d + 4) + 3 = 8d + 8 + 3 = 8d + 11 L(16) = 2L(8) + 4 = 2(8d + 11) + 4 = 16d + 22 + 4 = 16d + 26 L( 32) = 2L(16) + 5 = 2(16d + 26) + 5 = 32d + 52 + 5 = 32d + 57 L(64 ) = 2L( 32) + 6 = 2( 32d + 57) + 6 = 64d + 114 + 6 = 64d + 120 Hypothesis : L( n ) = nd + 2n - lg n - 2 = ( d + 2) n - lg n - 2 = cn - lg n - 2 = Q( n ) New try at O( n) : L( k ) £ ck - lg k - 2 for k < n ænö n n Lç ÷ £ c - lg - 2 è2ø 2 2 n n = c - lg n + 1- 2 = c - lg n -1 2 2 æ nö æ n ö L( n ) = 2Lç ÷ + lg n £ 2ç c - lg n -1÷ + lg n è 2ø è 2 ø = cn - 2lg n - 2 + lg n = cn - lg n - 2 9 æ nö è 2ø Example: T ( n) = 2Tç ÷ + n 3 æ ö Oç n 3÷: è ø Assume T ( k ) £ ck 3 for k < n ænö n3 Tç ÷ £ c è2ø 8 æ nö n3 n3 T ( n) = 2Tç ÷ + n 3 £ 2c + n3 = c + n3 è 2ø 8 4 3 = cn 3 - cn 3 + n 3 4 4 £ cn 3 if c ³ 3 : Assume T ( k ) ³ ck 3 for k < n ænö n3 Tç ÷ ³ c è2ø 8 æ nö n3 n3 T ( n) = 2Tç ÷ + n 3 ³ 2c + n3 = c + n3 è 2ø 8 4 3 = cn 3 - cn 3 + n 3 4 4 ³ cn 3 if 0 < c £ 3 æ nö Example: T ( n) = 3Tç ÷ + 2 è 3ø O( n) : Assume T ( k ) £ ck for k < n æ n ö cn Tç ÷ £ è 3ø 3 æ nö cn T ( n) = 3Tç ÷ + 2 £ 3 + 2 = cn + 2 stuck! è 3ø 3 10 : Assume T ( k ) ³ ck for k < n æ n ö cn Tç ÷ ³ è 3ø 3 ænö cn T ( n) = 3Tç ÷ + 2 ³ 3 + 2 = cn + 2 ³ cn è 3ø 3 Examine a few cases: T (1) = d T ( 3) = 3T (1) + 2 = 3d + 2 T (9) = 3T ( 3) + 2 = 3(3d + 2) + 2 = 9d + 6 + 2 = 9d + 8 T (27) = 3T (9) + 2 = 3(9d + 8) + 2 = 27d + 24 + 2 = 27d + 26 Hypothesis : T ( n) = nd + n -1 = ( d + 1) n -1 = cn -1 = Q( n ) New try for O( n) : Assume T ( k ) £ ck -1 for k < n æ n ö cn Tç ÷ £ -1 è 3ø 3 ænö æ cn ö T ( n) = 3Tç ÷ + 2 £ 3ç -1÷ + 2 = cn - 3 + 2 = cn -1 è 3ø è3 ø 4.D. RECURSION TREE METHOD Concepts Draw tree – either for a particular n or for general case Fan-out Sub-problem sizes Number of levels Number of leaves (Number of parents-of-leaves) Assign (non-recursive) contribution of a node (sub-problem) in each level Compute total (non-recursive) contribution across each level Usually complete by evaluating a summation – Go directly for bound, not separate and . 11 æ nö è 2ø Example: T ( n) = 4Tç ÷ + n T(n)Þn T(n/2)Þn/2 T(n/4)Þn/4 lg n + 1 levels T(n/8)Þn/8 T(n/16)Þn/16 . . . T(2)=T(n/2lg n-1)Þ2 T(1)Þ1 Note use of the identity n 4n/2=2n 16n/4=4n 64n/8=8n 256n/16=16n . . . 4lg n-1•n/2 lg n-1 =2lg n-1•n 4lg n =nlg 4 =n2 logad = log ab. d b Using definite geometric sum formula: lg n-1 2lg n -1 2 n å 2k + n2 = n +n 2 -1 k=0 = n n -1 + n 2 ( ) æ ö = n 2 - n + n 2 = Qç n 2 ÷ è ø t x t+1 -1 Using å x k = x -1 k=0 x ¹1 12 æ nö è 2ø Example: T ( n) = 2Tç ÷ + n 3 T(n)Þn3 T(n/2)Þn3/8 T(n/4)Þn3/64 lg n + 1 levels T(n/8)Þn3/512 T(n/16)Þn3/4096 . . . T(2)=T(n/2lg n-1)Þ8 T(1)Þ1 n3 2n3/8=n3/4 4n3/64=n3/16 8n3/512=n3/64 16n3/4096=n3/256 . . . lg n-1 lg n-1 2 (n/2 )3=n3/4lg n-1 2lg n=n Using indefinite geometric sum formula: lg n-1 1 ¥ 1 3 n å + n £ n3 å +n k k k=0 4 k=0 4 = n3 1 +n 1 14 4 = n 3 + n = O(n 3) 3 ¥ 1 F rom å x k = 1- x k=0 0 < x <1 13 Using definite geometric sum formula: () 1 lg n -1 lg n-1 1 t x t+1 -1 n3 å + n = n3 4 +n U sing å x k = k 1 -1 x -1 k=0 4 k=0 4 n -2 -1 1- n -2 4 æ 1ö = n3 + n = n3 + n = n 3ç1- ÷ + n 3 3 è n2 ø -3 4 4 æ ö = Qç n 3÷ è ø æ nö Example: T ( n) = 9Tç ÷ + 2n 2 è 3ø æ ö T ( n) = 2n2 log 3 n + n2 = Qç n 2 log n÷ è ø x ¹1