0% found this document useful (0 votes)
16 views39 pages

Asymptotic Notation

The document discusses asymptotic notations and their definitions and properties. It defines big-O, big-Theta, big-Omega, little-o and little-omega notations and provides examples of functions that satisfy these notations. It also discusses relations between the notations and their use in describing algorithms' time complexities.

Uploaded by

thornemusau
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)
16 views39 pages

Asymptotic Notation

The document discusses asymptotic notations and their definitions and properties. It defines big-O, big-Theta, big-Omega, little-o and little-omega notations and provides examples of functions that satisfy these notations. It also discusses relations between the notations and their use in describing algorithms' time complexities.

Uploaded by

thornemusau
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/ 39

ANALYSIS AND DESIGN OF

ALGORITHMS

Asymptotic Notations
By Dr. Bonface Ngari
Sept-Dec 2017

-0 CSC311
Asymptotic Complexity
 Running time of an algorithm as a function of
input size n for large n.
 Expressed using only the highest-order term in
the expression for the exact running time.
 Instead of exact running time, say Q(n2).
 Describes behavior of function in the limit.
 Written using Asymptotic Notation.

-1 CSC311
Asymptotic Notation
 Q, O, W, o, w
 Defined for functions over the natural numbers.
 Ex: f(n) = Q(n2).
 Describes how f(n) grows in comparison to n2.
 Define a set of functions; in practice used to compare
two function sizes.
 The notations describe different rate-of-growth
relations between the defining function and the
defined set of functions.

-2 CSC311
Q-notation
For function g(n), we define Q(g(n)),
big-Theta of n, as the set:
Q(g(n)) = {f(n) :
 positive constants c1, c2, and n0,
such that n  n0,
we have 0  c1g(n)  f(n)  c2g(n)
}
Intuitively: Set of all functions that
have the same rate of growth as g(n).

g(n) is an asymptotically tight bound for f(n).

-3 CSC311
Q-notation
For function g(n), we define Q(g(n)),
big-Theta of n, as the set:
Q(g(n)) = {f(n) :
 positive constants c1, c2, and n0,
such that n  n0,
we have 0  c1g(n)  f(n)  c2g(n)
}

Technically, f(n)  Q(g(n)).


Older usage, f(n) = Q(g(n)).
I’ll accept either…

f(n) and g(n) are nonnegative, for large n.


-4 CSC311
Example
Q(g(n)) = {f(n) :  positive constants c1, c2, and n0,
such that n  n0, 0  c1g(n)  f(n)  c2g(n)}

 10n2 - 3n = Q(n2)
 What constants for n0, c1, and c2 will work?
 Make c1 a little smaller than the leading
coefficient, and c2 a little bigger.
 To compare orders of growth, look at the
leading term.
 Exercise: Prove that n2/2-3n= Q(n2)
-5 CSC311
Example
Q(g(n)) = {f(n) :  positive constants c1, c2, and n0,
such that n  n0, 0  c1g(n)  f(n)  c2g(n)}

 Is 3n3  Q(n4) ??
 How about 22n Q(2n)??

-6 CSC311
O-notation
For function g(n), we define O(g(n)),
big-O of n, as the set:
O(g(n)) = {f(n) :
 positive constants c and n0,
such that n  n0,
we have 0  f(n)  cg(n) }
Intuitively: Set of all functions
whose rate of growth is the same as
or lower than that of g(n).
g(n) is an asymptotic upper bound for f(n).
f(n) = Q(g(n))  f(n) = O(g(n)).
Q(g(n))  O(g(n)).
-7 CSC311
Examples
O(g(n)) = {f(n) :  positive constants c and n0,
such that n  n0, we have 0  f(n)  cg(n) }

 Any linear function an + b is in O(n2). How?


 Show that 3n3=O(n4) for appropriate c and n0.

-8 CSC311
W -notation
For function g(n), we define W(g(n)),
big-Omega of n, as the set:
W(g(n)) = {f(n) :
 positive constants c and n0,
such that n  n0,
we have 0  cg(n)  f(n)}
Intuitively: Set of all functions
whose rate of growth is the same
as or higher than that of g(n).
g(n) is an asymptotic lower bound for f(n).
f(n) = Q(g(n))  f(n) = W(g(n)).
Q(g(n))  W(g(n)).
-9 CSC311
Example
W(g(n)) = {f(n) :  positive constants c and n0, such
that n  n0, we have 0  cg(n)  f(n)}

 n = W(lg n). Choose c and n0.

- 10 CSC311
Relations Between Q, O, W

