找到c和n0的Big-O表示法

时间:2013-01-10 00:56:44

标签: big-o

我刚刚介绍了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 个答案:

答案 0 :(得分:16)

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)。


为了提供更好的证据,实际上需要显示两个常量,cn0f(n) <= cg(n) for all n > n0。{/ p>

使用我们的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

(这是一个非常糟糕的'证据',但希望这个想法能够显示出来。)

答案 1 :(得分: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

答案 2 :(得分:2)

如果您有f(n) = (3n^3 + 20n^2 + 5),并且想要查看O(g(n)) g(n) = n^3是否f(n)/g(n),我相信您可以将3n^3 + 20n^2 + 5的限制视为n-&gt;无穷大。

由于限制为3,您可以看到n^3的增长速度仅为3n^3 + 20n^2 + 5。当你有一个像O(f(n))这样的多项式时,你可以通过检查判断出最大的订单项总是3*(1^3) + 20*1^2 + 5 = 28的值。

找到n 0 和C并不是很有帮助,但这是确定某事物顺序的相对简单的方法。正如其他人在这里所说,你可以选择n 0 ,然后计算C.

如果您选择n 0 = 1,那么您有c1^3 <= 28。所以如果{{1}},c必须是28.你已经看到有一个c和n0满足这个条件,所以你已经证明f(n)是O(n ^ 3)

答案 3 :(得分: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将给出解决方案