我刚刚被介绍给 Big-O 表示法,并且有人给了我一些问题。但是,我对如何确定n0
. 我必须证明这3n^3 +20n^2 + 5
是 O(n^3)。到目前为止,我有:
3n^3 + 20n^2 + 5 <= cn^3
(3 - c)n^3 + 20n^2 + 5 <= 0
5 <= n^3(c - 3) - 20n^2
5 <= n^2(n(c - 3) - 20)
我只是不知道如何从这里找到 n0 和 c。有人介意解释吗?
我刚刚被介绍给 Big-O 表示法,并且有人给了我一些问题。但是,我对如何确定n0
. 我必须证明这3n^3 +20n^2 + 5
是 O(n^3)。到目前为止,我有:
3n^3 + 20n^2 + 5 <= cn^3
(3 - c)n^3 + 20n^2 + 5 <= 0
5 <= n^3(c - 3) - 20n^2
5 <= n^2(n(c - 3) - 20)
我只是不知道如何从这里找到 n0 和 c。有人介意解释吗?
3n^3 + 20n^2 + 5 <= cn^3
=> 20n^2 + 5 <= cn^3 - 3n^3
=> 20n^2 + 5 <= n^3(c - 3)
=> 20n^2/n^3 + 5/n^3 <= n^3(c - 3)/n^3
=> 20/n + 5/n^3 <= c - 3
=> c >= 20/n + 5/n^3 + 3
根据您希望大于条件开始的位置,您现在可以选择 n0 并找到值。
例如,对于 n0 = 1:
c >= 20/1 + 5/1 + 3 which yields c >= 28
值得注意的是,根据 Big-O 表示法的定义,并不要求边界实际上如此紧密。由于这是一个简单的函数,您可以猜测并检查它(例如,为 c 选择 100 并注意该条件确实渐近地为真)。
例如:
3n^3 + 20n^2 + 5 <= (5 * 10^40) * n^3 for all n >= 1
这个不等式成立就足以证明 f(n) 是 O(n^3)。
为了提供更好的证明,实际上需要证明两个常数,c
并且n0
存在使得f(n) <= cg(n) for all n > n0
.
使用我们的 c = 28,这很容易做到:
3n^3 + 20n^2 + 5 <= 28n^3
20n^2 + 5 <= 28n^3 - 3n^3
20n^2 + 5 <= 25n^3
20/n + 5/n^3 <= 25
When n = 1: 20 + 5 <= 25 or 25 <= 25
For any n > 1, 20/n + 5/n^3 < 25, thus for all n > 1 this holds true.
Thus 3n^3 + 20n^2 + 5 <= 28n^3 is true for all n >= 1
(这是一个做得很糟糕的“证明”,但希望这个想法能显示出来。)
3n^3 + 20n^2 + 5 <= cn^3
5 + 20n^2 <= n^3(c - 3)
5/n^3 + 20/n <= c - 3
For n0 = 20, c >= 5, since 5/n^3 + 20/n < 2
如果你有 f(n) = (3n^3 + 20n^2 + 5)
并且你想看看它是否O(g(n))
在哪里g(n) = n^3
,我相信你可以将极限f(n)/g(n)
作为n->无穷大。
因为限制是 3,你可以看到它的3n^3 + 20n^2 + 5
增长速度只有n^3
. 当你有一个多项式时3n^3 + 20n^2 + 5
,你可以通过检查知道最大的阶项总是 的值O(f(n))
。
找到 n 0和 C 并没有多大帮助,但它是确定某事物的顺序的一种相对简单的方法。正如其他人在这里所说,您可以选择 n 0然后计算 C。
如果你选择 n 0 = 1,那么你有3*(1^3) + 20*1^2 + 5 = 28
. 所以如果c1^3 <= 28
,c 必须是 28。你已经证明有 ac 和 n0 满足这个条件,所以你已经证明 f(n) 是 O(n^3)
除以 n^3 我们得到 3+20/n+5/n^3<=C 20/n+5/n^3<=C-3
取 C 值为 10 20/n+5/n^3<=7
我们需要针对不同的 n 值解决这个问题,直到满足条件 C=10 并且 n0 = 3 将给出解决方案