- 11 CSC311
Relations Between Q, W, O
Theorem : For any two functions g(n) and f(n),
f(n) = Q(g(n)) iff
f(n) = O(g(n)) and f(n) = W(g(n)).

 I.e., Q(g(n)) = O(g(n))  W(g(n))

 In practice, asymptotically tight bounds are


obtained from asymptotic upper and lower bounds.

- 12 CSC311
Running Times
 “Running time is O(f(n))”  Worst case is O(f(n))
 O(f(n)) bound on the worst-case running time 
O(f(n)) bound on the running time of every input.
 Q(f(n)) bound on the worst-case running time 
Q(f(n)) bound on the running time of every input.
 “Running time is W(f(n))”  Best case is W(f(n))
 Can still say “Worst-case running time is W(f(n))”
 Means worst-case running time is given by some
unspecified function g(n)  W(f(n)).

- 13 CSC311
Example
 Insertion sort takes Q(n2) in the worst case, so
sorting (as a problem) is O(n2). Why?

 Any sort algorithm must look at each item, so


sorting is W(n).

 In fact, using (e.g.) merge sort, sorting is Q(n lg n)


in the worst case.

 Later, we will prove that we cannot hope that any


comparison sort to do better in the worst case.

- 14 CSC311
Asymptotic Notation in Equations
 Can use asymptotic notation in equations to
replace expressions containing lower-order terms.
 For example,
4n3 + 3n2 + 2n + 1 = 4n3 + 3n2 + Q(n)
= 4n3 + Q(n2) = Q(n3). How to interpret?
 In equations, Q(f(n)) always stands for an
anonymous function g(n)  Q(f(n))
 In the example above, Q(n2) stands for
3n2 + 2n + 1.

- 15 CSC311
o-notation
For a given function g(n), the set little-o:
o(g(n)) = {f(n):  c > 0,  n0 > 0 such that
 n  n0, we have 0  f(n) < cg(n)}.

f(n) becomes insignificant relative to g(n) as n


approaches infinity:
lim [f(n) / g(n)] = 0
n

g(n) is an upper bound for f(n) that is not


asymptotically tight.
Observe the difference in this definition from previous
ones. Why?
- 16 CSC311
w -notation
For a given function g(n), the set little-omega:

w(g(n)) = {f(n):  c > 0,  n0 > 0 such that


 n  n0, we have 0  cg(n) < f(n)}.
f(n) becomes arbitrarily large relative to g(n) as n
approaches infinity:
lim [f(n) / g(n)] = .
n

g(n) is a lower bound for f(n) that is not


asymptotically tight.

- 17 CSC311
Comparison of Functions
fg  ab

f (n) = O(g(n))  a  b
f (n) = W(g(n))  a  b
f (n) = Q(g(n))  a = b
f (n) = o(g(n))  a < b
f (n) = w (g(n))  a > b

- 18 CSC311
Limits
 lim [f(n) / g(n)] = 0  f(n)  o(g(n))
n

 nlim

[f(n) / g(n)] <   f(n)  O(g(n))
 0 < lim [f(n) / g(n)] <   f(n)  Q(g(n))
n

 0 < lim [f(n) / g(n)]  f(n)  W(g(n))


n

 lim [f(n) / g(n)] =   f(n)  w(g(n))


n

 lim [f(n) / g(n)] undefined  can’t say


n

- 19 CSC311
Properties
 Transitivity
f(n) = Q(g(n)) & g(n) = Q(h(n))  f(n) = Q(h(n))
f(n) = O(g(n)) & g(n) = O(h(n))  f(n) = O(h(n))
f(n) = W(g(n)) & g(n) = W(h(n))  f(n) = W(h(n))
f(n) = o (g(n)) & g(n) = o (h(n))  f(n) = o (h(n))
f(n) = w(g(n)) & g(n) = w(h(n))  f(n) = w(h(n))

 Reflexivity
f(n) = Q(f(n))
f(n) = O(f(n))
f(n) = W(f(n))

- 20 CSC311
Properties
 Symmetry
f(n) = Q(g(n)) iff g(n) = Q(f(n))

 Complementarity
