0% found this document useful (0 votes)
17 views33 pages

Module I Notes

Module I of CST 306 covers the fundamentals of algorithm analysis and design, including characteristics of algorithms, performance analysis through time and space complexity, and methods for analyzing recursive algorithms. It introduces asymptotic notations and discusses best, worst, and average case complexities with examples. Additionally, it provides university questions for practical application of the concepts learned.

Uploaded by

evansfern2345
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views33 pages

Module I Notes

Module I of CST 306 covers the fundamentals of algorithm analysis and design, including characteristics of algorithms, performance analysis through time and space complexity, and methods for analyzing recursive algorithms. It introduces asymptotic notations and discusses best, worst, and average case complexities with examples. Additionally, it provides university questions for practical application of the concepts learned.

Uploaded by

evansfern2345
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

Module I
● Introduction to Algorithm Analysis
o Characteristics of Algorithms
o Criteria for Analysing Algorithms
▪ Time and Space Complexity
o Best, Worst and Average Case Complexities
o Asymptotic Notations
▪ Big-Oh (O), Big- Omega (Ω), Big-Theta (Θ), Little-oh (o) and Little- Omega (ω) and
their properties.
▪ Classifying functions by their asymptotic growth rate
o Time and Space Complexity Calculation of simple algorithms
o Analysis of Recursive Algorithms:
▪ Recurrence Equations
▪ Solving Recurrence Equations
● Master’s Theorem
● Iteration Method
● Recursion Tree Method
● Substitution method

● Algorithm: An algorithm is a finite set of instructions that accomplishes a particular task.


● Characteristics of an Algorithm
o Input: Zero or more inputs are externally supplied.
o Output: At least one output is produced.
o Definiteness: Each instruction is clear and unambiguous.
▪ “add 6 or 7 to x” , “compute 5/0” etc. are not permitted.
o Finiteness: The algorithm terminates after a finite number of steps.
o Effectiveness: Every instruction must be very basic so that it can be carried out by a person
using only pencil and paper in a finite amount of time. It also must be feasible.

● Computational Procedures
o Algorithms those are definite and effective.
o Example: Operating system of a digital computer. (When no jobs are available, it does not
terminate but continues in a waiting state until a new job is entered.)
● Program: It is the expression of an algorithm in a programming language

● Recursive Algorithms
● A recursive function is a function that is defined in terms of itself.
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

● An algorithm is said to be recursive if the same algorithm is invoked in the body.


● Two types of recursive algorithms
● Direct Recursion: An algorithm that calls itself is direct recursive.
● Indirect Recursion: Algorithm A is said to be indirect recursive if it calls another
algorithm which in turn calls A.

● Performance Analysis(Criteria for Analysing Algorithms)


● Performance analysis depends on Space Complexity and Time Complexity
● Space Complexity
● The space complexity of an algorithm is the amount of memory it needs to run to
completion
● Space Complexity = Fixed Part + Variable Part
S(P) = c + SP , Where P is any algorithm
● A fixed part:
▪ It is independent of the characteristics of the inputs and outputs.
▪ Eg:
o Instruction space(i.e., space for the code)
o space for simple variables and fixed-size component variables
o space for constants
● A variable part:
▪ It is dependent on the characteristics of the inputs and outputs.

▪ Eg:
o Space needed by component variables whose size is dependent on the
particular problem instance being solved
o Space needed by referenced variables
o Recursion stack space.

● Time Complexity
● The time complexity of an algorithm is the amount of computer time it needs to run to
completion. Compilation time is excluded.
● Time Complexity = Frequency Count * Time for Executing one Statement
● Frequency Count 🡪 Number of times a particular statement will execute

● Eg1: Find the time and space complexity of matrix addition algorithm
Step/Execution Frequency Count Total Frequency Count
Algorithm mAdd(m,n,a,b,c) 0 0 0
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
{ 0 0 0
for i=1 to m do 1 m+1 m+1
for j=1 to n do 1 m(n+1) mn+m
c[i,j] := a[i,j] + b[i,j]; 1 mn mn
} 0 0 0
2mn + 2m +1
Time Complexity = 2mn + 2m + 1

Space Complexity = Space for parameters and Space for local variables
m -> 1 n ->1 a[ ] -> mn b[ ]-> mn c[] ->mn i->1 j->1 Space
complexity = 3mn + 4

Eg2: Find the time and space complexity of recursive sum algorithm
Step/Execution Frequency Count Total Frequency Count
n≤0 n>0 n≤0 n>0
Algorithm RSum(a,n) 0 0 0 0 0
{ 0 0 0 0 0
if n ≤ 0 then 1 1 1 1 1
return 0 1 1 0 1 0
Else 0 0 0 0 0
return a[n] + RSum(a,n-1) 1 + T(n-1) 0 1 0 1 + T(n-1)
} 0 0 0 0 0
2 2 + T(n-1)
Time Complexity = T(n) = 2 if n<=0
2 + T(n-1) Otherwise
T(n) = 2 + T(n-1)
=2 + 2 + T(n-2)
=2 + 2 + 2+ T(n-3)
=2x3 + T(n-3)
. . .
=2xn +T(n-n)
=2n + 2

Space Complexity = Space for Stack


= Space for parameters + Space for local variables + Space for return address
For each recursive call the amount of stack required is 3
Space for parameters: a🡪1 n🡪1
Space for local variables: No local variables
Space for return address: 1
Total number of recursive call = n+1
Space complexity = 3(n+1)
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

● University Questions:
1. Discuss the time complexity of the following three functions
int fun1(int n)
{ if(n ≤ 1)
return n;
return 2xfun1(n-1);
}
int fun2(int n)
{ if(n ≤ 1)
return n;
return fun2(n-1)xfun2(n-1);
}
Answer:
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

