O(n)大于O(2 ^ log n)

时间:2014-12-09 19:27:25

标签: math optimization complexity-theory time-complexity asymptotic-complexity

我在数据结构书复杂性层次结构图中读到n大于2 log n 。但无法理解如何以及为什么。使用2的幂的简单示例作为n,我得到等于n的值。

书中没有提到,但我假设它基于2(因为上下文是DS复杂性)

  

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

     

b)O(pow(2,log n))优于O(n)吗?

2 个答案:

答案 0 :(得分:4)

注意2 log b n = 2 log 2 n / log 2 b < / sup> = n (1 / log 2 b)。如果log 2 b≥1(即b≥2),则整个表达式严格小于n,因此为O(n)。如果log 2 b&lt;如图1所示(即,b <2),则该表达式为n 1 +ε的形式,因此不是O(n)。因此,它归结为日志库的内容。如果b≥2,则表达式为O(n)。如果b < 2,则表达式为ω(n)。

希望这有帮助!

答案 1 :(得分:1)

在某处存在一个常数因子,但是假设log表示自然对数,那么使O(n)等于O(pow(2,log n))并不正确,假设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 表示自然对数。 / p>

O(n ** log(2)) < O(n ** 1)

因为log(2)&lt; 1,O(n ** 3)。当然,指数之间只有一个恒定的比例,但事实仍然是它们是不同的指数。 O(n ** 2)出于同样的原因,O(n) = O(n ** 1) > O(n ** log(2)) = O(2 ** log(n)) 大于{{1}}:尽管只有一个常数因子,3大于2,但它更大,订单也不同。

我们有

{{1}}

就像书中一样。