1 / 13

Understanding Divide and Conquer Recurrence Relations and their Master Theorem Applications

This exercise set explores the application of divide-and-conquer algorithms and recurrence relations, focusing on finding function values defined by specific recurrences. Guided examples demonstrate solving for f(n) using the Master Theorem, analyzing the growth of functions, and estimating the number of modular multiplications required for computations. Key concepts include the recurrence f(n) = f(n/2) + c, with a rigorous proof of behavior using inductive reasoning, all of which provide a comprehensive understanding of asymptotic growth rates in algorithm design and analysis.

Télécharger la présentation

Understanding Divide and Conquer Recurrence Relations and their Master Theorem Applications

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Divide-&-Conquer Algorithms & Recurrence Relations: Selected Exercises

  2. 10 Find f(n) when n = 2k, where f satisfies the recurrence relation f(n) = f(n/2) + 1, with f(1) = 1.

  3. 10 Solution We are asked for the value of f. We are given that f(n) = f(n/2) + 1, with f(1) = 1, where n = 2k. f(2k) = f(2k-1) + 1, with f(20) = 1. Answer: f(2k) = k + 1. (Proof would be inductive.)

  4. Master Theorem Let f be an increasing function that such that f(n) = a.f(n/b) + c.nd whenever n = bk, where k  Z+, a≥ 1, b >1 is an integer, and c, d Rwith c > 0 & d≥ 0. If ( a < bd ) then f(n) is O( nd ) else if ( a = bd ) then f(n) is O( ndlogn ) else if ( a > bd ) then f(n) is O( nlogba ).

  5. 10 Solution (2) • If we were interested only in the asymptotic growth rate, we could use the Master Theorem. • For f(n) = f(n/2) + 1 = 1f(n/2) + 1n0 a = 1 b = 2 d = 0 So, a = bd So, f(n) is O(ndlog n) = O(log n).

  6. 20 (a) Set up a divide-&-conquer recurrence relation for the # of modularmultiplies (MM) required to compute anmod m, where a, m, n Z+, using the recursive algorithm from Example 3 in Section 4.4. Let b = a mod m. The algorithm then is: • anmod m = ( an/2mod m )2mod m, for even n(1 MM) • anmod m = ([(a(n-1)/2mod m)2mod m]. b) modn, for odd n(2 MMs)

  7. 20 (a) Solution The algorithm is: anmod m = ( an/2mod m )2mod m, for even n(1 MM) anmod m = ([(a(n-1)/2mod m)2mod m]. b) modn, for odd n(2 MMs) Let f(n) denote the # of multiplies. For even n, f(n/2) + 1 MM is used. For odd n, f(n/2) + 2 MMs are used. Worst case, f(n) = f(n/2) + 2.

  8. 20 (b) Using f(n) = f(n/2) + 2, construct a big-O estimate for the # of modular multiplies used to compute anmod musing the recursive algorithm.

  9. 20 (b) Solution Use the Master Theorem: f(n) = a.f(n/b) + c.nd f(n) = f(n/2) + 2 = 1f(n/2) + 2n0 a = 1, b = 2, d = 0. So, a = bd So, f(n) is O(ndlog n) = O(log n).

  10. 30 Exercise 30 assumes that f satisfies the conditions of the Master Theorem. Use Exercise 29 to show that, for f(n) = a.f(n/b) + c.nd if a = bd, then f(n) is O( nd log n ). Exercise 29 gives us: If a = bd & n = bk then f(n) = f(1)nd + cnd logbn.

  11. 30 Solution To show: f(n) = f(1)nd + cnd logbn is O( nd log n ). So: • f(n) growthclearly is dominated bycnd logbn. • cis a constant. • logbndiffers fromlog2nby only a constant factor. ( log2b ) .logbn= log2( blogbn) = log2n. • cnd logbntherefore isO( nd log n ).

  12. Theorem 1 Let f be an increasing function such that f(n) = a.f(n/b) + c whenever b |n, where a≥ 1, b >1 are integers, & c > 0 is real. If ( a > 1 ) then f(n) is O( nlogba ) If ( a = 1 ) then f(n) is O( logn ). When n = bk where k > 0 is integer, and a > 1, f(n) = C1 nlogba + C2, where C1 = f(1) + c/(a – 1) and C2= – c/(a – 1).

More Related