SlideShare a Scribd company logo
ADVANCED DATA STRUCTURES
LECTURE 2
Contents
 Asymptotic Notations
 Recurrence relation
 Substitution method
 Iterative method
 Recursion method
 Master method
Asymptotic Analysis and Recurrences
 In this lecture we discuss the notion of asymptotic analysis
and introduce O, Ω, and Θ notation.
 Material in this lecture: • Asymptotic notation: O, Ω,and
Θ.
Asymptotic analysis
Asymptotic analysis When we consider an algorithm for some
problem, in addition to knowing that it produces a correct
solution, we will be especially interested in analyzing its
running time.
There are several aspects of running time that one could
focus on.
Our focus will be primarily on the question: “how does the
running time scale with the size of the input?” This is called
asymptotic analysis, and the idea is that we will ignore low-
order terms and constant factors, focusing instead on the
shape of the running time curve.
We will typically use n to denote the size of the input, and
T(n) to denote the running time of our algorithm on an input
of size n.
What is n, f(n)
g(n) and c?
 f(n)= Is a function of n that denotes algorithm run time
 n= input size/steps required to execute the program.
 g(n)=is an arbitrary time complexity relate to algorithm
 c=constant
Continue…
 f(n) is a linear function where we touch every element of a collections
 f(n)=nlogn it is called nlogn function
 T(n)= n² is called quadratic function it rises due to nested loops
 F(n)= bn is called exponential function
 F(n3)= is a cubic function
Polynomial function
 If P(x) = an xn + an-1 xn-1+.……….…+a2 x2 + a1 x + a0, then for x ≫ 0 or x ≪ 0,
P(x) ≈ an xn.
 Thus, polynomial functions approach power functions for very large values of
their variables.
 a values are constants here
How to calculate f(n)?
Calculating the value of f(n) for smaller programs is easy but for
bigger programs, it's not that easy.
We can compare the data structures by comparing their f(n)
values. We can compare the data structures by comparing their
f(n) values.
We will find the growth rate of f(n) because there might be a
possibility that one data structure for a smaller input size is
better than the other one but not for the larger sizes. Now, how
to find f(n).
Let's look at a simple example.
f(n) = 5n2 + 6n + 12
 where n is the number of instructions executed, and it depends on
the size of the input.
 When n=1
 % of running time due to 5n2 = * 100 = 21.74%
 % of running time due to 6n = * 100 = 26.09%
 % of running time due to 12 = * 100 = 52.17%
 From the above calculation, it is observed that most of the time is
taken by 12. But, we have to find the growth rate of f(n), we cannot
say that the maximum amount of time is taken by 12. Let's assume
the different values of n to find the growth rate of f(n).
Let's assume the different values of n to
find the growth rate of f(n)
n 5n
2
6n 12
1 21.74% 26.09% 52.17%
10 87.41% 10.49% 2.09%
100 98.79% 1.19% 0.02%
1000 99.88% 0.12% 0.0002%
Continue…
 As we can observe in the above table that with the increase in the value of n,
the running time of 5n2 increases while the running time of 6n and 12 also
decreases. Therefore, it is observed that for larger values of n, the squared
term consumes almost 99% of the time. As the n2 term is contributing most of
the time, so we can eliminate the rest two terms.
 Therefore,
 f(n) = 5n2
Continue…
 Here, we are getting the approximate time complexity whose result is very
close to the actual result. And this approximate measure of time complexity
is known as an Asymptotic complexity. Here, we are not calculating the exact
running time, we are eliminating the unnecessary terms, and we are just
considering the term which is taking most of the time.
 In mathematical analysis, asymptotic analysis of algorithm is a method of
defining the mathematical boundation of its run-time performance. Using the
asymptotic analysis, we can easily conclude the average-case, best-case and
worst-case scenario of an algorithm.
 It is used to mathematically calculate the running time of any operation
inside an algorithm.
Continue…
 Example: Running time of one operation is x(n) and for another operation, it
