Analisis Algoritma Rekursif
1. Algorithm S(n)
//Input: A positive integer n
//Output: The sum of the first n cubes
if n = 1 return 1
else return S(n − 1) + n ∗ n ∗ n
Operasi Dasar Utama : Perkalian
M(n) = M(n − 1) + 2, M(1) = 0
Subtitusi :
M(n) = M(n − 1) + 2
= [M(n − 2) + 2] + 2 = M(n − 2) + 2 + 2
= [M(n − 3) + 2]+2+2 = M(n − 3)+2+2 + 2
= ...
= M(n − i) + 2i
= ...
= M(1) + 2(n − 1) = 2(n − 1)
2. Algorithm Power(n)
//Computes 2n recursively by the formula 2n = 2n−1 + 2n−1
//Input: A nonnegative integer n
//Output: Returns 2n
if n = 0 return 1
else return Power(n − 1) + Power(n − 1)
Operasi Dasar Utama : Pengurangan
A(n) = 2A(n − 1) + 1, A(0) = 0.
Subtitusi :
A(n) = 2A(n − 1) + 1
= 2[2A(n − 2) + 1] + 1 = 2^(2)A(n − 2) + 2+ 1
= 2^(2)[2A(n − 3) + 1] + 2 + 1 = 2^(3)A(n − 3) + 2^(2) + 2+ 1
= ...
= 2^(i)A(n − i) + 2^(i−1) +2^(i−2) + ... + 1
= ...
= 2^(n)A(0) + 2^(n−1) + 2^(n−2) + ... + 1 = 2^(n−1) + 2^(n−2) + ... + 1 = 2n − 1.
3. Algorithm Min2 (A[l..r])
if l= r return A[l]
else temp1 ← Min2 (A[l.. (l + r)/2 ])
temp2 ← Min2 (A[ (l + r)/2 +1..r])
if temp1 ≤ temp2 return temp1
else return temp2
Operasi Dasar Utama : Pembagian
C(n) = C( n/2 ) + C( n/2 ) + 1 untuk n > 1, C(1) = 0
n = 2^(k)
Subsitusi :
C(2^(k)) = 2C(2^(k−1)) + 1
= 2[2C(2^(k−2))+1]+1 = 2^(2)C(2^(k−2)) + 2 + 1
= 2^(2)[2C(2^(k−3)) + 1] + 2 + 1 = 2^(3)C(2^(k−3)) + 2^(2) + 2 + 1
= ...
= 2^(i)C(2^(k−i)) + 2^(i−1) +2^(i−2) + ... + 1
= ...
= 2^(k)C(2^(k−k)) + 2^(k−1) +2^(k−2) + ...+1 = 2^(k) −1 = n − 1
Tidak ada komentar:
Posting Komentar