0% found this document useful (0 votes)
8 views17 pages

ComputationalComplexity Ws

The document discusses computational complexity and the analysis of algorithms, focusing on time and space factors. It introduces Big O notation as a method to express the efficiency of algorithms in terms of time and space complexity, highlighting different performance classifications. Additionally, it outlines steps for analyzing algorithms and provides examples of various complexities.

Uploaded by

burner.acctest69
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)
8 views17 pages

ComputationalComplexity Ws

The document discusses computational complexity and the analysis of algorithms, focusing on time and space factors. It introduces Big O notation as a method to express the efficiency of algorithms in terms of time and space complexity, highlighting different performance classifications. Additionally, it outlines steps for analyzing algorithms and provides examples of various complexities.

Uploaded by

burner.acctest69
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
You are on page 1/ 17

Computational

Complexity
Algorithm
An algorithm comprises a series of computational instructions
that convert the input into the desired output.

Why analyze algorithm


Examining an algorithm now involves estimating the resources it will
demand. While resources like memory, communication bandwidth, or
logic gates may be crucial in some cases, the primary focus is typically
on measuring the computational time.
By analyzing an algorithm, we get an idea of how the algorithm will
scale with the variation (change) in the input size. Another reason for
analysis of the algorithm is to compare various algorithms for solving
the same problem. Through this, we can determine which algorithm
will suit best the problem.
Factors considered in analysis

Time Space

Speed of Total Quality of


Operating Auxiliary
the amount of the
System storage
computer RAM computer
Factors considered in analysis:
Two factors considered while analyzing algorithms are time and space.
• Time: Using the actual run time on a specific computer isn't a reliable
basis for comparison, as it heavily relies on various factors like the
computer's speed, available RAM, operating system, and overall
quality. Instead, the complexity of an algorithm is determined by the
number of basic instructions executed in relation to the size of the
input data.
• Space: This factor holds less significance compared to time, as if
additional space is needed, it can always be obtained in the form of
auxiliary storage.
What is computational complexity
The amount of resources required to run an algorithm.

What is Big O Notation


Big O notation describes the complexity of your code using algebraic terms.
Big O notation is one of the most fundamental tools for computer scientists to
analyze the cost of an algorithm. Big-O is a standard mathematical notation that
shows how efficient an algorithm is in the worst-case scenario relative to its input
size. To measure the efficiency of an algorithm, we need to consider two things:
Time Complexity: How much time does it take to run completely?
Space Complexity: How much extra space does it require in the process?
Big-O notation captures the upper bound to show how much time or space an
algorithm would require in the worst-case scenario as the input size grows. It is
usually written as:
f(n)=O(inputSize)
Dominant Term

The dominant term is the


term that grows the
fastest.
For example, n² grows
faster than n, so if we have
something like g(n) = n² +
5n + 6, it will be big O(n²).
Best,
Average,
Worst
Complexity
Degree of Complexity
• Worst Case Analysis (Usually Done)
In the worst-case analysis, we calculate upper bound on running time of an
algorithm. We must know the case that causes maximum number of
operations to be executed. For Linear Search, the worst case happens when
the element to be searched (x in the above code) is not present in the
array.
• Average Case Analysis (Sometimes done)
In average case analysis, we take all possible inputs and calculate
computing time for all of the inputs. Sum all the calculated values and
divide the sum by total number of inputs.
• Best Case Analysis (Bogus)
In the best-case analysis, we calculate lower bound on running time of an
algorithm. We must know the case that causes minimum number of
operations to be executed. In the linear search problem, the best case
occurs when x is present at the first location.
Examples of Big O notation
Constant Time O(1)
• Constant time algorithms are described as O(1) in big-O notation. These
algorithms will always execute in some fixed time regardless of the size of
the input.
Linear time O(N)
• In this type of algorithms, the run time scales linearly in response to the
input size (N).
Quadratic Time O(N2)
• Quadratic time is common for algorithms that involve nested iterations
over the data set. Deeper nested iterations will result in O(N2), O(N4) etc.
This also includes simple sorting algorithms, such as bubble sort, selection
sort, and insertion sort.
Steps for Analysing Algorithms
The general step wise procedure for Big-O runtime analysis is as
follows:
• Figure out what the input size is and what n represents.
• Express the maximum number of operations, the algorithm performs
in terms of n.
• Ignore all excluding the highest order terms.
• Ignore all the constant factors.
Classification of Algorithms from the best-to-worst
performance (Running Time Complexity):
A logarithmic algorithm – O(log n)
Runtime grows logarithmically in proportion to n.
A linear algorithm – O(n)
Runtime grows directly in proportion to n.
A superlinear algorithm – O(n log n)
Runtime grows in proportion to n.
A polynomial algorithm – O(nc)
Runtime grows quicker than previous all based on n.
A exponential algorithm – O(2n)
Runtime grows even faster than polynomial algorithm based on n.
A factorial algorithm – O(n!)
Runtime grows the fastest and becomes quickly unusable for even small
values of n.
Big O
Notation

Big O is a relative representation of the complexity of an


algorithm. More specifically, the order of growth in the time
of execution depending on the length of the input.
Sources:
• http://staff.ustc.edu.cn/~csli/graduate/algorithms/book6/chap01.htm
• https://kldavenport.com/complexity-computability-part1/
• https://www.freecodecamp.org/news/big-o-notation-why-it-matters-and-why-it-doesnt-1674cfa8a23c/
• https://www.geeksforgeeks.org/analysis-of-algorithms-set-2-asymptotic-analysis/

Check this one:


• https://www.freecodecamp.org/news/asymptotic-analysis-explained-with-pokemon-a-deep-dive-into-complexity-analysis-8bf4396804e0/
video
• https://www.youtube.com/watch?v=MyeV2_tGqvw

You might also like