Is O(n) greater than O(2^log n)

14,095

Solution 1

Notice that 2logb n = 2log2 n / log2 b = n(1 / log2 b). If log2 b ≥ 1 (that is, b ≥ 2), then this entire expression is strictly less than n and is therefore O(n). If log2 b < 1 (that is, b < 2), then this expression is of the form n1 + ε and therefore not O(n). Therefore, it boils down to what the log base is. If b ≥ 2, then the expression is O(n). If b < 2, then the expression is ω(n).

Hope this helps!

Solution 2

There is a constant factor in there somewhere, but it's not in the right place to make O(n) equal to O(pow(2,log n)), assuming log means the natural logarithm.

n = 2 ** log2(n)            // by definition of log2, the base-2 logarithm
  = 2 ** (log(n)/log(2))    // standard conversion of logs from one base to another
n ** log(2) = 2 ** log(n)   // raise both sides of that to the log(2) power

Since log(2) < 1, O(n ** log(2)) < O(n ** 1). Sure, there is only a constant ratio between the exponents, but the fact remains that they are different exponents. O(n ** 3) is greater than O(n ** 2) for the same reason: even though 3 is bigger than 2 by only a constant factor, it is bigger and the Orders are different.

We therefore have

O(n) = O(n ** 1) > O(n ** log(2)) = O(2 ** log(n))

Just like in the book.

Share:
14,095
HimanshuR
Author by

HimanshuR

Updated on June 04, 2022

Comments

  • HimanshuR
    HimanshuR almost 2 years

    I read in a data structures book complexity hierarchy diagram that n is greater than 2log n. But cannot understand how and why. On using simple examples in power of 2 as n, I get values equal to n.

    It is not mentioned in book , but I am assuming it to base 2 ( as context is DS complexity)

    a) Is O(n) > O(pow(2,logn))?

    b) Is O(pow(2,log n)) better than O(n)?