2. Analyze the complexity of the following program


int fun3(int n)
{ if(n ≤ 1)
return n;
return fun3(n-1) + fun3(n-1);
}
Answer:

3. Analyze the complexity of the following program


main()
{ for(i=1; i<=n; i=i*2)
sum = sum + i + func(i);
}
void func(int m)
{ for(j=1; j<=m; j++)
Statement with O(1) complexity
}
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

Answer

4. Analyse the complexity of the following function

void function(int n)
{
int count=0;
for(int i=n/2; i<=n; i++)
for(int j=1; j<=n; j=2*j)
for(int k=1; k<=n; k=k*2)
count++;
}

Answer:

5. Analyse the complexity of the following


functions function(int n)
{ if(n==1) return;
for(i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{ printf(“*”);
break;
}
}
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
void function(int n)
{ int i=1; s=1;
while(s<=n)
{ i++;
s+=i;
printf(“*”);
}
}

Answer:

6. Express the return value of the function “mystery” in ɵ notation


int mystery(int n)
{
int j=0,total=0;
for (int i=1;j<=n;i++)

{
++total;
j+=2*i;
}
return total;
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

7. Find the time complexity of the given code segment for(int i=1;i<=n;i++)
{ for(int j=i+1;j<=n;j++)
{
//code
}
}
Answer: The most frequently executing statement is the innermost code. During the first
iteration of outer loop that code will execute n-1 times. During the 2nd iteration of outer
loop that code will execute n-2 times and so on. During the last iteration it will never
execute.
So the frequency count of that code = (n-1) + (n-2) + +0
= (n-1)n/2 = (n2-n)/2
Time Complexity = O(n2)

8. Find the time complexity of the given code


segment for(int i=1;i<=n;i++)
{
for(int j=1;j<=i*i;j++)
{
for(int k=1;k<=n/2;k++)
{
//code
}
}
}
Answer: The 1st loop will successfully execute n times
The 2nd loop will successfully execute 12 + 22 + 32 + + n2 times
rd 2 2 2
The 3 loop will successfully execute (1 + 2 + 3 + + n2) n /2 times
2 2 2
So the frequency count of innermost code = (1 + 2 + 3 + + n2) n /2
= [n(n+1)(2n+1)/6] n /2
Time Complexity = O(n ) 4

9. Find the time complexity of the given code segment


for(int i=1;i<=n;i++)
{ for(int j=1;j<=i;j++)
{ for(int k=1;k<=100;k++)
{
//code
}
}
}
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
Answer: The 1st loop will successfully execute n times O(n )
nd
The 2 loop will successfully execute 1 + 2 + 3 + + n times - [n(n+1)/2] O(n2)
The 3rd loop will successfully execute [n(n+1)/2] * 100 O(n2)

So the frequency count of innermost code = O(n) + O(n2) + O(n2)

Time Complexity = O(n2)


10. Consider the following C function Find the time complexity of check in terms of ɵ notation
int check(int n)
{
int i,j;
for (i=1;i<=n;i++) -------------------------------------- O(n)
{
for (j=1;j<n;j+=i) -------------------------------O(n) * O(logn)
{
printf("%d",i+j); ----------------------- O(n) * O(logn)
}
}
} ………………………………………………………………………………….
O(n logn )

● Best Case, Worst Case and Average Case Complexity


● In certain case we cannot find the exact value of frequency count. In this case we have 3 types
of frequency counts
● Best Case : It is the minimum number of steps that can be executed for a given parameter
● Worst Case: It is the maximum number of steps that can be executed for a given parameter
● Average Case: It is the average number of steps that can be executed for a given parameter
● Example: Linear Search
● Best Case: Search data will be in the first location of the array.
● Worst Case: Search data does not exist in the array
● Average Case: Search data is in the middle of the array.
Best Case Worst Case Average Case
S/E FC TFC S/E FC TFC S/E FC TFC
Algorithm Search(a,n,x) 0 0 0 0 0 0 0 0 0
{ 0 0 0 0 0 0 0 0 0
for i:=1 to n do 1 1 1 1 n+1 n+1 1 n/2 n/2
if a[i] ==x then 1 1 1 1 n n 1 n/2 n/2
return i; 1 1 1 1 0 0 1 1 1
return -1; 1 0 0 1 1 1 1 0 0
} 0 0 0 0 0 0 0 0 0
3 2n + 2 n+1
Best Case Complexity = 3 = Ω(1)
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
Worst Case Complexity = 2n + 2 = O(n)
Average Case Complexity = n+1 = Ɵ(n)
● University Questions:
1. Define the terms best case, average case and worst case complexities.
2. Discuss the best case and worst case time complexity of linear search algorithm
3. Determine the Best case and Worst case time complexity of the following
function void fun(int n, int arr[])
{
int i=0; j=0;
for(;i<n;++i)
while(j<n && arr[i]< arr[j])
j++;
}
4. Illustrate best case, average case and worst case complexity of Insertion sort algorithm.
Answer:
Algorithm InsertionSort(A,n)
{
for i=1 to n-1 do
{
j=i
while j>0 and A[j-1] > A[j] do
{
Swap(A[j], A[j-1])
j=j-1
}
}
}

Best case complexity: Best case situation occurs when the array itself is in sorted order. In
this case the while loop will not execute successfully. So the time complexity is proportional
to number of times the for loop will execute. It will execute O(n) time.
The best case time complexity = Ω(n)

Worst case complexity: Worst case situation occurs when the array itself is in reverse
sorted order. In this case the while loop will execute 1+2+3+ +(n-1)=n(n+1)/2 times.
The time complexity is proportional to number of times the while loop will execute. It will
execute O(n2) time.
The worst case time complexity = O(n2)

Average case complexity: Average case situation occurs when the while loop will iterate
half of its maximum iterations. In this case the while loop will execute [1+2+3+ +(n-
1)]/2=n(n+1)/4 times.
The time complexity is proportional to number of times the while loop will execute. It will
execute O(n2) time.
The average case time complexity = Ɵ(n2)

5. Write an algorithm for insertion sort. Calculate the worst case time complexity of insertion
sort.
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

● Asymptotic Notations
● It is the mathematical notations to represent frequency count. 5 types of asymptotic notations
● Big Oh (O)
▪ The function f(n) = O(g(n)) iff there exists 2 positive constants c and n0 such that
0 ≤ f(n) ≤ c g(n) for all n ≥ n0
▪ It is the measure of longest amount of time taken by an algorithm(Worst case).
▪ It is asymptotically tight upper bound
▪ O(1) : Computational time is constant
▪ O(n) : Computational time is linear
▪ O(n2) : Computational time is quadratic
▪ O(n3) : Computational time is cubic
● O(2n) : Computational time is exponential
● Omega (Ω)
▪ The function f(n) = Ω (g(n)) iff there exists 2 positive constant c and n0 such that
f(n) ≥ c g(n) ≥ 0 for all n ≥ n0
▪ It is the measure of smallest amount of time taken by an algorithm(Best case).
▪ It is asymptotically tight lower bound

● Theta (Ɵ)
▪ The function f(n) = Ɵ (g(n)) iff there exists 3 positive constants c1, c2 and n0 such that
0 ≤ c1 g(n) ≤ f(n) ≤ c2 g(n) for all n ≥ n0
▪ It is the measure of average amount of time taken by an algorithm(Average case).

● Little Oh (o)
▪ The function f(n) = o(g(n)) iff for any positive constant c>0, there exists a constant n0>0
such that 0 ≤ f(n) < c g(n) for all n ≥ n0
▪ It is asymptotically loose upper bound
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
g(n) becomes arbitrarily large relative to f(n) as n approaches infinity

● Little Omega (ω)


▪ The function f(n) = ω(g(n)) iff for any positive constant c>0, there exists a constant
n0>0 such that f(n) > c g(n) ≥ 0 for all n ≥ n0
▪ It is asymptotically loose lower bound

f(n) becomes arbitrarily large relative to g(n) as n approaches infinity

● Examples:
1. Find the O notation of the following functions
a) f(n) = 3n + 2
3n + 2 ≤ 4 n for all n≥2
Here f(n)= 3n + 2 g(n)=n c=4 n0=2
Therefore 3n + 2= O(n)
b) f(n) = 4n3 + 2n + 3
4n3 + 2n + 3 ≤ 5 n3 for all n≥2
Here f(n)= 4n3 + 2n + 3 g(n)= n3 c=5 n0=2
3
Therefore 4n + 2n + 3= O(n3)
c) f(n) = 2n+1
2n+1 ≤ 2 2n for all n≥1
n+1
Here f(n)= 2 g(n)= 2n c=2 n0=1 Therefore 2n+1 = O(2n)

