我正在尝试确定是否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比预期大得多,证明也成立吗?
答案 0 :(得分:0)
如果
f(n) = n
g(n) = n^1000
然后f = O(g)
。大致来说,如果f=O(g)
和h
比g
“大”,则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 )是不正确的。