Four Asysmptotic Notations
Four Asysmptotic Notations
1. Asymptotic Notations
The Big O notation is useful when we only have upper bound on time
complexity of an algorithm. Many times we easily find an upper bound
by simply looking at the algorithm.
O(g(n)) = { f(n): there exist positive constants c and n 0, such that 0 ≤ f(n)≤ c×g(n) for
all n ≥ n0}
Example 7.1:
f(n) = 2n + 3
2n + 3 ≤ 10 n ∀ n ≥ 1
Here, c=10, n0=1, g(n)=n
=> f(n) = O(n)
Also, 2n + 3 ≤ 2 n + 3n
2n + 3 ≤ 5 n ∀ n ≥ 1
O(1) < O(log n) < O(√ n) < O(n) < O(n log n) < O(n2) < O(n3) < O(2n) < O(3n) < O(nn)
1.2. The Omega (Ω) notation:
Ω (g(n)) = { f(n): there exist positive constants c and n0 such that 0 ≤ c×g(n) ≤ f(n) for
all n ≥ n0 }.
Let us consider the same insertion sort example here. The time complexity of insertion
sort can be written as Ω(n), but it is not a very useful information about insertion sort,
as we are generally interested in worst case and sometimes in average case.
Example 7.2:
f(n) = 2n + 3
2n + 3 ≥ n ∀ n ≥ 1
Here, c=1, n0=1, g(n)=n
=> f(n) = Ω(n)
Also, f(n) = Ω(log n)
f(n) = Ω(√n)
Dropping lower order terms is always fine because there will always be a n0 after which
Θ(n3) has higher values than Θ(n2) irrespective of the constants involved. For a given
function g(n), we denote Θ(g(n)) as the following set of functions.
Θ(g(n)) = {f(n): there exist positive constants c1, c2 and n0 such that 0 ≤ c1×g(n) ≤
f(n) ≤ c2×g(n) for all n ≥ n0}
The above definition means, if f(n) is theta of g(n), then the value f(n) is always
between c1×g(n) and c2×g(n) for large values of n (n ≥ n0). The definition of theta also
requires that f(n) must be non-negative for values of n greater than n0.
Example 7.4:
f(n) = 2n + 3
1 * n ≤ 2n + 3 ≤ 5n ∀ n ≥ 1
Here, c1=1, c2 = 5, n0=1, g(n)=n
=> f(n) = Θ(n)
Example 7.5:
f(n) = 2n2 + 3n + 4
2n2 + 3n + 4 ≤ 2n2 + 3n2 + 4n2
2n2 + 3n + 4 ≤ 9n2
f(n) = O (n2)
also, 2n2 + 3n + 4 ≥ 1 * n2
f(n) = Ω (n2)
Example 7.6:
f(n) = n2 log n + n
n2 log n ≤ n2 log n + n ≤ 10 n2 log n
Ω (n2 log n) Θ(n2 log n) O(n2 log n)
Example 7.7:
f(n) = n!
=1×2×3×4×…×n
1×1×1×…×1≤1×2×3×4×…×n ≤ n×n×n×…×n
1 ≤ n! ≤ nn
Ω (1) O (nn) ( Here we cannot find the average or tight bound Θ)