d) f(n) = 2n + 6n2 + 3n
2n + 6n2 + 3n ≤ 7 2n for all n≥5
Here f(n)= 2n + 6n2 + 3n g(n)= 2n c=7 n0=5
n 2 n
Therefore 2 + 6n + 3n = O(2 )

e) f(n) = 10n2 + 7
f) f(n) = 5n3 + n2 + 6n + 2
g) f(n) = 6n2 + 3n + 2
h) f(n) = 100n + 6

2. Is 22n = O(2n)? (Univ Question)


22n ≤ c 2n
2n ≤ c
There is no value for c and n0 that can make this true.
Therefore 22n != O(2n)

3. Is 2n+1 = O(2n)? (Univ Question)


2n+1 ≤ c 2n
2x2n ≤ c 2n
2≤c
2n+1 ≤ c 2n is True if c=2 and n≥1.
Therefore 2n+1 = O(2n)
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

4. Let f(n) = 3n3 + 2n2 + 3 for an algorithm. Let g(n) = n3. Prove that f(n) of this algorithm is
in O(n3). (Univ Question)
3 2
Answer: f(n) = 3 n + 2 n + 3
Assume that g(n)= n3 and c=10
As per O notation 0<= f(n) <=c g(n) for all n>=no
0<=3 n3 + 2 n2 + 3<=c n3 for all n>=1
Therefore, f(n) = O(g(n)) = O(n3)

5. What is the smallest value of n such that an algorithm whose running time is 100n2 runs
faster than an algorithm whose running time is 2n on the same machine? (Univ Question)

6. Find the Ω notation of the following functions


a) f(n) = 27 n2 + 16n + 25
27 n2 + 16n + 25 ≥ 27 n2 for all n ≥ 1
Here c=27 n0=1 g(n)= n2
27 n2 + 16n + 25 = Ω(n2)
b) f(n) = 5 n3 + n2 + 3n + 2
5 n3 + n2 + 3n + 2 ≥ 5 n3 for all n ≥ 1
Here c=5 n0=1 g(n)= n3
5 n3 + n2 + 3n + 2= Ω(n3)
c) f(n) = 3n + 6n2 + 3n
3n + 6n2 + 3n ≥ 5.3n for all n ≥ 1
Here c=5 n0=1 g(n)= 3n
3 + 6n + 3n = Ω(3n)
n 2

