【问题标题】:Big O notation 2^log(n) equals what Big O and can something be greater大 O 表示法 2^log(n) 等于大 O 并且可以更大
【发布时间】:2020-12-29 12:27:08
【问题描述】:

我想知道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),因此即使大 O 比预期大得多,证明是否成立?

【问题讨论】:

  • 大 O 不精确。这是一个上限。说 f 在 O(g) 中只是意味着 f 不比 g 差。如果你知道足够的知识来表达一个精确的渐近界,你可以使用"Θ(g)"(“Big theta”)。

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


【解决方案1】:

如果

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(log2n) 和 O(log99n) 是一回事,因为 logan = k logb n,其中k 是常数。但是 2logbn 是什么?

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

这与 n1000 相比如何?
假设:

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

所以在某些情况下,2logn = O(n1000) 是不正确的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多