13-Time Complexity For Recursive Algorithms-10!04!2023
13-Time Complexity For Recursive Algorithms-10!04!2023
if (n>0)
{
printf("%d",n);
test(n-1);
}
}
n=3
recursion tree
test(3)
test(2)
3
2 test(1)
1 test(0)
n=3
for n=5
for n
n+n+1= O(n)
Recurrence relation for the above algorithm
T(n)= { 1 n=0
{ T(n-1) +1 n>0
T(n-1) = T(n-2) +1
substitute in eqn 1
T(n) = T(n-2)+2
sub T(n-2) in eq 1
T(n-2)= T(n-3) + 3
T(n) = T(n-k) + k
Assume n-k =0
therefore n=k
T(n) = T(n-n) +n
= T(0) +n
= 1+n
T(n) = O (n)
T(n)
n T(n-1)
n-1 T(n-2)
n-2 T(n-3)
T(2)
2 T(1)
1 T(0)
0+1+2+...................+n-1+n = n(n+1)/2
=O(n^2)
Substitution method
T(n-1)=T(n-2) + n-1
subs in eqn 1
T(n) = [ T(n-2)+n-1] +n
subs in eqn 2
n-k=0
n=k
T(n)=1+n(n+1)/2
= O(n^2)
Dividing function
if (n>1)
test (n/2);
T(n) = T(n/2) +1
Recurrence Relation
T(n) = { 1 n=1
{ T(n/2) +1 n>1
1 T(n/2)
1 T(n/2^2)
1 T(n/2^3)
1
T(n/2^k)
total k steps
n/2^k=1
n= 2^k
k= log n [base 2]
Substitution Method
substitute in eqn 1
T(n) = [ T(n/2^2) +1 ] + 1
T(n) = T(n/2^2) + 2
= T3(n/2^3) + 3
T(n) = T(n/2^k) + K
Assume n/2^k = 1
n= 2^k
k= log n [base 2]
= 1 + log n
= log n [base 2]
if (n>1)
//stmts; }
test (n/2);
test (n/2);
}
T(n) = 2T(n/2) + n
Recurrence Relation
T(n) = { 1 n=1
{ 2T(n/2) + n n>1
tree method
T(n)
T(n/2) T(n/2) n
n/2 n/2
n= 2^k
k = log n [base2]
so O(nlogn)
induction method
subs in eqn 1
= 2^2 T(n/2^2) +n + n
= n T(1) + n.log n
= n+ nlogn
= O(nlogn)