d) f(n) = 4 2n + 3n
e) f(n) = 3n + 30
f) f(n) = 10 n2 + 4n + 2

7. Find the Ɵ notation of the following functions


a) f(n) = 3n + 2
3n + 2 ≤ 4 n for all n≥2
3n + 2 = O(n)
3n + 2 ≥ 3 n for all n≥1
3n + 2 = Ω (n)
3 n ≤ 3n + 2 ≤ 4 n for all n≥2
3n + 2 = Ɵ(n)

b) f(n) = 3 2n + 4n2 + 5n + 2
3x2n + 4n2 + 5n + 2 ≤ 10x2n for all n≥1
3x2n + 4n2 + 5n + 2 = O(2n)

3x2n + 4n2 + 5n + 2 ≥ 3x2n for all n≥1


3x2n + 4n2 + 5n + 2 = Ω (2n)

3x2n ≤ 3x2n + 4n2 + 5n + 2 ≤ 10 2n for all n≥1


3x2n + 4n2 + 5n + 2 = Ɵ(2n)

c) f(n) = 2 n2 + 16
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
d) f(n) = 27n2 + 16

● Common Complexity Functions


● Constant Time
▪ An algorithm is said to be constant time if the value of f(n) is bounded by a value that does
not depend on the size of input.
▪ Computational time is constant
▪ Eg: O(1)
● Logarithmic Time
▪ An algorithm is said to be logarithmic time if f(n) = O(log n)
● Linear Time
▪ If f(n) = O(n), then the algorithm is said to be linear time .
● Quadratic Time
▪ If f(n) = O(n2), then the algorithm is said to be quadratic time .
● Polynomial Time
▪ If f(n) = O(nk), then the algorithm is said to be polynomial time .
● Exponential Time
▪ If f(n) = O(2n), then the algorithm is said to be exponential time .
● Factorial Time
▪ If f(n) = O(n!), then the algorithm is said to be factorial time
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

● Running Time Comparison (Classifying functions by their asymptotic growth rate)


● Logarithmic functions are very slow
● Exponential functions and factorial functions are very fast growing
n log n n n log n n2 n3 2n n!
2 3
10 3.3 10 3.3 x 10 10 10 103 3.6 x 1060

102 6.6 102 6.6 x 102 104 106 1.3 x 1030 9.3 x 10157
. .
103 10 103 10 x 103 106 109 . .
. .
104 13 104 13 x 104 108 1012 . .
. .
105 17 105 17 x 105 1010 1015 . .
. .
106 20 106 20 x 106 1012 1018
O(1) < O(log n) < O(n) < O(n log n) < O(nk) < O(2n) < O(n!)

● Properties of Asymptotic Notations