is calculated as f(n2). It refers to running time will increase linearly with an
increase in 'n' for the first operation, and running time will increase
exponentially for the second operation. Similarly, the running time of both
operations will be the same if n is significantly small.
 Usually, the time required by an algorithm comes under three types:
 Worst case: It defines the input for which the algorithm takes a huge time.
 Average case: It takes average time for the program execution.
 Best case: It defines the input for which the algorithm takes the lowest time
Asymptotic Notations
 The commonly used asymptotic notations used for calculating the running
time complexity of an algorithm is given below:
 Big oh Notation (?)
 Omega Notation (Ω)
 Theta Notation (θ)
Big oh Notation (O)
Big O notation is an asymptotic notation that measures the
performance of an algorithm by simply providing the order of
growth of the function.
This notation provides an upper bound on a function which
ensures that the function never grows faster than the upper
bound.
So, it gives the least upper bound on a function so that the
function never grows faster than this upper bound.
Big oh Notation (O)
 It is the formal way to express the upper boundary of an algorithm
running time. It measures the worst case of time complexity or the
algorithm's longest amount of time to complete its operation. It is
represented as shown below:
Big oh Notation (O)
Big oh Notation (O)
 For example:
 If f(n) and g(n) are the two functions defined for positive integers,
 then f(n) = O(g(n)) as f(n) is big oh of g(n) or f(n) is on the order of g(n)) if
there exists constants c and no such that:
 f(n)≤c.g(n) for all n≥no
 This implies that f(n) does not grow faster than g(n), or g(n) is an upper
bound on the function f(n). In this case, we are calculating the growth rate of
the function which eventually calculates the worst time complexity of a
function, i.e., how worst an algorithm can perform.
Let's understand through examples
 Example 1: f(n)=2n+3 , g(n)=n
 Now, we have to find Is f(n)=O(g(n))?
 To check f(n)=O(g(n)), it must satisfy the given condition:
 f(n)<=c.g(n)
 First, we will replace f(n) by 2n+3 and g(n) by n.
 2n+3 <= c.n
Continue…
 Let's assume c=5, n=1 then
 2*1+3<=5*1
 5<=5
 For n=1, the above condition is true.
 If n=2
 2*2+3<=5*2
 7<=10
 For n=2, the above condition is true.
Continue…
 We know that for any value of n, it will satisfy the above condition,
i.e., 2n+3<=c.n. If the value of c is equal to 5, then it will satisfy the
condition 2n+3<=c.n.
 We can take any value of n starting from 1, it will always satisfy.
Therefore, we can say that for some constants c and for some
constants n0, it will always satisfy 2n+3<=c.n.
 As it is satisfying the above condition, so f(n) is big oh of g(n) or we
can say that f(n) grows linearly. Therefore, it concludes that c.g(n) is
the upper bound of the f(n). It can be represented graphically as:
Big oh Notation (O)
Big oh Notation (O)
Continue…
 The idea of using big o notation is to give an upper bound of a
particular function, and eventually it leads to give a worst-time
complexity. It provides an assurance that a particular function does
not behave suddenly as a quadratic or a cubic fashion, it just behaves
in a linear manner in a worst-case.
Omega Notation (Ω)
 It basically describes the best-case scenario which is opposite to the big o
notation.
 It is the formal way to represent the lower bound of an algorithm's running
time. It measures the best amount of time an algorithm can possibly take to
complete or the best-case time complexity.
 It determines what is the fastest time that an algorithm can run.
Omega Notation (Ω)
 If we required that an algorithm takes at least certain amount of time
without using an upper bound, we use big- Ω notation i.e. the Greek letter
"omega". It is used to bound the growth of running time for large input size.
 If f(n) and g(n) are the two functions defined for positive integers,
 then f(n) = Ω (g(n)) as f(n) is Omega of g(n) or f(n) is on the order of g(n)) if
there exists constants c and no such that:
 f(n)>=c.g(n) for all n≥no and c>0
Let's consider a simple example.
 If f(n) = 2n+3, g(n) = n,
 Is f(n)= Ω (g(n))?
 It must satisfy the condition:
 f(n)>=c.g(n)
 To check the above condition, we first replace f(n) by 2n+3 and g(n) by n.
 2n+3>=c*n
 Suppose c=1
 2n+3>=n (This equation will be true for any value of n starting from 1).
 Therefore, it is proved that g(n) is big omega of 2n+3 function.
