15

我刚刚被介绍给 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。有人介意解释吗?

4

4 回答 4

20
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

(这是一个做得很糟糕的“证明”,但希望这个想法能显示出来。)

于 2013-01-10T01:09:48.200 回答
2
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
于 2013-01-10T01:07:36.993 回答
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)

于 2013-01-10T01:19:43.513 回答
0

除以 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 将给出解决方案

于 2016-03-07T02:03:21.470 回答