Search code examples
algorithmmathtime-complexitycomplexity-theory

Prove that n=o(2^{f(n)})?


Please Note: In this question log (n) is to the base of 2.

I know that f(n)=omega(log(n)) - in other words for every c>0: f(n)>=c*log(n) (starting from a specific location)

I want to prove that n=o(2^{f(n)}) - in other words for every d>0: n<=d*2^{f(n)} (starting from a specific location)

How may I prove this?


What I did?

I tried using limits which you can find here: https://math.stackexchange.com/questions/3895906/prove-that-the-following-limit-is-0

but it seems impossible so I'm trying to solve it the traditional way but get stuck.


Solution

  • From the premise for c = 2, there is an N0 > 0 such that f(n) >= 2 log(n) for all n > N0. By monotonicity of y = 2^x this is equivalent to 2^f(n) >= n^2 for all n > N0.

    For any d > 0 there is an N1 > 0 such that n^2 >= n/d for all n > N1 since the quadratic n^2 grows faster than any linear n/d.

    Combining the two inequalities, n/d <= n^2 <= 2^f(n) for all n > max(N0, N1).