You are on page 1of 9

Design and Analysis of Algorithms

Masters Theorem
DAC Algorithms
Algorithm Recurrence Relation Complexity
Binary Search T(n) = T(n/2)+C O(log n)
Max Min (Iterative) Best Case: n-1, Worst Case: n-1 + n-1 = 2(n-1) O(n)
Max Min (Recursive) 3*n/2 – 2, T(n) = 2T(n/2) + 2 O(n)
MergeSort T(n) = 2T(n/2) + n O(n log n)
QuickSort Best Case: If the partition is on the middle, O(nlog n)
T(n) = 2T(n/2) + n
Worst Case: If the array is already sorted, O(n2)
T(n) = T(n-1) + n
Matrix Multiplication Iterative / DAC T(n) = 8T(n/2) + n2 O(n3)
Strassen's Matrix Multiplication T(n) = 7T(n/2) + n2 O(nlog7) = O(n2.81)
Iterative Algorithm

● for(i=1;i<=n;i++) O(n)
● for(i=1;i<=n;i=i+2) n/2 = O(n) // n/200 = O(n)
● for(i=n;i>=1;i--) O(n)
● for(i=1;i<n;i=i*2) O(log2n)
● for(i=1;i<n;i=i*3) O(log3n)
● for(i=n;i>=1;i=i/2) O(log2n)
Recursive Algorithm

T(n) = T(n-1)+1 O(n) Master’s Theorem (Decreasing


= T(n-1)+n O(n2)
Function)
= T(n-1)+logn O(nlogn)
= T(n-1)+n2 O(n3)
= T(n-2)+1 n/2 O(n) T(n) = aT(n-b) + f(n)
= T(n-100)+n O(n2) a>0, b>0 and f(n)=O(nk) where k>=0
= 2T(n-1)+1 O(2n)
= 2T(n-2)+1 O(2n/2) = O(2n) if(a=1): O(nk+1) = O(n*f(n))
= 3T(n-1)+1 O(3n) if(a>1): O(nk*an/b) = O(f(n)*an/b)
= 2T(n-1)+n O(n2n)
if(a<1): O(nk) = O(f(n))
Master’s Theorem (Dividing Function)

● T(n) = aT(n/b) + f(n) ● Case 2: if logba=k


● if p>-1 O(nklogp+1n)
● if a>=1 and b>1 ● if p=-1 O(nkloglogn)
● f(n) = O(nk logpn) ● if p<-1 O(nk)

● Case 1: if logba>k ● Case 3: if logba<k


● then ● if p>=0 O(nklogpn)
● O(n^logba) ● if p<0 O(nk)
Contd…

● T(n) = aT(n/b) + f(n) ● T(n) = 2T(n/2)+1 = O(n)


● = 4T(n/2)+n = O(n2)
● if a>=1 and b>1 ● = 8T(n/2)+n2 = O(n3)
● f(n) = O(nk logpn) ● = 16T(n/2)+n = O(n4)
● = 9T(n/3)+1 = O(n2)
● Case 1: if logba>k then ● = 9T(n/3)+n = O(n2)
● O(n^logba)
Contd…

● T(n) = aT(n/b) + f(n) ● T(n) = T(n/2)+1 = O(logn)


● = 2T(n/2)+n = O(nlogn)
● if a>=1 and b>1 ● = 2T(n/2)+nlogn = O(nlog2n)
● f(n) = O(nk logpn) ● = 4T(n/2)+n2 = O(n2logn)
● = 8T(n/2)+n3 = O(n3logn)
● Case 2: if logba=k ● = 4T(n/2)+(nlogn)2 = O(n2log3n)
● if p>-1 O(nklogp+1n)
● if p=-1 O(nkloglogn) ● = 2T(n/2)+n/logn = O(nloglogn)
● if p<-1 O(nk) ● = 2T(n/2)+n/log2n = O(n)
Contd…

● T(n) = aT(n/b) + f(n) ● T(n) = T(n/2)+n = O(n)


● = 2T(n/2)+n2 = O(n2)
● if a>=1 and b>1
● f(n) = O(nk logpn) ● = 2T(n/2)+n2logn = O(n2logn)
● = 4T(n/2)+n3log2n = O(n3log2n)
● Case 3: if logba<k
● if p>=0 O(nklogpn) ● = 2T(n/2)+n2/logn = O(n2)
● if p<0 O(nk)
From
Gurpreet Singh Chhabra

You might also like