Big Omega Notation (Ω)
Big Omega Notation (Ω)
Continue…
 As we can see in the above figure that g(n) function is the lower bound of the
f(n) function when the value of c is equal to 1.
 Therefore, this notation gives the fastest running time.
 But, we are not more interested in finding the fastest running time, we are
interested in calculating the worst-case scenarios because we want to check
our algorithm for larger input that what is the worst time that it will take so
that we can take further decision in the further process.
Big Theta Notation (θ)
 Theta Notation (θ)
 The theta notation mainly describes the average case scenarios.
 It represents the realistic time complexity of an algorithm. Every time, an
algorithm does not perform worst or best, in real-world problems, algorithms
mainly fluctuate between the worst-case and best-case, and this gives us the
average case of the algorithm.
 Big theta is mainly used when the value of worst-case and the best-case is
same.
 It is the formal way to express both the upper bound and lower bound of an
algorithm running time.
Big Theta Notation (θ)
 Let's understand the big theta notation mathematically:
 Let f(n) and g(n) be the functions of n where n is the steps required to
execute the program then:
 f(n)= θg(n)
 The above condition is satisfied only if when
 c1.g(n)<=f(n)<=c2.g(n)
Big Theta Notation (θ)
 where the function is bounded by two limits, i.e., upper and lower limit, and
f(n) comes in between. The condition f(n)= θg(n) will be true if and only if
c1.g(n) is less than or equal to f(n) and c2.g(n) is greater than or equal to
f(n). The graphical representation of theta notation is given below:
Big Theta Notation (θ)
Big Theta Notation (θ)
Big Theta Notation (θ)
 Let's consider the same example where
f(n)=2n+3
g(n)=n
 As c1.g(n) should be less than f(n) so c1 has to be 1 whereas c2.g(n) should be
greater than f(n) so c2 is equal to 5. The c1.g(n) is the lower limit of the of
the f(n) while c2.g(n) is the upper limit of the f(n).
 c1.g(n)<=f(n)<=c2.g(n)
Big Theta Notation (θ)
 Replace g(n) by n and f(n) by 2n+3
 c1.n <=2n+3<=c2.n
 if c1=1, c2=2, n=1
 1*1 <=2*1+3 <=2*1
 1 <= 5 <= 2 // for n=1, it satisfies the condition c1.g(n)<=f(n)<=c2.g(n)
 If n=2
 1*2<=2*2+3<=2*2
 2<=7<=4 // for n=2, it satisfies the condition c1.g(n)<=f(n)<=c2.g(n)
Big Theta Notation (θ)
 Therefore, we can say that for any value of n, it satisfies the
condition c1.g(n)<=f(n)<=c2.g(n). Hence, it is proved that f(n) is big
theta of g(n). So, this is the average-case scenario which provides
the realistic time complexity.
Why we have three different asymptotic
analysis?
 As we know that big omega is for the best case, big oh is for the worst case
while big theta is for the average case. Now, we will find out the average,
worst and the best case of the linear search algorithm.
 Suppose we have an array of n numbers, and we want to find the particular
element in an array using the linear search. In the linear search, every
element is compared with the searched element on each iteration. Suppose,
if the match is found in a first iteration only, then the best case would be
Ω(1), if the element matches with the last element, i.e., nth element of the
array then the worst case would be O(n). The average case is the mid of the
best and the worst-case, so it becomes θ(n/1). The constant terms can be
ignored in the time complexity so average case would be θ(n).
 So, three different analysis provide the proper bounding between the actual
functions. Here, bounding means that we have upper as well as lower limit
which assures that the algorithm will behave between these limits only, i.e.,
it will not go beyond these limits.
Recurrence relation
A recurrence is an equation or inequality that
describes a function in terms of its values on smaller
inputs. To solve a Recurrence Relation means to
obtain a function defined on the natural numbers that
satisfy the recurrence.
For Example, the Worst Case Running Time
T(n) of the MERGE SORT Procedures is
described by the recurrence.
Using Recursive C function finding Time
complexity of an Recursive function:
 Void test (int n)
 {
 If(n>0)
 {
 Printf(“%d”, n);
 Test(n-1);
 }
 }
 If by passing n=3 ; printing three times 3 2 1
 No.of prints 3 i.e., 1+1+1=3 units of time
 Number of calls is 3+1=4
