You are on page 1of 20

Data Structures & Algorithms

Topic : Asymptotic Notations & Complexity Analysis

By
Ravi Kant Sahu
Asst. Professor,
Lovely Professional University, Punjab
Contents
• Basic Terminology
• Complexity of Algorithm
• Asymptotic Notations
• Linear Search and Binary Search
• Review Questions

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Basic Terminology
• Algorithm: is a finite step by step list of well-defined
instructions for solving a particular problem.

• Complexity of Algorithm: is a function which


gives running time and/or space requirement in terms of
the input size.

• Time and Space are two major measures of efficiency


of an algorithm.

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Characteristics of Good Algorithm
• Efficient
• Running Time
• Space used

• Efficiency as a function of input size


• Size of Input (5, 55555555555)
• Number of Data elements

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Time-Space Tradeoff
• By increasing the amount of space for storing the
data, one may be able to reduce the time needed for
processing the data, or vice versa.

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Complexity of Algorithm
• Time and Space used by the algorithm are two
main measures for efficiency of any algorithm M.

• Time is measured by counting the number of key


operations.

• Space is measured by counting the maximum of


memory needed by the algorithm.

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Complexity of Algorithm is a function f(n)
which gives running time and/or space
requirement of algorithm M in terms of the size
n of the input data.

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Rate of Growth
• The rate of growth of some standard functions
g(n) is:

log2n < n < nlog2n < n2 < n3 < 2n

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Asymptotic Notations

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Asymptotic Notations
• Goal: to simplify analysis of running time .

• Useful to identify how the running time of an


algorithm increases with the size of the input in the
limit.

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Asymptotic Notations
Special Classes of Algorithms
• Logarithmic: O(log n)
• Linear: O(n)
• Quadratic: O(n2)
• Polynomial: O(nk), k >= 1
• Exponential: O(an), a > 1

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Big-Oh (O) Notation
• Asymptotic upper bound

• f(n) = O (g(n)), if there exists constants c


and n0 such that,
f(n) <= c g(n) for all n >= n0

• f(n) and g(n) are functions over non-negative


integers.

• Used for Worst-case analysis.


Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India
Big-Oh (O) Notation
• Simple Rule:
Drop lower order terms and constant factors.

Example:
• 50n log n is O(n log n)
• 8n2 log n + 5 n2 + n is O(n2 log n)

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Big-Omega (Ω) Notation
• Asymptotic lower bound

• f(n) = Ω (g(n)), if there exists constants c


and n0 such that,
c g(n) <= f(n) for all n >= n0

• Used to describe Best-case running time.

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Big-Theta (Ө)Notation
• Asymptotic tight bound

• f(n) = Ө (g(n)), if there exists constants c1,


c2 and n0 such that,
c1 g(n) <= f(n) <= c2 g(n) for n >= n0

• f(n) = Ө (g(n)), iff f(n) = O(g(n)) and


f(n) = Ω (g(n))

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Little-Oh (o) Notation
• Non-tight analogue of Big-Oh.
• f(n) = o (g(n)), if for every c there exists n0
such that,
f(n) < c g(n) for all n >= n0

• f(n) = o (g(n)), iff


f(n) = O (g(n)) and f(n) ≠ Ω (g(n))

• Used for comparisons of running times.


Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India
Review Questions

• When an algorithm is said to be better than the


other?

• Can an algorithm have different running times on


different machines?

• How the algorithm’ running time is dependent on


machines on which it is executed?

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Review Questions
Find out the complexity:
function ()
{
if (condition)
{
for (i=0; i<n; i++) { // simple statements}
}
else
{
for (j=1; j<n; j++)
for (k=n; k>0; k--) {// simple statement}
}
}
Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India
Review Questions

Find out the complexity:

• void complex (int n)


{
for (int i=1; i*i<=n; i++)
for (int j=1; j*j<=n; j++)
{
cout<<” * ”;
}
}

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India


Review Questions
Find out the complexity:
• void more_complex (int n)
{
for(int i=1; i<=n/3; i++)
{
for(int j=1; j<=n; j+=4)
{
cout<<” * ”;
break;
}
break;
}
}

Ravi Kant Sahu, Asst. Professor @ LPU Phagwara (Punjab) India

You might also like