0% found this document useful (0 votes)
116 views14 pages

CSC 344 - Algorithms and Complexity

This document discusses analyzing the time complexity of algorithms. It introduces key concepts like big O notation, analyzing best case, worst case, and average case time complexity, and establishing the asymptotic time complexity of algorithms. Some common time complexities are discussed like constant, logarithmic, linear, quadratic, and exponential time. Methods for analyzing recursive and non-recursive algorithms are presented, including identifying the basic operation and setting up summations to count the total number of operations.

Uploaded by

Atefrachew Seyfu
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)
116 views14 pages

CSC 344 - Algorithms and Complexity

This document discusses analyzing the time complexity of algorithms. It introduces key concepts like big O notation, analyzing best case, worst case, and average case time complexity, and establishing the asymptotic time complexity of algorithms. Some common time complexities are discussed like constant, logarithmic, linear, quadratic, and exponential time. Methods for analyzing recursive and non-recursive algorithms are presented, including identifying the basic operation and setting up summations to count the total number of operations.

Uploaded by

Atefrachew Seyfu
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/ 14

CSC 344 – Algorithms and

Complexity
Lecture #2 – Analyzing Algorithms
and Big O Notation

Analysis of Algorithms
• Issues:
– Correctness
– Time Efficiency
– Space Efficiency
– Optimality
• Approaches:
– Theoretical Analysis
– Empirical Analysis
Analysis of Algorithms - Issues
• Issues:
– Correctness – Does it work as advertised?
– Time Efficiency – Are time requirements
minimized?
– Space Efficiency – Are space requirements
minimized?
– Optimality – Do we have the best balance between
minimizing time and space?

Theoretical Analysis Of Time


Efficiency
• Time efficiency is analyzed by determining the
number of repetitions of the basic operation as a
function of input size
• Basic operation: the operation that contributes most
towards the running time of the algorithm

T(n) ≈ copC(n)

Running Time Number Of Times


Execution Time
Basic Operation Is
For Basic
Executed
Operation
Input Size And Basic Operation Examples

Problem Input size measure Basic operation

Searching for key in a


Number of list’s items, i.e. n Key comparison
list of n items

Multiplication of two Matrix dimensions or total Multiplication of two


matrices number of elements numbers

Checking primality of n’size = number of digits (in


Division
a given integer n binary representation)

Typical graph Visiting a vertex or


#vertices and/or edges
problem traversing an edge

Empirical Analysis Of Time Efficiency


• Select a specific (typical) sample of inputs
• Use physical unit of time (e.g., milliseconds)
or
• Count actual number of basic operation’s
executions
• Analyze the empirical data
Best-Case, Average-Case, Worst-Case
• For some algorithms efficiency depends on
form of input:
– Worst case: Cworst(n) – maximum over inputs of
size n
– Best case: Cbest(n) – minimum over inputs of
size n
– Average case: Cavg(n) – “average” over inputs of
size n

Average-Case
• Average case: Cavg(n) – “average” over inputs
of size n
– Number of times the basic operation will be executed on
typical input
– NOT the average of worst and best case
– Expected number of basic operations considered as a
random variable under some assumption about the
probability distribution of all possible inputs
Example: Sequential Search

• Best case?
• Worst case?
• Average case?

Types Of Formulas For Basic Operation’s


Count
• Exact formula
e.g., C(n) = n(n-1)/2
• Formula indicating order of growth with specific
multiplicative constant
e.g., C(n) ≈ 0.5 n2
• Formula indicating order of growth with unknown
multiplicative constant
e.g., C(n) ≈ cn2
Order of Growth
• Most important: Order of growth within a
constant multiple as n→∞
• Example:
– How much faster will algorithm run on computer
that is twice as fast?
– How much longer does it take to solve problem of
double input size?

Values of Some Important Functions as n →∞

n log2n n nlog2n n2 n3 2n n!
10 3.3 101 3.3×101 102 103 103 3.6×106
102 6.6 102 6.6×102 104 106 1.3×1030 9.3×10157
103 10 103 1.0×104 106 109
104 13 104 1.3×105 108 1012
105 17 105 1.7×106 101 1015
0

106 20 106 2.0×107 101 1018