There are four methods for solving
Recurrence:
 Substitution method
 Iterative method
 Recursion method
 Master method
1. Substitution Method:
The Substitution Method Consists of two main steps:
1.Guess the Solution.
2.Use the mathematical induction to find the
boundary condition and shows that the guess is
correct.
Cont…
For Example1 Solve the equation by Substitution
Method.
T (n) = T + n
We have to show that it is asymptotically bound by
O(log n).
Solution:
For T (n) = O (log n)
We have to show that for some constant c
1.T (n) ≤c logn.
Put this in given Recurrence Equation.
T (n) ≤c log + 1 ≤c log + 1 = c logn-clog2 2+1 ≤c logn for c≥1
Thus T (n) =O logn.
Substitution method
 Recurrence equation 1: T(n)=T(n-1)+n
 Recurrence equation 2:T(n)=2T((n/2)+n
 Recurrence equation 3:
 T(n) =1 If n=1
=n*T(n-1) If n>1
Thank you

More Related Content

PPTX
Presentation on array
PPT
Binary search trees
PPTX
Unit 5 internal sorting &amp; files
PPT
Hashing
PPTX
Algorithm Analysis
PPTX
Natural Language Processing in AI
PPT
Turing Machine
PPT
Biconnected components (13024116056)
Presentation on array
Binary search trees
Unit 5 internal sorting &amp; files
Hashing
Algorithm Analysis
Natural Language Processing in AI
Turing Machine
Biconnected components (13024116056)

What's hot (20)

PPTX
Binary Search Tree
PDF
Binary Search - Design & Analysis of Algorithms
PPTX
Regular expression to NFA (Nondeterministic Finite Automata)
PPTX
Asymptotic notations
PPTX
data structures- back tracking
PPTX
Introduction to pandas
PDF
Little o and little omega
PPTX
Linked list
PPT
Searching in c language
PPTX
Abstract Data Types
PDF
Python list
PPTX
Next word prediction
PPTX
What is word2vec?
PDF
Symbol table in compiler Design
PPT
3.8 quick sort
PDF
How to Create Login and Registration API in PHP.pdf
PPTX
PPTX
Tree and graph
PPTX
linked list in data structure
PPTX
Divide and conquer - Quick sort
Binary Search Tree
Binary Search - Design & Analysis of Algorithms
Regular expression to NFA (Nondeterministic Finite Automata)
Asymptotic notations
data structures- back tracking
Introduction to pandas
Little o and little omega
Linked list
Searching in c language
Abstract Data Types
Python list
Next word prediction
What is word2vec?
Symbol table in compiler Design
3.8 quick sort
How to Create Login and Registration API in PHP.pdf
Tree and graph
linked list in data structure
Divide and conquer - Quick sort
Ad

Similar to Asymptotic Notations (20)

PDF
Data Structures and Algorithms - Lec 02.pdf
PPT
Complexity analysis
PDF
1ST_UNIT_DAdefewfrewfgrwefrAdfdgfdsgevedr (2).pdf
PPTX
1_Asymptotic_Notation_pptx.pptx
PPTX
Data Structure Asymptotic Notations.pptx
PPTX
TIME EXECUTION OF DIFFERENT SORTED ALGORITHMS
PPTX
Time complexity.pptxghhhhhhhhhhhhhhhjjjjjjjjjjjjjjjjjjjjjjjjjj
PDF
Asymptotic Notation
PDF
Asymptotic Analysis of algorithm in competitive Programming
PPT
Asymptotic notations
PPT
Asymptotic Notation and Complexity
PPTX
Algorithm for the DAA agscsnak javausmagagah
PPT
Time complexity.ppt
PPT
Time complexity.pptr56435 erfgegr t 45t 35
PPTX
cse couse aefrfrqewrbqwrgbqgvq2w3vqbvq23rbgw3rnw345
PPTX
DAA Week 2 slide for design algorithm and analysis.pptx
PDF
Data Structure & Algorithms - Mathematical
PPT
How to calculate complexity in Data Structure
PPT
CS8451 - Design and Analysis of Algorithms
PPTX
Design and analysis of algorithms unit1.pptx
Data Structures and Algorithms - Lec 02.pdf
Complexity analysis
1ST_UNIT_DAdefewfrewfgrwefrAdfdgfdsgevedr (2).pdf
1_Asymptotic_Notation_pptx.pptx
Data Structure Asymptotic Notations.pptx
TIME EXECUTION OF DIFFERENT SORTED ALGORITHMS
Time complexity.pptxghhhhhhhhhhhhhhhjjjjjjjjjjjjjjjjjjjjjjjjjj
Asymptotic Notation
Asymptotic Analysis of algorithm in competitive Programming
Asymptotic notations
Asymptotic Notation and Complexity
Algorithm for the DAA agscsnak javausmagagah
Time complexity.ppt
Time complexity.pptr56435 erfgegr t 45t 35
cse couse aefrfrqewrbqwrgbqgvq2w3vqbvq23rbgw3rnw345
DAA Week 2 slide for design algorithm and analysis.pptx
Data Structure & Algorithms - Mathematical
How to calculate complexity in Data Structure
CS8451 - Design and Analysis of Algorithms
Design and analysis of algorithms unit1.pptx
Ad

More from NagendraK18 (6)

PPTX
dataminingintroductionpptpptpptptro.pptx
PDF
UNIT-1-PdjfjfjfjfjfjfjfjfjfjfjPTS-DAA.pdf
PDF
UNIT-1-PPTS-DAA_cofjfjvjcjcncnfncmpressed.pdf
PDF
1_Asymptdjfjfjfnfncnotic_Notation_pptx.pdf
PPTX
ALGO VS FLOW.pptx
PPTX
ADS Introduction
dataminingintroductionpptpptpptptro.pptx
UNIT-1-PdjfjfjfjfjfjfjfjfjfjfjPTS-DAA.pdf
UNIT-1-PPTS-DAA_cofjfjvjcjcncnfncmpressed.pdf
1_Asymptdjfjfjfnfncnotic_Notation_pptx.pdf
ALGO VS FLOW.pptx
ADS Introduction

Recently uploaded (20)

PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PDF
VCE English Exam - Section C Student Revision Booklet
PDF
01-Introduction-to-Information-Management.pdf
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PPTX
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PDF
Insiders guide to clinical Medicine.pdf
PDF
Pre independence Education in Inndia.pdf
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PPTX
PPH.pptx obstetrics and gynecology in nursing
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
Microbial disease of the cardiovascular and lymphatic systems
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PDF
Basic Mud Logging Guide for educational purpose
PPTX
Institutional Correction lecture only . . .
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
VCE English Exam - Section C Student Revision Booklet
01-Introduction-to-Information-Management.pdf
human mycosis Human fungal infections are called human mycosis..pptx
Final Presentation General Medicine 03-08-2024.pptx
FourierSeries-QuestionsWithAnswers(Part-A).pdf
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
Module 4: Burden of Disease Tutorial Slides S2 2025
O5-L3 Freight Transport Ops (International) V1.pdf
Insiders guide to clinical Medicine.pdf
Pre independence Education in Inndia.pdf
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PPH.pptx obstetrics and gynecology in nursing
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Microbial disease of the cardiovascular and lymphatic systems
Supply Chain Operations Speaking Notes -ICLT Program
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
Basic Mud Logging Guide for educational purpose
Institutional Correction lecture only . . .

Asymptotic Notations

  • 2. Contents  Asymptotic Notations  Recurrence relation  Substitution method  Iterative method  Recursion method  Master method
  • 3. Asymptotic Analysis and Recurrences  In this lecture we discuss the notion of asymptotic analysis and introduce O, Ω, and Θ notation.  Material in this lecture: • Asymptotic notation: O, Ω,and Θ.
  • 4. Asymptotic analysis Asymptotic analysis When we consider an algorithm for some problem, in addition to knowing that it produces a correct solution, we will be especially interested in analyzing its running time. There are several aspects of running time that one could focus on. Our focus will be primarily on the question: “how does the running time scale with the size of the input?” This is called asymptotic analysis, and the idea is that we will ignore low- order terms and constant factors, focusing instead on the shape of the running time curve. We will typically use n to denote the size of the input, and T(n) to denote the running time of our algorithm on an input of size n.
  • 5. What is n, f(n) g(n) and c?  f(n)= Is a function of n that denotes algorithm run time  n= input size/steps required to execute the program.  g(n)=is an arbitrary time complexity relate to algorithm  c=constant
  • 6. Continue…  f(n) is a linear function where we touch every element of a collections  f(n)=nlogn it is called nlogn function  T(n)= n² is called quadratic function it rises due to nested loops  F(n)= bn is called exponential function  F(n3)= is a cubic function
  • 7. Polynomial function  If P(x) = an xn + an-1 xn-1+.……….…+a2 x2 + a1 x + a0, then for x ≫ 0 or x ≪ 0, P(x) ≈ an xn.  Thus, polynomial functions approach power functions for very large values of their variables.  a values are constants here
  • 8. How to calculate f(n)? Calculating the value of f(n) for smaller programs is easy but for bigger programs, it's not that easy. We can compare the data structures by comparing their f(n) values. We can compare the data structures by comparing their f(n) values. We will find the growth rate of f(n) because there might be a possibility that one data structure for a smaller input size is better than the other one but not for the larger sizes. Now, how to find f(n).
  • 9. Let's look at a simple example. f(n) = 5n2 + 6n + 12  where n is the number of instructions executed, and it depends on the size of the input.  When n=1  % of running time due to 5n2 = * 100 = 21.74%  % of running time due to 6n = * 100 = 26.09%  % of running time due to 12 = * 100 = 52.17%  From the above calculation, it is observed that most of the time is taken by 12. But, we have to find the growth rate of f(n), we cannot say that the maximum amount of time is taken by 12. Let's assume the different values of n to find the growth rate of f(n).
  • 10. Let's assume the different values of n to find the growth rate of f(n) n 5n 2 6n 12 1 21.74% 26.09% 52.17% 10 87.41% 10.49% 2.09% 100 98.79% 1.19% 0.02% 1000 99.88% 0.12% 0.0002%
  • 11. Continue…  As we can observe in the above table that with the increase in the value of n, the running time of 5n2 increases while the running time of 6n and 12 also decreases. Therefore, it is observed that for larger values of n, the squared term consumes almost 99% of the time. As the n2 term is contributing most of the time, so we can eliminate the rest two terms.  Therefore,  f(n) = 5n2
  • 12. Continue…  Here, we are getting the approximate time complexity whose result is very close to the actual result. And this approximate measure of time complexity is known as an Asymptotic complexity. Here, we are not calculating the exact running time, we are eliminating the unnecessary terms, and we are just considering the term which is taking most of the time.  In mathematical analysis, asymptotic analysis of algorithm is a method of defining the mathematical boundation of its run-time performance. Using the asymptotic analysis, we can easily conclude the average-case, best-case and worst-case scenario of an algorithm.  It is used to mathematically calculate the running time of any operation inside an algorithm.
  • 13. Continue…  Example: Running time of one operation is x(n) and for another operation, it is calculated as f(n2). It refers to running time will increase linearly with an increase in 'n' for the first operation, and running time will increase exponentially for the second operation. Similarly, the running time of both operations will be the same if n is significantly small.  Usually, the time required by an algorithm comes under three types:  Worst case: It defines the input for which the algorithm takes a huge time.  Average case: It takes average time for the program execution.  Best case: It defines the input for which the algorithm takes the lowest time
  • 14. Asymptotic Notations  The commonly used asymptotic notations used for calculating the running time complexity of an algorithm is given below:  Big oh Notation (?)  Omega Notation (Ω)  Theta Notation (θ)
  • 15. Big oh Notation (O) Big O notation is an asymptotic notation that measures the performance of an algorithm by simply providing the order of growth of the function. This notation provides an upper bound on a function which ensures that the function never grows faster than the upper bound. So, it gives the least upper bound on a function so that the function never grows faster than this upper bound.
  • 16. Big oh Notation (O)  It is the formal way to express the upper boundary of an algorithm running time. It measures the worst case of time complexity or the algorithm's longest amount of time to complete its operation. It is represented as shown below:
  • 18. Big oh Notation (O)  For example:  If f(n) and g(n) are the two functions defined for positive integers,  then f(n) = O(g(n)) as f(n) is big oh of g(n) or f(n) is on the order of g(n)) if there exists constants c and no such that:  f(n)≤c.g(n) for all n≥no  This implies that f(n) does not grow faster than g(n), or g(n) is an upper bound on the function f(n). In this case, we are calculating the growth rate of the function which eventually calculates the worst time complexity of a function, i.e., how worst an algorithm can perform.
  • 19. Let's understand through examples  Example 1: f(n)=2n+3 , g(n)=n  Now, we have to find Is f(n)=O(g(n))?  To check f(n)=O(g(n)), it must satisfy the given condition:  f(n)<=c.g(n)  First, we will replace f(n) by 2n+3 and g(n) by n.  2n+3 <= c.n
  • 20. Continue…  Let's assume c=5, n=1 then  2*1+3<=5*1  5<=5  For n=1, the above condition is true.  If n=2  2*2+3<=5*2  7<=10  For n=2, the above condition is true.
  • 21. Continue…  We know that for any value of n, it will satisfy the above condition, i.e., 2n+3<=c.n. If the value of c is equal to 5, then it will satisfy the condition 2n+3<=c.n.  We can take any value of n starting from 1, it will always satisfy. Therefore, we can say that for some constants c and for some constants n0, it will always satisfy 2n+3<=c.n.  As it is satisfying the above condition, so f(n) is big oh of g(n) or we can say that f(n) grows linearly. Therefore, it concludes that c.g(n) is the upper bound of the f(n). It can be represented graphically as:
  • 24. Continue…  The idea of using big o notation is to give an upper bound of a particular function, and eventually it leads to give a worst-time complexity. It provides an assurance that a particular function does not behave suddenly as a quadratic or a cubic fashion, it just behaves in a linear manner in a worst-case.
  • 25. Omega Notation (Ω)  It basically describes the best-case scenario which is opposite to the big o notation.  It is the formal way to represent the lower bound of an algorithm's running time. It measures the best amount of time an algorithm can possibly take to complete or the best-case time complexity.  It determines what is the fastest time that an algorithm can run.
  • 26. Omega Notation (Ω)  If we required that an algorithm takes at least certain amount of time without using an upper bound, we use big- Ω notation i.e. the Greek letter "omega". It is used to bound the growth of running time for large input size.  If f(n) and g(n) are the two functions defined for positive integers,  then f(n) = Ω (g(n)) as f(n) is Omega of g(n) or f(n) is on the order of g(n)) if there exists constants c and no such that:  f(n)>=c.g(n) for all n≥no and c>0
  • 27. Let's consider a simple example.  If f(n) = 2n+3, g(n) = n,  Is f(n)= Ω (g(n))?  It must satisfy the condition:  f(n)>=c.g(n)  To check the above condition, we first replace f(n) by 2n+3 and g(n) by n.  2n+3>=c*n  Suppose c=1  2n+3>=n (This equation will be true for any value of n starting from 1).  Therefore, it is proved that g(n) is big omega of 2n+3 function.
  • 30. Continue…  As we can see in the above figure that g(n) function is the lower bound of the f(n) function when the value of c is equal to 1.  Therefore, this notation gives the fastest running time.  But, we are not more interested in finding the fastest running time, we are interested in calculating the worst-case scenarios because we want to check our algorithm for larger input that what is the worst time that it will take so that we can take further decision in the further process.
  • 31. Big Theta Notation (θ)  Theta Notation (θ)  The theta notation mainly describes the average case scenarios.  It represents the realistic time complexity of an algorithm. Every time, an algorithm does not perform worst or best, in real-world problems, algorithms mainly fluctuate between the worst-case and best-case, and this gives us the average case of the algorithm.  Big theta is mainly used when the value of worst-case and the best-case is same.  It is the formal way to express both the upper bound and lower bound of an algorithm running time.
  • 32. Big Theta Notation (θ)  Let's understand the big theta notation mathematically:  Let f(n) and g(n) be the functions of n where n is the steps required to execute the program then:  f(n)= θg(n)  The above condition is satisfied only if when  c1.g(n)<=f(n)<=c2.g(n)
  • 33. Big Theta Notation (θ)  where the function is bounded by two limits, i.e., upper and lower limit, and f(n) comes in between. The condition f(n)= θg(n) will be true if and only if c1.g(n) is less than or equal to f(n) and c2.g(n) is greater than or equal to f(n). The graphical representation of theta notation is given below:
  • 36. Big Theta Notation (θ)  Let's consider the same example where f(n)=2n+3 g(n)=n  As c1.g(n) should be less than f(n) so c1 has to be 1 whereas c2.g(n) should be greater than f(n) so c2 is equal to 5. The c1.g(n) is the lower limit of the of the f(n) while c2.g(n) is the upper limit of the f(n).  c1.g(n)<=f(n)<=c2.g(n)
  • 37. Big Theta Notation (θ)  Replace g(n) by n and f(n) by 2n+3  c1.n <=2n+3<=c2.n  if c1=1, c2=2, n=1  1*1 <=2*1+3 <=2*1  1 <= 5 <= 2 // for n=1, it satisfies the condition c1.g(n)<=f(n)<=c2.g(n)  If n=2  1*2<=2*2+3<=2*2  2<=7<=4 // for n=2, it satisfies the condition c1.g(n)<=f(n)<=c2.g(n)
  • 38. Big Theta Notation (θ)  Therefore, we can say that for any value of n, it satisfies the condition c1.g(n)<=f(n)<=c2.g(n). Hence, it is proved that f(n) is big theta of g(n). So, this is the average-case scenario which provides the realistic time complexity.
  • 39. Why we have three different asymptotic analysis?  As we know that big omega is for the best case, big oh is for the worst case while big theta is for the average case. Now, we will find out the average, worst and the best case of the linear search algorithm.  Suppose we have an array of n numbers, and we want to find the particular element in an array using the linear search. In the linear search, every element is compared with the searched element on each iteration. Suppose, if the match is found in a first iteration only, then the best case would be Ω(1), if the element matches with the last element, i.e., nth element of the array then the worst case would be O(n). The average case is the mid of the best and the worst-case, so it becomes θ(n/1). The constant terms can be ignored in the time complexity so average case would be θ(n).
  • 40.  So, three different analysis provide the proper bounding between the actual functions. Here, bounding means that we have upper as well as lower limit which assures that the algorithm will behave between these limits only, i.e., it will not go beyond these limits.
  • 41. Recurrence relation A recurrence is an equation or inequality that describes a function in terms of its values on smaller inputs. To solve a Recurrence Relation means to obtain a function defined on the natural numbers that satisfy the recurrence. For Example, the Worst Case Running Time T(n) of the MERGE SORT Procedures is described by the recurrence.
  • 42. Using Recursive C function finding Time complexity of an Recursive function:  Void test (int n)  {  If(n>0)  {  Printf(“%d”, n);  Test(n-1);  }  }  If by passing n=3 ; printing three times 3 2 1  No.of prints 3 i.e., 1+1+1=3 units of time  Number of calls is 3+1=4
  • 43. There are four methods for solving Recurrence:  Substitution method  Iterative method  Recursion method  Master method
  • 44. 1. Substitution Method: The Substitution Method Consists of two main steps: 1.Guess the Solution. 2.Use the mathematical induction to find the boundary condition and shows that the guess is correct.
  • 45. Cont… For Example1 Solve the equation by Substitution Method. T (n) = T + n We have to show that it is asymptotically bound by O(log n). Solution: For T (n) = O (log n) We have to show that for some constant c 1.T (n) ≤c logn. Put this in given Recurrence Equation. T (n) ≤c log + 1 ≤c log + 1 = c logn-clog2 2+1 ≤c logn for c≥1 Thus T (n) =O logn.
  • 46. Substitution method  Recurrence equation 1: T(n)=T(n-1)+n  Recurrence equation 2:T(n)=2T((n/2)+n  Recurrence equation 3:  T(n) =1 If n=1 =n*T(n-1) If n>1