● Reflexivity
● f(n) = O(f(n))
● f(n) = Ω(f(n))
● f(n) = Ɵ(f(n))
● Symmetry
● f(n) = Ɵ(g(n)) if and only if g(n) = Ɵ(f(n)
● Transpose Symmetry
● f(n) = O(g(n)) if and only if g(n) = Ω(f(n))
● f(n) = o(g(n)) if and only if g(n) = ω(f(n))
● Transitivity
● f(n) = O(g(n)) and g(n) = O(h(n)) imply f(n) = O(h(n))
● f(n) = Ω(g(n)) and g(n) = Ω(h(n)) imply f(n) = Ω(h(n))
● f(n) = Ɵ(g(n)) and g(n) = Ɵ(h(n)) imply f(n) = Ɵ(h(n))
● f(n) = o(g(n)) and g(n) = o(h(n)) imply f(n) = o(h(n))
● f(n) = ω(g(n)) and g(n) = ω(h(n)) imply f(n) = ω(h(n))

● University Questions:
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
1. Explain asymptotic notations in algorithm analysis
2. Define Big Oh, Big Omega and Theta notations and illustrate them graphically.
3. What do you meant by asymptotic growth rate? Define Big Oh, Big Omega and Theta
notations
4. Define asymptotic notation. Arrange the following functions in increasing order of
asymptotic growth rate. n3 , 2n , log n 3 , 2100, n2 log n, nn, log n, n0.3, 2log n
Answer : 2 < log n < log n < n0.3 < n2 log n < n3 < 2log n < 2n < nn
100 3

Recurrence Relations
● A recurrence is an equation or inequality that describes a function in terms of its values on
smaller inputs.
● There are several methods for solving recurrence relation
● Iteration Method
● Recursion tree Method
● Substitution Method
● Master’s Method

● Iteration Method

● Solve the following recurrence relation using Iteration method.


1. T(n) = 1 + T(n-1)
T(n) = 1 + T(n-1)
=1 + 1 + T(n-2) = 2 + T(n-2)
= 2 + 1 + T(n-3) = 3 + T(n-3)
. . . .
= k + T(n-k) kth term
Assume n-k = 1 🡪 k = n-1
T(n) = n-1 + T(n-(n-1))
= n-1 + T(1) = O(n) + O(1) = O(n)

2. T(2k) = 3 T(2k-1) + 1 (Univ Question)


T(1) = 1
Answer:
T(2k) =1+ 3T(2k-1)
=1+3[1+ 3T(2k-2)] = 1+3+32T(2k-2)
= 1+3+32 [1+3T(2k-3)]= 1+3+32+33T(2k-3)
……………….
= 1+3+32+….. +3n-1+3nT(2k-n) nth term
Assume that 2k-n=1 🡪 2k/2n=1 🡪 2k=2n 🡪 k=n
T(2k) = 1+3+32+…. +3n-1+3nT(2k-n) = [(3n-1)/(3-1)]+3nT(1)
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
= (3n/2)-(1/2)+3n
= (3/2) 3n-(1/2)
= (3/2) 3k-(1/2)
=O(3k)

3. T(n) =2T(n/2)+2 if n>2 (Univ Question)


=1 if n=2
Answer:
T(n) = 2 + 2T(n/2)
=2 + 2[2+2T(n/22)] = 2+22+22T(n/22)
= 2+22+22[2+2T(n/23)] = 2+22+23+23T(n/23)
……………………..
= 2+22+23+……… +2k + 2kT(n/2k) kth term

Assume that n/2k=2 T(n) =2[1+2+22+23+……… +2k-1 ] + 2kT(n/2k)


=2[2k-1] + 2kT(2) = 2x2k-2 + 2k
= 3x2k-2 = 3x(n/2)-2

4. T(n) = 2 T(n/2) + n T(1)=1 (Univ Question)


Answer:
T(n) = n + 2 T(n/2)
= n + 2 [(n/2)+ 2 T(n/22)] = 2n + 22T(n/22)
= 2n + 22 [(n/22)+2T(n/23)]= 3n + 23T(n/23)
………………………….
=k n + 2kT(n/2k) kth term
Assume that n/2k=1 🡪 2k=n 🡪 k=log2(n)
T(n) =nlog2 (n) + nT(1)
=nlog2 (n) + n
=O(nlog2(n))

5. T(n) = 2 if n=1 (Univ Question)


T(n) = 2T(n/2) + 2n + 3 Otherwise
Answer:
T(n) = 3 + 2n + 2T(n/2)
= 3 + 2n + 2[3+2(n/2)+2T(n/22)]
=3+2x3+2x2n+22T(n/22)
=3+2x3+2x2n+22 [3+2(n/22)+2T(n/23)]
= 3+2x3+22x3+3x2n+23T(n/23)
……………………………..
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
= [3+2x3+22x3+…. +2k-1x3]+[kx2n]+2kT(n/2k) th
k term
Assume that n/2k=1 🡪 2k=n 🡪 k=log2(n)
T(n) =3[20+21+22+…+2k -1]+2nlog2(n) + nT(1)
=3[(2k -1)/(2-1)] +2nlog2(n) + 2n
= 3(n -1) +2nlog2(n) + 2n
= 5n -3 +2nlog2(n) = O(nlog2(n))

6. T(n) = 3 T(n/3) + n, T(1) = 1 (Univ Question)


Answer:
T(n) = n + 3T(n/3)
= n + 3[(n/3)+3T(n/32)] = n + n + 32T(n/32)
= 2 n+32 [(n/32) +3T(n/33)]
= 3 n + 33 T(n/33)
……………………
= k n + 3k T(n/3k) kth term
Assume n/3k= 1 🡪 3k = n 🡪 k = log3(n)
T(n) = n log3(n) + n T(1)
= n log3(n) + n = O(n log3(n) )

7. T(n) = 2 T(n/2) + n2 (Univ Question)


Answer:
T(n) = n2 + 2T(n/2)
= n2 + 2[(n/2) 2+2T(n/22)] = n2+n2/2 + 22 T(n/22)
= n2 + n2/2 + 22 [(n/22) 2+2T(n/23)]
= n2+n2/2 + n2/22 +23 T(n/23)
……………………
= n2[1+ (1/2) + (1/2)2 + …. + (1/2)k-12 ] + 2k T(n/2k) kth term
Assume n/2k= 1 🡪 2k = n 🡪 k = log2(n)
T(n) = n2 [(1-(1/2)k) / (1-(1/2))] + n T(1)
= 2 n2 [ 1-(1/2k)] + n = 2 n2 [ 1-(1/2log n)] + n
= 2 n2 [ 1-(1/nlog 2)] + n = 2 n2 [ 1-(1/n)] + n
= 2 n2 - 2n+ n
= O(n2)

8. T(n) = T(n/3) + n
Answer:
T(n) = n + T(n/3)
= n + [(n/3) + T(n/32)]= n + (n/3) + T(n/32)
=n+(n/3)+[(n/32)+T(n/33)]=n+(n/3)+(n/32)+T(n/33)
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
……………………
= n+(n/3)+(n/32)+ …. +(n/3k-1)+T(n/3k) kth term
Assume n/3k= 1 🡪 3k = n 🡪 k = log3(n)
T(n) = n[1+(1/3)+(1/3) 2+….+(1/3) k-1] + T(n/3k)
= n [ [ 1- (1/3)k] / [ 1-(1/3)] ] + T(1) = 3n [1-(1/3k)] + T(1)
2
= 3n [1- 1] +1 = 3n 3
- +1
2 𝑛 2 2
=O(n)

9. T(n) = 3 T(n/4) + n
Answer:
T(n) = n + 3T(n/4)
= n + 3[(n/4)+3T(n/42)] = n + (3/4)n+32T(n/42)
= n + (3/4)n+32[(n/4) 2+3T(n/43)]
= n + (3/4)n+(3/4) 2n+33T(n/43)
……………………
= n + (3/4)n+(3/4) 2n+ …. +(3/4) k-1n+3kT(n/4k) kth term
Assume n/4k= 1 🡪 4k = n 🡪 k = log4(n)
T(n) = n[1+(3/4) +(3/4) 2+….+(3/4) k-1] + 3kT(1)
= n [[ 1- (3/4)k] / [ 1-(3/4)] ] + 3k x 1
= 4 n [ 1 – (3k/4k)] + 3k alogc(b) =blogc(a)
= 4 n [ 1 - (3log4n /n)] + 3log4n
= 4 n [ 1 - (nlog43 /n)] + nlog43
= 4 n – 4 nlog 3 + nlog 3 = 4 n – 3 nlog 3
4 4 4
=O(n)

10. T(n) = T(n/2) + 1


Answer:
T(n) = 1 + T(n/2)
= 1 + [1+ T(n/22)] = 2+ T(n/22)
= 2+ [1+ T(n/23)] = 3+ T(n/23)
……………………
= k + T(n/2k) kth term
Assume n/2k= 1 🡪 2k = n 🡪 k = log2(n)
T(n) = log2(n) + T(1) = log2(n) + 1
= O(log2(n) )

11. T(n) = 4 T(n/2) + n2


Answer:
T(n) = n2 + 4T(n/2)
= n2+4[(n/2)2 +4T(n/ 22)] = 2n2+42T(n/ 22)
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
= 2n2+42[(n/ 22)2 +4T(n/ 23)] = 3n2+43T(n/ 23)
……………………
= kn2+4kT(n/ 2k) kth term
Assume n/2k= 1 🡪 2k = n 🡪 k = log2(n)
T(n) = n2log2(n) +4k T(1) 4k =n2
= n2log2(n) + n2
= O(n2log2(n))
12. T(n) = 4 T(n/3) + n
Answer:
T(n) = n + 4T(n/3)
= n + 4[(n/3)+4T(n/32)] = n + (4/3)n+42T(n/32)
= n + (4/3)n+42 [(n/3) 2+4T(n/33)]
= n + (4/3)n+(4/3) 2n+43T(n/33)
……………………
= n + (4/3)n+(4/3) 2n+ …. +(4/3) k-1n+4kT(n/3k) kth term
Assume n/3k= 1 🡪 3k = n 🡪 k = log3(n)
T(n) = n[1+(4/3) +(4/3) 2+….+(4/3) k-1] + 4kT(1)
= n[((4/3)k-1)/((4/3)-1)] + 4k
= n[((4k/3k) -1)/(1/3)] + 4k
= 3n[((4log3n/3log3n) -1)] + 4log 3n
= 3n[((nlog34/nlog33) -1)] + nlog 34
= 3n[((nlog34/n) -1)] + nlog 34
= 3n log34 -3n + nlog 34
= 4n log34 -3n
= O(nlog34 )

Recursion Tree Method


● It is the pictorial representation of iteration method, which is in the form of a tree.
● Solve the following recurrence relation using Recursion Tree method.
1. T(1) = 1 (Univ Question)
2
T(n) = 3 T(n/4) + cn
Answer:
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

T(n) = cn2 + (3/16) cn2 + (3/16) 2 cn2 + …..+ (3/16) k cn2


= cn2[1 + (3/16) + (3/16) 2 + …..+ (3/16) k]
≤ cn2[1 + (3/16) + (3/16) 2 + ]
2
= cn [1/(1- (3/16))]
= (16/13) cn2
=O(n2)

2. T(n) = 3T(n/4) + n2 (Univ Question)


Answer:
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

T(n) = n2 + (3/16) n2 + (3/16) 2 n2 + …..+ (3/16) k n2


= n2[1 + (3/16) + (3/16) 2 + …..+ (3/16) k]
≤ n2[1 + (3/16) + (3/16) 2 + ]
2
= n [1/(1- (3/16))]
= (16/13) n2
=O(n2)

3. T(n) = 2 T(n/10) + T(9n/10) + n (Univ Question)


Assume constant time for small value of n
Answer:

Assume that 9kn/10k=1 🡪 (10/9) k=n 🡪 k=log(10/9) n

T(n) =n+(11/10)n+(11/10)2n+ +(11/10)kn


=n[1+(11/10)+(11/10)2+ +(11/10)k]
=n[ [(11/10)k+1 -1] / [(11/10)-1] ]
=10n[ [(11/10)x(11/10) k] -1]
=10n[ [(11/10)x(11/10) log10/9 n] -1]
=10n[ [(11/10) x n log10/9 (11/10) ] -1]
=10n[ [(11/10) x n1 ] -1]
=11n2 -10n =O(n2)
Longest path: Rightmost path
Longest Path length:
9 n/10k=1 , where k is the length of the longest path
k

(10/9) k=n
k=log(10/9) n
Shortest path: Leftmost path
Shortest Path length:
n/10k=1 , where k is the length of the shortest path
10k=n
k=log10 n
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
4. T(n) = T(n/3) + T(2n/3) + n, where n>1 (Univ Question)
T(n) = 1, Otherwise
Answer:

Assume that 2kn/3k = 1 🡪 (3/2)k = n 🡪 k= log(3/2) n T(n)


= (k+1) n
= (log(3/2) n + 1) n
= n log(3/2) n + n
= O(n log(3/2) n)

Longest path: Rightmost path


Longest Path length:
k k
2 n/3 = 1 , where k is the length of the longest path
(3/2) k=n
k=log(3/2) n

Shortest path: Leftmost path


Shortest Path length:
k
n/3 =1 , where k is the length of the shortest path
3k=n
k=log3 n

5. T(n) = T(n/3) + T(2n/3) + c n (Univ Question)

6. T(n) = 2 T(n/2) + n where n>1 (Univ Question)


0 Otherwise
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

7. T(n) = 2T(n/2) + n2 where n>1 (Univ Question)


0 otherwise
Answer:

Assume n/2k=1 🡪 2k=n 🡪 k=log2 n

T(n) = n2+(n2 /2) +(n2 / 22)+ +(n2 / 2k)


2 2
= n [1+(1/2)+(1/2) + + (1/2) k]
2 k+1
= n [ [1-(1/2) ] / [1-(1/2)] ]
= 2n2 [ 1- (1/2)x(1/2) k]
= 2n2 [ 1- (1/2)x(1/2k)]
= 2n2 [ 1- (1/2)x(1/n)]
= 2n2 – n
= O(n2)

8. T(n) = 3 T(n/3) + c n
Answer:

Assume that n/3k=1 🡪 3k=n 🡪 k=log3(n) T(n)


= (k+1)cn
=(log3(n)+1)cn
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
=cn log3(n)+cn
=O(n log3(n))

T(n) = 4 T(n/2) + n
Answer:

Assume n/2k=1 🡪 2k=n 🡪 k=log2 n

T(n) = n+2n + 22 n+ +2k n


= n[1+2+22+ + 2 k]
= n[ [2 k+1-1] / [2-1] ]
= n [2x2 k-1]
= n [ 2n-1]
= 2n2 –n
= O(n2)

9. T(n) = 2 T(n-1) + c
Answer:

T(n) = c+2c + 22 c+ +2n-1 c


= c[1+2+22+ + 2 n-1]
= c[ [2 n-1] / [2-1] ]
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
= c [2 n-1]
= c 2n –c
= O(2n)
T(n) = 8 T(n/2) + n2
Answer:

Assume that n/2k = 1 🡪 2k=n 🡪 k=log2 n


T(n) = n2+2n2 + 22 n2+ +2k n2
= n2 [1+2+22+ + 2 k]
= n2 [ [2 k+1-1] / [2-1] ]
= n2 [2x2 k-1]
= n2 [ 2n-1]
= 2n3 – n2
= O(n3)

10. T(n) = 3T(n/2) + n


Answer:

Assume that n/2k = 1 🡪 2k=n 🡪 k=log2 n


Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
T(n) = n+(3/2)n+ (3/2)2n+ + (3/2)kn
= n[1+(3/2)+(3/2)2+ + (3/2) k]
= n[ [ (3/2) k+1 - 1] / [(3/2)-1] ]
= n[[(3/2) (3/2) k - 1] / [1/2] ]
= 2n[(3/2) (3 k /2 k) - 1]
= 2n[(3/2) (3 log2 n /2 log n) - 1]
= 2n[(3/2) (n log22 3 /n log 2) - 1]
= 2n[(3/2) (n log22 3 /n) - 1]
= 3n log2 3 – 2n
= O(n log2 3 )

11. T(n) = T(n/2) + n2


Answer:

Assume that n/2k = 1 🡪 2k=n 🡪 k=log2 n

T(n) = n2+n2/4 + n2/42+ + n2/4k


= n2 [1+(1/4)+(1/4)2+ + (1/4) k]
= n2[ [1- (1/4) k+1] / [1-(1/4)] ]
= n2[ [1- (1/4) (1/4) k] / [3/4] ]
= (4/3) n2[ 1- (1/4) (1/4 log n )]
= (4/3) n2[ 1- (1/4) (1/n log 4 )]
= (4/3) n2[ 1- (1/4) (1/n2)]
= (4/3) n2- (1/3)
= O(n2)
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

● Master’s Method

T(n) = a.T(n/b) + f(n)

 ‘n’ is the size of the function or input size.

 ‘a’ is the count of the number of subproblems (a≥1).

 ‘b’ is the size of each subproblem (b>1).

 f(n) is work done outside the recursive call. For Dividing functions, f(n)=[Link] p n (k>0).

Master theorem for dividing function depends on the value of a,b and f(n).

Compare log ba with k or a with bk

Case 1: log b a > k, then T(n)= θ (n( log b a)).

Case 2: log b a = k , then the value of T(n) depends upon the value of ‘p’.

 if (p>-1) then T(n)= θ ((nk) (log (p+1) n)).


 if (p= -1) then T(n)= θ ((nk) (log log n)).
 if (p< -1) then T(n)= θ (nk).

Case 3: log b a< k, then the value of T(n) depends upon the value of ‘p’.

 if(p>= 0) then T(n)= θ ((nk) (log p n)).


 if(p< 0) then T(n)= θ (nk).

● State Master’s theorem (Univ Question)


● Solve the following recurrence relation using Master’s method.
1. T(n) = 3 T(n/2) + n2 (Univ Question)
Answer:
T(n) = 3 T(n/2) + n2
[ log ba comp k , i.e a comp bk ]

a=3 b=2 n2 =Ɵ (n2 log0(n)) k=2 p=0


bk =22 = 4
Here a< bk and p≥0
T(n) = Ɵ(nk logp(n))
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
= Ɵ(n2 log0(n))
= Ɵ(n2)
2. T(n) = 2 T(n/2) + n log n (Univ Question)
Answer:
T(n) = 2 T(n/2) + n log n
a=2 b=2 n log n =Ɵ (n1 log1(n)) k=1 p=1
bk =21 = 2
Here a= bk and p>-1
T(n) = Ɵ(n(log b a) logp+1(n))
= Ɵ(n(log 2 2) log2(n))
= Ɵ(nlog2(n))

3. T(n) = 2 T(n/4) + √𝑛
Answer: (Univ Question)

4. T(n) = 7 T(n/2) + n2 (Univ Question)


Answer:
T(n) = 7T(n/2) + n2
a=7 b=2 n2=Ɵ (n2 log0(n)) k=2 p=0
bk =22 = 4
Here a> bk
T(n) = Ɵ(n(log b a))
= Ɵ(n(log 2 7))

5. T(n) = 2 T(n/2) + n/log n


Answer:
T(n) = 2 T(n/2) + (n/log n)
a=2 b=2 (n/log n) =Ɵ (n1 log-1(n)) k=1 p=-
1 bk =21 = 2
Here a= bk and p=-1
T(n) = Ɵ(n(log b a) log(log n))
= Ɵ(n(log 2 2) log(log n))
= Ɵ(n log(log n))
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
6. T(n) = 3 T(n/4) + n log n (Univ Question)
7. T(n) = 9 T(n/3) + n (Univ Question)
8. T(n) = 8 T(n/2) + 100 n2 (Univ Question)
9. T(n) = 2 T(n/2) + 10 n (Univ Question)

10. T(n) = 2n T(n/2) + nn (Univ Question)


Answer:
T(n) = 2nT(n/2) + nn
As per master’s theorem, a≥1. Here a=2n
So we cannot solve this relation using Master’s Method.

11. T(n) = 4 T(n/2) + n2


12. T(n) = T(n/2) + n2
13. T(n) = 16 T(n/4) + n
14. T(n) = 2 T(n/4) + n0.51
15. T(n) = 0.5 T(n/2) + 1/n
16. T(n) = 6 T(n/3) + n2 log n
17. T(n) = 64 T(n/8) - n2 log n
18. T(n) = 7 T(n/3) - n2
19. T(n) = 4 T(n/2) + log n
20. T(n) = √2 T(n/2) + log n
21. T(n) = 2 T(n/2) + √𝑛
22. T(n) = 3 T(n/2) + n
23. T(n) = 3 T(n/3) + √𝑛
24. T(n) = 4 T(n/2) + c n
25. T(n) = T(2n/3) + 1
26. T(n) = 2 T(n/2) + n log n
27. T(n) = 8 T(n/2) + Ɵ (n2)
28. T(n) = 2 T(n/4) + 1
29. T(n) = 2 T(n/4) + n
30. T(n) = 2 T(n/4) + n2
31. T(n) = T(n/2) + Ɵ (1)
32. T(n) = 4 T(n/2) + n2 log n

● Substitution Method
● The substitution method for solving recurrences comprises two steps
1. Guess the form of the solution
2. Use mathematical induction to find the constant & show that the solution works.
● This method is powerful, but we must be able to guess the form of the answer in order to
apply it.
● Example:
1. Give the general idea of the substitution method for solving recurrences. Solve the
following recurrences using substitution method
T(n) = 2 T(n/2) + n T(1) = 1 (Univ Question)

Answer:
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)
Guess that T(n) = O(n log n)
As per O notation definition T(n) <= c n log n
By mathematical induction
If n=1, T(1) <= c x 1 x log 1 🡪 1 <= 0 It is false

