Let f(n) = n lg n and g(n) = n^2. (a) Show that f(n) is O(g(n). (b) Argue that lg n/Squareroot n is O(Squareroot n). (c) Justify that g(n) is not O(f(n)). (d) Exhibit that f(g(n)) is O(g(f(n)). (e) Prove that g(f(n)) is not O(f(g(n)).
Expert Answer
From defination, we know that Big-O notation denotes the upper bound or more formally a description of a function in terms of big O notation usually only provides an upper bound on the growth rate of the function.
1.
It is quite clear that nlogn grows less than n^2, so it is sensible saying
nlogn = O(n^2)
according to the defination provided above
red: n^2
blue: n*log(n)
2
Same goes here
We know that growth rate of (log n) < growthrate of (n)
similarlly growth rate of (log n/ sqrt(n)) < growthrate of (n/(sqrt(n))
or growth rate of (log n/ sqrt(n)) < growthrate of ((sqrt(n))
Simple mathematics! clear enough?
now according to defination we can say log n/sqrt(n) = O(sqrt(n))
so the stament is valid
3
As already said in question 1, growth rate of g(n) is more than growth rate of f(n) so g(n) is not O(f(n))
4.
f(g(n)) = n^2 log(n^2) = 2 n^2 log n
g(f(n)) = (n log n)^2 = n^2 log(n) * log(n)
So from the graph it is clear that growth rate of f(g(n)) < growth rate of g(f(n))
so it is valid that f(g(n)) > g(f(n))
red: g(f(n)) = n * n * log(n) * log(n)
blue: f(g(n)) = 2 * n*n * log(n)
5.
Since 4 is valid, 5 is not valid, quite obhious!