证明或反驳n ^ 2 - n +2∈O(n)

时间:2010-10-14 01:03:05

标签: big-o proof

对于我的算法分析课程,我从算法推导出函数f(n)= n ^ 2 - n + 2.现在我需要证明或反驳 f(n)∈O(n) 即可。显然它不是,所以我一直试图反驳这一点几个小时,但无法弄清楚如何去做。

为了反驳它,我需要证明消极:

∀M > 0, ∀N > 0, ∃n > N s.t. n^2 - n + 1 < M·n

我尝试过后退,但似乎无法到达任何地方。我也试图证明,根据我的判断,f(n)∈O(n):

∃M > 0, ∃N > 0 s.t. ∀n > N, n^2 - n + 1 ≥ M·n

......没有成功。我在做什么这么可怕的错误?

3 个答案:

答案 0 :(得分:3)

已经有一段时间了,但至少它不是大... ...

f(n) ∈ O(g(n) <--> (∃c,m>0) | (∀n>m) 0 < f(n) <= cg(n)

let f(n) = n^2 - n + 2
let g(n) = n

(∃c,m>0) | (∀n>m) 0 < n^2 - n + 2 <= cn
(∃c,m>0) | (∀n>m) 0 < n^2 - n <= cn
(∃c,m>0) | (∀n>m) 0 < n^2 <= cn + n
(∃c,m>0) | (∀n>m) 0 < n^2 <= 2cn + n
(∃c,m>0) | (∀n>m) 0 < n^2 <= (2c+1)n

let C = 2c+1

(∃C,m>0) | (∀n>m) 0 < n^2 <= Cn
(∃C,m>0) | (∀n>m) 0 < n <= C

(∃C,m>0) | (∀n>m) 0 < n <= C

There is no constant C s.t. 0 < n <= C for all sufficiently large n.
Therefore, n^2 - n + 2 is not O(n)

答案 1 :(得分:3)

假设有一些C&gt; 0和M> 0使得对于所有n> M,

所有n的

n ^ 2 - n + 1 <= Cn>中号

除以n

n - 1 + 1 / n&lt; = C,所有n>中号

等等

所有n的

n-1&lt; = C&gt;微米。

这是不可能的。

答案 2 :(得分:1)

矛盾证据怎么样?设置你的一般情况,使你试图表明它是真的,然后通过一个在每种情况下必须为假的陈述,那么整个证明必须是假的。