f(n) = O(g(n)) iff g(n) = W(f(n))
f(n) = o(g(n)) iff g(n) = w ((f(n))

- 21 CSC311
Common Functions

4 June 2021 Comp 122, Spring 2004


Monotonicity
 f(n) is
 monotonically increasing if m  n  f(m)  f(n).
 monotonically decreasing if m  n  f(m)  f(n).
 strictly increasing if m < n  f(m) < f(n).
 strictly decreasing if m > n  f(m) > f(n).

- 23 CSC311
Exponentials
 Useful Identities:
1 1
a 
a
( a m ) n  a mn
a m a n  a m n

 Exponentials and polynomials


nb
lim n  0
n  a

 n b  o( a n )

- 24 CSC311
Logarithms
a  b logb a
x = logba is the
exponent for a = bx. logc (ab)  logc a  logc b
logb a  n logb a
n

Natural log: ln a = logea


logc a
Binary log: lg a = log2a logb a 
logc b
lg2a = (lg a)2 logb (1 / a )   logb a
lg lg a = lg (lg a) 1
logb a 
loga b
a logb c  c logb a
- 25 CSC311
Logarithms and exponentials – Bases
 If the base of a logarithm is changed from one
constant to another, the value is altered by a
constant factor.
 Ex: log10 n * log210 = log2 n.
 Base of logarithm is not an issue in asymptotic
notation.
 Exponentials with different bases differ by a
exponential factor (not a constant factor).
 Ex: 2n = (2/3)n*3n.

- 26 CSC311
Polylogarithms
 For a  0, b > 0, lim n ( lga n / nb ) = 0,
so lga n = o(nb), and nb = w(lga n )
 Prove using L’Hopital’s rule repeatedly

 lg(n!) = Q(n lg n)
 Prove using Stirling’s approximation (in the text) for lg(n!).

- 27 CSC311
Exercise
Express functions in A in asymptotic notation using functions in B.

A B
5n2 + 100n 3n2 + 2 A  Q(B)

A  Q(n2), n2  Q(B)  A  Q(B)


log3(n2) log2(n3) A  Q(B)
logba = logca / logcb; A = 2lgn / lg3, B = 3lgn, A/B =2/(3lg3)
nlg4 3lg n A  w(B)
alog b = blog a; B =3lg n=nlg 3; A/B =nlg(4/3)   as n
lg2n n1/2 A  o (B)
lim ( lga n / nb ) = 0 (here a = 2 and b = 1/2)  A  o (B)
n
- 28 CSC311
Summations – Review

4 June 2021 Comp 122, Spring 2004


Review on Summations
 Why do we need summation formulas?
For computing the running times of iterative
constructs (loops). (CLRS – Appendix A)
Example: Maximum Subvector
Given an array A[1…n] of numeric values (can be
positive, zero, and negative) determine the
subvector A[i…j] (1 i  j  n) whose sum of
elements is maximum over all subvectors.

1 -2 2 2
- 30 CSC311
Review on Summations
MaxSubvector(A, n)
maxsum  0;
for i  1 to n
do for j = i to n
sum  0
for k  i to j
do sum += A[k]
maxsum  max(sum, maxsum)
return maxsum

n n j
T(n) =    1
i=1 j=i k=i

NOTE: This is not a simplified solution. What is the final answer?

- 31 CSC311
Review on Summations
 Constant Series: For integers a and b, a  b,
b

1  b  a  1
i a

 Linear Series (Arithmetic Series): For n  0,


n
n( n  1)

i 1
i  1  2   n 
2

 Quadratic Series: For n  0,


n
n(n  1)(2n  1)
 i 2  12  22    n 2 
i 1 6

- 32 CSC311
Review on Summations
 Cubic Series: For n  0,
n
n 2
( n  1) 2


i 1
i 3
 13
 2 3
   n 3

4

 Geometric Series: For real x  1,


n 1
n
x 1

k 0
x  1 x  x  x 
k 2 n

x 1


1
For |x| < 1, 
k 0
x 
k

1 x

- 33 CSC311
Review on Summations
 Linear-Geometric Series: For n  0, real c  1,

n 1 n2
n
 (n  1)c  nc c

i 1
ic  c  2c    nc 
i 2 n

(c  1) 2

 Harmonic Series: nth harmonic number, nI+,


1 1 1
Hn  1  
2 3 n
n
1
   ln(n)  O (1)
k 1 k

- 34 CSC311
Review on Summations
 Telescoping Series:
n

a
k 1
k  ak 1  an  a0

 Differentiating Series: For |x| < 1,



x

k 0
kx 

k

1  x 2

- 35 CSC311
Review on Summations
 Approximation by integrals:
 For monotonically increasing f(n)
n n n 1

 f ( x)dx   f (k )   f ( x)dx
m 1 k m m

 For monotonically decreasing f(n)


n 1 n n

 f ( x)dx   f (k )   f ( x)dx
m k m m 1

 How?

- 36 CSC311
Review on Summations
 nth harmonic number
n n1
1 dx

k 1 k
  x
 ln(n  1)
1

n n
1 dx

k 2 k
  x
 ln n
1

n
1
   ln n  1
k 1 k

- 37 CSC311
Reading Assignment

- 38 CSC311

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy