R. Johnsonbaugh Discrete Mathematics 7th edition, 2009 Instructor Tianping Shuai Chapter 7 Recurrence Relations 7.1 Introduction A recurrence relation for the sequence {an} is an equation that expresses an is terms of one or more of the previous terms of the sequence, namely, a0, a1, …, an-1, for all integers n with n n0, where n0 is a nonnegative integer. A sequence is called a solution of a recurrence relation if it terms satisfy the recurrence relation. 7.1 Introduction In other words, a recurrence relation is like a recursively defined sequence, but without specifying any initial values (initial conditions). Therefore, the same recurrence relation can have (and usually has) multiple solutions. If both the initial conditions and the recurrence relation are specified, then the sequence is uniquely determined. 7.1 Introduction Example 1: Consider the recurrence relation an = 2an-1 – an-2 for n = 2, 3, 4, … Is the sequence {an} with an=3n a solution of this recurrence relation? For n 2 we see that 2an-1 – an-2 = 2(3(n – 1)) – 3(n – 2) = 3n = an. Therefore, {an} with an=3n is a solution of the recurrence relation. 7.1 Introduction Is the sequence {an} with an=5 a solution of the same recurrence relation? For n 2 we see that 2an-1 – an-2 = 25 - 5 = 5 = an. Therefore, {an} with an=5 is also a solution of the recurrence relation. Definition 1:A recurrence relation is an infinite sequence a1, a2, a3,…, an,… in which the formula for the nth term an depends on one or more preceding terms, with a finite set of start-up values or initial conditions Examples of recurrence relations Example 2: Initial condition a0 = 1 Recursive formula: a n = 1 + 2a n-1 for n > 2 First few terms are: 1, 3, 7, 15, 31, 63, … Example 3: Initial conditions a0 = 1, a1 = 2 Recursive formula: a n = 3(a n-1 + a n-2) for n > 2 First few terms are: 1, 2, 9, 33, 126, 477, 1809, 6858, 26001,… Modeling with Recurrence Relations Example: Someone deposits $10,000 in a savings account at a bank yielding 5% per year with interest compounded annually. How much money will be in the account after 30 years? Solution: Let Pn denote the amount in the account after n years. How can we determine Pn on the basis of Pn-1? Modeling with Recurrence Relations We can derive the following recurrence relation: Pn = Pn-1 + 0.05Pn-1 = 1.05Pn-1. The initial condition is P0 = 10,000. Then we have: P1 = 1.05P0 P2 = 1.05P1 = (1.05)2P0 P3 = 1.05P2 = (1.05)3P0 … Pn = 1.05Pn-1 = (1.05)nP0 We now have a formula to calculate Pn for any natural number n and can avoid the iteration. Modeling with Recurrence Relations Let us use this formula to find P30 under the initial condition P0 = 10,000: P30 = (1.05)3010,000 = 43,219.42 After 30 years, the account contains $43,219.42. Algorithm 1. 2. 3. 4. 5. Input: n Output: the account after n years procedure interest(n) if n =0 then return (1000) return(1.05 * interest(n-1)) end interest Compound interest Given P = initial amount (principal) n = number of years r = annual interest rate A = amount of money at the end of n years At the end of: 1 year: A = P + rP = P(1+r) 2 years: A = P + rP(1+r) = P(1+r)2 3 years: A = P + rP(1+r)2 = P(1+r)3 … Obtain the formula A = P (1 + r) n Modeling with Recurrence Relations Another example: Let an denote the number of bit strings of length n that do not have two consecutive 0s (“valid strings”). Find a recurrence relation and give initial conditions for the sequence {an}. Solution: Idea: The number of valid strings equals the number of valid strings ending with a 0 plus the number of valid strings ending with a 1. Modeling with Recurrence Relations us assume that n 3, so that the string contains at least 3 bits. Let us further assume that we know the number an-1 of valid strings of length (n – 1). Then how many valid strings of length n are there, if the string ends with a 1? There are an-1 such strings, namely the set of valid strings of length (n – 1) with a 1 appended to them. Note: Whenever we append a 1 to a valid string, that string remains valid. Let Modeling with Recurrence Relations Now we need to know: How many valid strings of length n are there, if the string ends with a 0? Valid strings of length n ending with a 0 must have a 1 as their (n – 1)st bit (otherwise they would end with 00 and would not be valid). And what is the number of valid strings of length (n – 1) that end with a 1? We already know that there are an-1 strings of length n that end with a 1. Therefore, there are an-2 strings of length (n – 1) that end with a 1. Modeling with Recurrence Relations So there are an-2 valid strings of length n that end with a 0 (all valid strings of length (n – 2) with 10 appended to them). As we said before, the number of valid strings is the number of valid strings ending with a 0 plus the number of valid strings ending with a 1. That gives us the following recurrence relation: an = an-1 + an-2 Modeling with Recurrence Relations What are the initial conditions? a1 = 2 (0 and 1) a2 = 3 (01, 10, and 11) a3 = a2 + a1 = 3 + 2 = 5 a4 = a3 + a2 = 5 + 3 = 8 a5 = a4 + a3 = 8 + 5 = 13 … This sequence satisfies the same recurrence relation as the Fibonacci sequence. Since a1 = f2 and a2 = f3, we have an = fn+1. Fibonacci sequence Initial conditions: f1 Recursive formula: = 1, f2 = 2 f n+1 = f n-1 + f n for n > 3 First few terms: n 1 2 3 4 5 6 7 8 9 10 11 fn 1 2 3 5 8 13 21 34 55 89 144 Eugene Catalan Belgian mathematician, 1814-1894 Catalan numbers are generated by the formula: Cn = C(2n,n) / (n+1) for n > 0 The first few Catalan numbers are: n 0 1 2 3 4 5 6 7 8 9 10 11 Cn 1 1 2 5 14 42 132 429 1430 4862 16796 58786 Eugene Catalan How many routes are there from the lower-left of n × n square grid to the upper-right corner if we are restricted to traveling only to the right or upward and if we are allowed to touch but not go above a diagonal line from the lower-left to the upper-right corner? (n,n) (n,n) (k,k) (0,0) (k, k) (k,k) (n,n) n Cn Ck 1Cn k k 1 Towers of Hanoi Start with three pegs numbered 1, 2 and 3 mounted on a board, n disks of different sizes with holes in their centers, placed in order of increasing size from top to bottom. Object of the game: find the minimum number of moves needed to have all n disks stacked in the same order in peg number 3. Rules of the game: Hanoi towers Start with all disks stacked in peg 1 with the smallest at the top and the largest at the bottom Use peg number 2 for intermediate steps Only a disk of smaller diameter can be placed on top of another disk End of game: Hanoi towers Game ends when all disks are stacked in peg number 3 in the same order they were stored at the start in peg number 1. Verify that the minimum number of moves needed is the Catalan number C3 = 7. Start End Recurrence Relation: Hanoi towers Cn = 2 Cn-1 +1 C1 =1 We can prove that Cn = 2n -1 A problem in Economics Demand equation: p = a - bq Supply equation: p = kq There is a time lag as supply reacts to changes in demand Use discrete time intervals as n = 0, 1, 2, 3,… Given the time delayed equations pn = a – bqn (demand) pn+1 = kqn+1 (supply) The recurrence relation obtained is pn+1 = a – bpn /k Economic cobweb with a stabilizing price Ackermann’s function Initial conditions: A(0,n) = n + 1, for n = 0, 1, 2, 3,… Recurrence relations: A(m,0) = A(m – 1, 1), for m = 1, 2, 3,… A(m,n) = A(m -1, A(m, n -1)) for m = 1, 2, 3,… and n = 1, 2, 3,… 7.2 Solving recurrence relations In general, we would prefer to have an explicit formula to compute the value of an rather than conducting n iterations. For one class of recurrence relations, we can obtain such formulas in a systematic way. 7.2 Solving recurrence relations Two main methods: Iteration Method for linear homogeneous recurrence relations with constant coefficients Method 1: Iteration Problem: Given a recursive expression with initial conditions a0, a1 try to express an without dependence on previous terms. Example: an = 2an-1 for n > 1, with initial condition a0 = 1 Solution: an = 2n Method 1: Iteration a1 = 2 an = an-1 +3 n 2 an = an-1 +3 an-1 = an-2 +3 an = an-1 +3= an-2 +3 +3= an-2 + 2*3 an-2 = an-3 +3 an = an-2 + 2*3 = an-3 +3 + 2*3 = an-3 +3 *3 an = an-k + k*3 (let k=n-1) an = a1 + (n-1)*3=2 + (n-1)*3 Method 1: Iteration Hanoi C1 = 1 Cn = 2Cn-1 +1 n 2 Cn = 2Cn-1 +1 = 2(2Cn-2 +1)+1 = 22 Cn-2 +2+1 = 23 Cn-3 + 22 +2+1 ... = 2n-1 C1 + 2n-2 + 2n-3 + . . . + 22 +2+1 = 2n-1 + 2n-2 + 2n-3 + . . . + 22 +2+1 = 2n -1 More on the iteration method Example: Deer Population growth Deer population dn at time n Initial condition: d0 = 1000 Increase from time n-1 to time n is 10%. Therefore the recursive function is dn – dn-1 = 0.1dn-1 dn = 1.1dn-1 Solution: dn = 1000(1.1)n Method 2: Linear homogeneous recurrence relations Definition 7.2.6 A linear homogeneous recurrence relation of order k with constant coefficients is a recurrence relation of the form an = c1an-1 + c2an-2 +…+ ckan-k, ck ≠0 and initial conditions a0 = C0, a1 = C1 , … , ak-1 = Ck-1 Method 2: Linear homogeneous recurrence relations The recurrence relation Sn = 2Sn-1 is linear homogeneous recurrence relation of order 1. The recurrence relation fn = fn-1 +fn-2 is linear homogeneous recurrence relation of order 2. an = 3an-1 an-2 an - an-1 = 2n an = 3n an-1 Method 2: Linear homogeneous recurrence relations an = 5an-1 - 6an-2 a0 = 7 a1 = 16 Order 2 Solution for order 1 is of the form sn =tn 。 for example Sn = 2Sn-1 Solution for order 2 is of the form Vn =tn ? Method 2: Linear homogeneous recurrence relations Vn =tn Vn = 5 Vn-1 - 6 Vn-2 tn = 5 tn-1 - 6 tn-2 tn - 5 tn-1 + 6 tn-2 = 0 t2 - 5 t + 6 = 0 t=2, t=3 We have two solutions Sn = 2n Tn = 3n Note that U n = b2n +d3n is a solution. To satisfy the initial conditions, we must have 7 = U 0 = b20 +d30 =b+d 16 = U 1 = b21 +d 31 =2b+3d b=5, d= 2 U n = 5*2n +2*3n Method 2: Linear homogeneous recurrence relations Theorem 7.2.11: Given the second order linear homogeneous recurrence relation with constant coefficients an = c1an-1 + c2an-2 and initial conditions a0 = C0, a1 = C1 1. If S and T are solutions then U = bS + dT is also a solution for any real numbers b, d 2. If r is a root of t2 – c1t – c2 = 0, then the sequence {rn}, n = 0, 1, 2,… is also a solution。 Case 1: Two different roots 3. If r1 and r2 (r1 r2) are solutions of the quadratic equation t2 – c1t – c2 = 0, then there exist constants b and d such that an = br1n + dr2n for n = 0, 1, 2, 3,… Solving Recurrence Relations Example: What is the solution of the recurrence relation an = an-1 + 2an-2 with a0 = 2 and a1 = 7 ? Solution: The characteristic equation of the recurrence relation is r2 – r – 2 = 0. Its roots are r = 2 and r = -1. Hence, the sequence {an} is a solution to the recurrence relation if and only if: an = 12n + 2(-1)n for some constants 1 and 2. Solving Recurrence Relations the equation an = 12n + 2(-1)n and the initial conditions a0 = 2 and a1 = 7, it follows that a0 = 2 = 1 + 2 a1 = 7 = 12 + 2 (-1) Solving these two equations gives us 1 = 3 and 2 = -1. Therefore, the solution to the recurrence relation and initial conditions is the sequence {an} with an = 32n – (-1)n. Given Solving Recurrence Relations Example: Give an explicit formula for the Fibonacci numbers. Solution: The Fibonacci numbers satisfy the recurrence relation fn = fn-1 + fn-2 with initial conditions f0 = 0 and f1 = 1. The characteristic equation is r2 – r – 1 = 0. Its roots are 1 5 1 5 r1 , r2 2 2 Solving Recurrence Relations Therefore, the Fibonacci numbers are given by n 1 5 1 5 2 f n 1 2 2 n some constants 1 and 2. We can determine values for these constants so that the sequence meets the conditions f0 = 0 and f1 = 1: f 0 1 2 0 for 1 5 1 5 2 1 f1 1 2 2 Solving Recurrence Relations The unique solution to this system of two equations and two variables is 1 1 1 , 2 5 5 So finally we obtained an explicit formula for the Fibonacci numbers: n 1 1 5 1 1 5 fn 5 2 5 2 n More on linear homogeneous recurrence relations: Case 2: One root of multiplicity 2 Theorem 7.2.14: Let an = c1an-1 + c2an-2 be a second order linear homogeneous recurrence relation with constant coefficients. Let a0 = C0, a1 = C1 be the first two terms of the sequence satisfying the recurrence relation. If r is a root of multiplicity 2 satisfying the equation t2 – c1t – c2 = 0, then: there exist constants b and d such that an = brn + dnrn for n = 0, 1, 2, 3,… Solving Recurrence Relations Example: What is the solution of the recurrence relation an = 6an-1 – 9an-2 with a0 = 1 and a1 = 6? Solution: The only root of r2 – 6r + 9 = 0 is r0 = 3. Hence, the solution to the recurrence relation is an = 13n + 2n3n for some constants 1 and 2. To match the initial condition, we need a0 = 1 = 1 , a1 = 6 = 13 + 23 Solving these equations yields 1 = 1 and 2 = 1. Consequently, the overall solution is given by an = 3n + n3n. Solving Recurrence Relations dn = 4(dn - 1 - dn - 2 ) d0 = d1 =1 t2 - 4t +4 = 0 r1 = r2 = r=2 dn = b 2 n+ d n 2 n d0 = d1 =1 d0 =1= b 2 0+ d 0 2 0 = b d1 =1= b 2 1+ d 1 2 1 = 2 b + 2 d =1 b =1, d = - ½ dn = 2 n- n 2 n-1 Solving Recurrence Relations For the general linear homogeneous recurrence relation of order k with constant coefficients, if r is a root of tk - c1 tk-1 - c2 tk-2 - . . . - ck =0 of multiplicity m, it can be shown that rn nrn . . . nm-1rn are solutions. 7.3 Applications to the analysis of algorithms 1. Selection sorting This algorithm sorts the sequence s1 , s2. . ., sn in increasing order by first selecting the largest item and placing it last and then recursively sorting the remaining elements. Selection Sorting Algorithm 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Input: s1 , . . ., sn and n Output: s1 , . . ., sn arranged in increasing order Procedure election_sort(S,n) // basic if n=1 then return // find max max_index :=1 for i:=2 to n do if Si > Smax_index then max_index :=i //move swap(si, Smax_index) call election_sort(S,n-1) end election_sort Selection Sorting Algorithm bn ,:the number of comparisons. The initial condition b1 =0 bn = n-1+ bn-1 Line bn = bn-1 + n-1 1-7 : 0 = (bn-2 + n-2) + n-1 8 : n-1 = (bn-3 + n-3) + n-2 + n-1 9-11: 0 = b1 +1+2+3+ . . . +(n-1) 12: bn-1 = 0+ 1+2+3+ . . . +(n-1) 2) = (n-1)*n/2= (n b = n-1+ b n n-1 Review 1. Selection sorting a) Given a sequence of n terms ak, k = 1, 2,…, n to be arranged in increasing order b) Count the number of comparisons bn with initial condition b1 = 0 c) Obtain recursion relation bn = n – 1 + bn-1 for n = 1, 2, 3,… d) bn = n(n-1)/2 = (n2) Binary search Input: si , si+1. . ., sj , i 1 and key, i, j Output: sk=key, k; not found, 0 1. Procedure binary_search(s,i,j,key) 2. if i > j then 3. return(0) 4. k= (i+j)/2 5. if key = Sk then 6. return(k) 7. if key< Sk then 8. j:= k-1 9. else 10. i:=k+1 11. return(binary_search(s,i,j,key)) 12. end binary_search Binary search Let an denote the worst-case time. n=1, i=j, key not found, a1 =2 n>1, an =1+a n / 2 an =1+a n / 2 If n=2k , then a2k =1+ a2k-1 Let bk =a2k , we obtain bk = 1+ bk-1 , b0 = a1 =2 bk = 1+ bk-1 = 2+ bk-2 = . . . =k+ b0 =k+ 2 Thus, if n=2k, an = lg n+ 2 Binary search An arbitrary value of n falls between two powers of 2, say a2k -1 < an a2k Notice that k-1 < lgn k We deduce lgn < k+1= a2k-1 an a2k =k+ 2 <3 + lgn=O(lgn) an = (lgn) Review 2. Binary search Problem: Search for a value in an increasing sequence. Return the index of the value, or 0 if not found. Initial condition a1 = 2 Recurrence relation an = 1 + an/2 Result: an = (lg n) Theorem 7.3.4: The worst-case time for binary search for input is (lgn) 7.3 Applications to the analysis of algorithms 1. Selection sorting (n2 ) 2. Binary search (nlgn) 3. Merge sort (nlgn) Merging two sequences Problem: Combine two increasing sequences into a single increasing sequence (merge two sequences). Si , . . . , Sj Si , . . . , Sm Sm+1 , . . . , Sj m= (i+j)/2 Merging two sequences Input: Two increasing sequences: Si , . . . , Sm and Sm+1 , . . . , Sj,and index i, j, m Output: increasing sequences ci , . . . , cj 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Procedure merge(s,i,m,j,c) // p -> Si , . . . , Sm // q -> Sm+1 , . . . , Sj // r -> ci , . . . , cj p:=i q:=m+1 r := i // while p <= m and q <=j do begin if Sp < Sq begin cr := Sp p :=p+1 end else 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. begin cr := Sq q :=q+1 end r:=r+1 end // copy the rest elements in the 1st sequence while p <= m do begin cr := Sp p :=p+1 r:= r+1 end // copy the rest elements in the 2nd sequence while q <= j do begin cr := Sq q :=q+1 r:= r+1 end End merge Merging two sequences Theorem 7.3.7: To merge two sequences the sum of whose lengths is n, the number of comparisons required is n-1. Merge sort algorithm 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Input: Si , . . . , Sj i, j Output: increasing sequences Si , . . . , Sj procedure merge_sort(s, i, j) //i=j ifi=j then return //分解 m:= m= (i+j)/2 call merge_sort(s, i , m) call merge_sort(s, m+1, j) // merge call merge(s,i,m,j,c) //copy for k:=i to j do Sk := Ck end merge_sort Merge sort 12, 30, 21, 8, 6, 9, 1, 7 12 30 8 12 21 30 8 21 69 17 1679 1 6 7 8 9 12 21 30 n=2k a2k =2a2k-1 + 2 k - 1 a2k = 2a2k-1 + 2 k - 1 = 2(2a2k-2 + 2 k-1 - 1) + 2 k - 1 = 22 a2k-2 + 2*2 k - 1-2 = 23 a2k-3 + 3*2 k - 1-2- 22 =... =2k a20 + k*2 k - 1-2- 22 - . . .- 2k-1 = k*2 k - (2 k - 1) = (k-1) 2 k +1 a2k -1 an a2k k-1 < lgn k (nlgn)=(-2+lgn)*n/2<(k-2) 2k-1 +1 =a2k -1 an a2k k2k+1 (1+lgn)*2n +1 =O(nlgn) an = (nlgn) Theorem 7.3.10: The merge sort algorithm is (n lg n) in the worst case.