证明大O符号

时间:2017-01-28 11:15:53

标签: algorithm big-o

证明 5n ^ 2 + 2n -1 = O(n ^ 2)。 这是我到目前为止所尝试的:

    5n^2 + 2n -1 <= 5n^2 + 2n^2 -n2 for n>1
    5n^2+ 2n -1 <= 6n^2  for n>1
    5n^2+ 2n -1 = O(n^2) [ c = 6n^2, n0 = 1 ]

这是证明Big O符号的正确方法吗?

3 个答案:

答案 0 :(得分:4)

要证明您的表达式为O(n^2),您需要表明它受M*n^2限制,对于某些常量M和一些最小n值。通过检查,我们可以证明您的表达受10*n^2 n=10的约束:

n = 10

5n^2 + 2n -1 <= 10*n^2
500 + 20 - 1 <= 1000
519 <= 1000

我们还可以证明表达式受10*n^2限制,任何值n 更高比10更高

n > 10

5n^2 + 2n -1 <= 10*n^2
5*(10+i)^2 + 2*(10+i) -1      <= 10*(10+i)^2
5*(i^2 + 20i + 100) + 2i + 19 <= 10*(i^2 + 20i + 100)
2i + 19 <= 5*(i^2 + 20i + 100)
2i + 19 <= 5i^2 + 100i + 500
5i^2 + 98i + 481 >= 0, which is true for `i > 0`

以下是关于Big-O表示法的维基百科文章的链接:

<强> https://en.m.wikipedia.org/wiki/Big_O_notation

<强>更新

请注意,在实践中,为了标记您的表达O(n^2),我们不会诉诸这种丑陋的书面证明。相反,我们只会认识到n^2术语将支配大n的表达式,并且整体行为将为O(n^2)。你的表达也是O(n^3)(和O(n^4)等)。

答案 1 :(得分:1)

我们有f(n)= 5 * n ^ 2 + 2 * n-1和g(n)= n ^ 2

为了证明f(n)= O(g(n)),我们只需找到2个常数,即c> 1。 0和n_0,s.t。 f(n)&lt; = c.g(n)对于所有n> = n0。

让我们选择一些c = 5.5的值。让我们评估并绘制f(n)和c * g(n)。正如我们从图中可以看到的那样,我们也可以从理论上看出它,因为n ^ 2/2 - 2 * n + 1 =(n ^ 2-4 * n + 2)/ 2 =((n-2)^ 2-对于所有n> = 4,2)/ 2> = 0,这意味着对于所有n> = n0 = 4,5 * n ^ 2 + 2 * n-1 <= 5.5 * n ^ 2。因此, f(n)= O(g(n))。 (证明)

enter image description here

答案 2 :(得分:0)

它看起来很好,我想如果你是为你的作业或其他正式工作做的那么你也可以用更正式的方式来做,比如选择常数(c)的值,例如f( n)/ g(n)。否则它看起来是正确的。