2
Asymptotic Order Of Growth
• A way of comparing functions that ignores
constant factors and small input sizes
– O(g(n)) - class of functions f(n) that grow no faster
than g(n)
– Θ(g(n)) - class of functions f(n) that grow at same
rate as g(n)
– Ω(g(n)) - class of functions f(n) that grow at least
as fast as g(n)

Big O
Big Omega

Big Theta
Establishing Order Of Growth Using
The Definition
• Definition: f(n) is in O(g(n)) if order of growth of
f(n) ≤ order of growth of g(n) (within constant
multiple), i.e., there exist positive constant c and non-
negative integer n0 such that
f(n) ≤ c g(n) for every n ≥ n0
• Examples:
– 10n is O(n2)
– 5n+20 is O(n)

Some Properties Of Asymptotic Order


Of Growth
• f(n) ∈ O(f(n))
• f(n) ∈ O(g(n)) iff g(n) ∈ Ω(f(n))
• If f (n) ∈ O(g (n)) and g(n) ∈ O(h(n)) ,
then f(n) ∈ O(h(n))
Note similarity with a ≤ b
• If f1(n) ∈ O(g1(n)) and f2(n) ∈ O(g2(n)) ,
then f1(n) + f2(n) ∈ O(max{g1(n), g2(n)})
Establishing Order Of Growth Using
Limits
0 order of growth of T(n) < order of growth of g(n)

lim T(n)/g(n) = c > 0 order of growth of T(n) = order of growth of g(n)


n→∞

∞ order of growth of T(n) > order of growth of g(n)

Examples:
• 10n vs. n2

• n(n+1)/2 vs. n2

L’Hôpital’s Rule And Stirling’s


Formula
• L’Hôpital’s rule:
If limn→∞ f(n) = limn→∞ g(n) = ∞ and
the derivatives f´, g´ exist,
then lim f(n) = lim f ´(n)
n→∞
→∞ g(n) n→∞
→∞ g ´(n)

– Example: log n vs. n

• Stirling’s formula: n! ≈ (2πn)1/2 (n/e)n


– Example: 2n vs. n!
Orders Of Growth Of Some Important
Functions
• All logarithmic functions loga n belong to the same class
Θ(log n) no matter what the logarithm’s base a > 1 is

• All polynomials of the same degree k belong to the same class:


aknk + ak-1nk-1 + … + a0 ∈ Θ(nk)

• Exponential functions an have different orders of growth for


different a’s

• order log n < order nα (α>0) < order an < order n! < order nn

Basic Asymptotic Efficiency Classes


1 constant
log n logarithmic
n linear
n log n n-log-n or linearithmic
n2 quadratic
n3 cubic
2n exponential
n! factorial
Time Efficiency Of Nonrecursive
Algorithms
General Plan for Analysis
• Decide on parameter n indicating input size
• Identify algorithm’s basic operation
• Determine worst, average, and best cases for
nput of size n
• Set up a sum for the number of times the basic
operation is executed
• Simplify the sum using standard formulas and
rules

Useful Summation Formulas And


Rules
Σl≤i≤u1 = 1+1+ ⋯ +1 = u - l + 1
In particular, Σl≤i≤u1 = n - 1 + 1 = n ∈ Θ(n)
Σ1≤i≤n i = 1+2+ ⋯ +n = n(n+1)/2 ≈ n2/2 ∈ Θ(n2)
Σ1≤i≤n i2 = 12+22+ ⋯ +n2 = n(n+1)(2n+1)/6 ≈ n3/3 ∈ Θ(n3)

Σ0≤i≤n ai = 1 + a + ⋯ + an = (an+1 - 1)/(a - 1) for any a ≠ 1


In particular, Σ0≤i≤n 2i = 20 + 21 + ⋯ + 2n = 2n+1 - 1 ∈ Θ(2n )

Σ(ai ± bi ) = Σai ± Σbi Σcai = cΣai Σl≤i≤uai = Σl≤i≤mai +


Σm+1≤i≤uai
Example 1 - Maximum Element

Example 2 - Element Uniqueness


problem
Example 3 - Matrix Multiplication

Example 4: Counting Binary Digits

You might also like