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

左心房为你撑大大i 提交于 2019-12-13 16:26:33

问题


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)?


回答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!




回答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.



来源:https://stackoverflow.com/questions/27387198/is-on-greater-than-o2log-n

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!