If n=2, T(2) <= c x 2 x log 2 🡪 2 T(1) + 2 <= 2 c 🡪 4 <= 2c It is

true If n=3, T(3) <= c x 3 x log 3 🡪 2 T(1) + 3 <= c x 3 x log 3


5 <= 3 c log 3 It is true
This relation is true when n= 2, 3, 4 ,k
T(k) <= c k log k, where 2<= k <= n
T(n/2) <= c (n/2) log (n/2) 1

The recurrence relation is


T(n) = 2 T(n/2) + n
Apply equation number 1
T(n) <= 2 c (n/2) log (n/2) +
n
<= c n log (n/2) + n
<= c n log n – c n log 2 + n
<= c n log n
Therefore T(n) = O(n log n)

2. Solve the following recurrence relation using substitution method


T(n) = 1 if n=1
2T(n/2) + 1 Otherwise

Answer:
Guess that T(n) = O(n)
As per O notation definition T(n) <= c n
By mathematical induction
If n=1, T(1) <= c x 1 -> 1 <= c It is true

If n=2, T(2) <= c x 2 -> 2 T(1) + 1 <= 2 c -> 3 <= 2c It is true


This relation is true when n= 1, 2, 3, , k
T(k) <= c k , where 2<= k <= n
T(n/2) <= c (n/2) 1

