05 CS316 - Algorithms - Recursive Algorithms MM
05 CS316 - Algorithms - Recursive Algorithms MM
Lecture 5
Analysis Of Recursive Algorithms
Dr. Ensaf Hussein
Department Of Computer Science
ANALYZING RECURSIVE
ALGORITHMS
MASTER METHOD
3. MASTER METHOD
The idea is to solve a class of recurrences that have the
form
T (n) aT (n / b) f (n)
a >= 1 and b > 1, and f is asymptotically positive!
log b a
T ( n ) ( n lg n)
MASTER METHOD CASE 3
T (n) 2T (n / 2) (n)
a 2, b 2; nlogb a nlog2 2 n (n)
Also f (n) (n)
Case 2: T (n) nlogb a lg n n lg n
EXAMPLES
T(n) = 2T(n/2) + n
a = 2, b = 2, log22 = 1
T(n) = (nlgn)
EXAMPLES
Ex: 1 Binary-search(A, p, r, s):
T (n) T (n / 2) 1 q¬(p+r)/2
if A[q]=s then return q
a 1, b 2; n log2 1 1 else if A[q]>s then
also f ( n) 1, f ( n) (1) Binary-search(A,p,q-1,s)
else
Case 2: T (n) (lg n) Binary-search(A,q+1,r,s)
Ex: 2
T (n) 9T (n / 3) n
a 9, b 3;
log3 9
f ( n ) n, f ( n ) O ( n ) with 1
Case 1: T (n) n 2
EXAMPLES
Ex: 3
T (n) 3T (n / 4) n lg n
a 3, b 4; n log 4 3 n 0.793
f (n) n lg n, f (n) (n log 4 3 ) with 0.2
Case 3:
Regularity condition
af (n / b) 3(n / 4) lg(n / 4) (3 / 4)n lg n cf (n) for c 3 / 4
T (n) (n lg n)
Ex: 4
T (n) 2T (n / 2) n lg n
a 2, b 2; n log2 2 n1
f (n) n lg n, f (n) (n1 ) with ?
also n lg n / n1 lg n
neither Case 3 nor Case 2!
EXAMPLES (3)
Ex: 5
T (n) 4T (n / 2) n 3
a 4, b 2; n log 2 4 n 2
f (n) n3 ; f (n) (n 2 )
Case 3: T (n) n3
Checking the regularity condition
4 f (n / 2) cf (n)
4n3 / 8 cn3
n3 / 2 cn3
c 13// 24 1
RECURSIVE ALGORITHMS
Factorial
Fibonacci Sequence
Tower of Hanoi
ANALYSIS OF RECURSIVE ALGORITHMS
FACTORIAL
ALGORITHM F(n)
// Output: n!
Input size: n
if n = 0 Basic operation: ×
return 1
M(n) = M(n-1) + 1 for n > 0
else
return n×F(n-1) to compute
F(n-1) to multiply
n and F(n-1)
ANALYSIS OF RECURSIVE FACTORIAL
T(0) = 1 (1)
T(n) = c + T(n - 1) (2)
= c + c + T(n - 2) by subtituting T(n – 1) in (2)
= c +c +c + T(n - 3) by substituting T(n – 2) in (2)
…
= kc + T(n - k)
M(n-1
)
M(n-1)
TOWER OF HANOI (CONTD.)
ALGORITHM ToH(n, s, m, d)
if n = 1 M(1) = 1
ToH(n-1, m, s, d) M(n-1)
Expanding:
T(1) = 1 (1)
T(n) = 2T(n – 1) + c if n > 1 (2)
= 2[2T(n – 2) + c] + c = 22 T(n – 2) + 2c + c by substituting T(n – 1) in (2)
= ……
= 2k T(n – k) + c[2k- 1 + 2k– 2 + . . . 21 + 20]
T(n) = c if n = 1 or n = 2 (1)
T(n) = T(n – 1) + T(n – 2) + b if n > 2 (2)
≥ T(n - 2) + T(n-2) + b
= 2T(n - 2) + b
= 2[T(n - 3) + T(n - 4) + b] + b by substituting T(n - 2) in (2)
2[T(n - 4) + T(n - 4) + b] + b
= 22T(n - 4) + 2b + b
= 22[T(n - 5) + T(n - 6) + b] + 2b + b
by substituting T(n - 4) in (2)
≥ 23T(n – 6) + (22 + 21 + 20)b
...
2kT(n – 2k) + (2k-1 + 2k-2 + . . . + 21 + 20)b
= 2kT(n – 2k) + (2k – 1)b
The base case is reached when n – 2k = 2 k = (n - 2) / 2
Hence T(n) ≥ 2 (n – 2) / 2 T(2) + [2 (n - 2) / 2 – 1]b
= (b + c)2 (n – 2) / 2 – b
= [(b + c) / 2]*(2)n/2 – b Recursive Fibonacci is exponential
REFERENCES