【问题标题】:Prove that different definitions of big-Oh with n>=1 or n>N are equivalent证明具有 n>=1 或 n>N 的 big-Oh 的不同定义是等价的
【发布时间】:2018-08-28 20:12:53
【问题描述】:

我遇到了两个稍微不同的 big-oh 定义,需要证明它们彼此等价:

定义 1: f(n) = O(g(n)) 如果存在常数 c 和 N 使得 f(n) ≤ c g(n) 对于所有 n > N。

定义 2: f(n) = O(g(n)) 如果存在一个常数 c 这样 f(n) ≤ c g(n) 对于所有 n≥1。

直觉上我知道,如果我们选择足够大的 c,我们可以像定义 2 中那样摆脱 N。 但是如何证明定义1蕴涵定义2,反之亦然。

【问题讨论】:

  • 可能更适合cs.stackexchange.com
  • @juvian 在建议人们发布到其他 SE 网站时,还请他们删除原始问题。在两个不同的网站上出现相同的问题会导致人们回答在另一个网站上已经有答案的问题时会分散答案并浪费他们的时间。
  • @DavidRicherby 下次会做 ^^
  • @juvian 太棒了——谢谢!

标签: algorithm big-o proof


【解决方案1】:

它们实际上并不等价,并且 (1) 是正确的定义。

差异的一个例子是,在 (1) 下,n = O(n log(n)) 但在定义 (2) 下,它不可能是因为在 n=1,因为对于任何 cc g(n) = c*1*log(1) = 0 < 1

(1) 是正确定义的原因是因为 big-O 的目的是捕捉“接近无穷大”的行为,因此应该忽略小 n 的有限数量的特殊情况。

您会看到 (2) 出现的原因是因为它足以建立大 O。只是没有必要。

【讨论】:

  • 好的。但是我们还要提一下,如果g(n)>0 对于n 的所有值,等价性成立。其实选择c'=max(f(1)/g(1), ..., f(N)/g(N), c)就够了。
【解决方案2】:

让我更好地解释我对@btilly 的回答的评论。

g(n)>0 用于n 的所有值时,两个定义实际上是等价的。原因如下:

首先,当定义 2 成立时,定义 1 也成立。其实这种情况下我们可以选择N=0

现在假设对于某个常数c 和某个数字N 满足定义1。如果N=0,我们有定义2。如果N>0,考虑以下数量:

c1 := max{f(1)/g(1), ..., f(N)/g(N)}

商是有意义的,因为我们处于g(n) 始终为正的情况。此外,由于

f(n)/g(n) <= c1        (1<=n<=N)

我们得到

f(n) <= c1*g(n)        (1<=n<=N)

因为f(n) &lt;= c*g(n) 对应n&gt;N,所以发生了这种情况

f(n) <= max(c1,c)*g(n)     for all n

按照定义 2 的要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-29
    • 2023-03-08
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 2021-12-20
    相关资源
    最近更新 更多