大O表示法2 ^ log(n)等于大O且可以更大

时间:2020-09-11 00:31:56

标签: algorithm math big-o proof coding-efficiency

我正在尝试确定是否f(n) = O(g(n))

我了解:

O(g(n)) = { f(n) there exists constants c, n0 > 0 such that 0 ≤ f(n) ≤ c × g(n) for all n ≥ n0 }

所以我有

f(n) = 2^(logn)
g(n) = n^1000

我知道f(n)通常与O(n)最相似。但是它小于g(n),因此即使Big O比预期大得多,证明也成立吗?

1 个答案:

答案 0 :(得分:0)

如果

f(n) = n
g(n) = n^1000

然后f = O(g)。大致来说,如果f=O(g)hg“大”,则f=O(h)

但是这里有一个陷阱:

f(n) = 2^(logn)

这个log有什么基础?通常,我们写类似O(logn)的东西,我们不在乎基础。 O(log 2 n)和O(log 99 n)是同一件事,因为log a n = k log b n,其中k是常数。但是2 log b n 是什么?

2^(logb n) = 2^((log2 n)(logb 2))
           = (2^(log2 n))^(logb 2)
           = n^(logb 2)

与n 1000 相比如何?
假设:

b = 2^(1/2000)  (just slightly more than 1)
2 = b^2000
logb 2 = 2000

因此在某些情况下,2 logn = O(n 1000 )是不正确的。

相关问题