The recurrence relation is


T(n) = 2 T(n/2) + 1
Apply equation number 1
T(n) <= 2 c (n/2) + 1
<= c n + 1
<= c n
Therefore T(n) = O(n)
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

3. Solve the following recurrences using substitution method


T(n) = 2 T(n/2) + k n T(1) = 1

Answer:
Guess that T(n) = O(n log n)
As per O notation definition T(n) <= c n log n
By mathematical induction
If n=1, T(1) <= c x 1 x log 1 🡪 1 <= 0 It is

false If n=2, T(2) <= c x 2 x log 2 🡪 2 T(1) +kx2 <= 2 c

🡪 2 +2 k <= 2c It is true
This relation is true when n= 2, 3, 4 ,k
T(k) <= c k log k, where 2<= k <= n
T(n/2) <= c (n/2) log (n/2) 1

The recurrence relation is


T(n) = 2 T(n/2) + k n
Apply equation number 1
T(n) <= 2 c (n/2) log (n/2) + k n
<= c n log (n/2) + k n
<= c n log n – c n log 2 + k n
<= c n log n – c n + k n
<= c n log n
Therefore T(n) = O(n log n)
Module I CST 306 - Algorithm Analysis and Design(S6 CSE)

● Arithmetic Progression
● Series: a , a+d , a+2d , a+3d a+(n-1)d
● nth term: a+(n-1)d
● sum of first n terms:

● Geometric progression
● Series: a , ar , ar2 , ar3 . . . . . . . . . . arn-1
● nth term: arn-1
● sum of first n terms:

● sum of infinite terms:

● Logarithm related equations

● x log a b = b log a x

● log a a = 1

● if x k = n , then k = log k n

You might also like