Big-O符号说明/证明

时间:2015-01-20 16:33:09

标签: big-o

在确定一个函数是否是另一个函数的大数据时,我仍然无法理解更复杂的证明,例如: (f(n)= O(g(n))。

示例:

F(n) http://upurs.us/image/63058.gif

G(n) http://upurs.us/image/63059.gif

我意识到我们希望在条件下满足证明,当n> 1时,S.T f(n)< = C1 * g(n)。湾我看过无数的教程,无法掌握这个概念。在列出的示例中,我将如何选择常量并使用该信息来完成证明?谢谢。

2 个答案:

答案 0 :(得分:2)

您需要做的就是将f(n)g(n)的重要字词视为n转到infinity

现在考虑f(n)

fn

g(n)gn

现在结论:
enter image description here

答案 1 :(得分:0)

我认为这个问题确实有两个部分。首先是确定哪个函数(如果有的话)具有更大的渐近增长。第二个是证明你所确定的是正确的。

至于第一部分,我建议只查看序列中最高功率的术语。 f g 的条款均为2.5( 5n ^ 2 * sqrt(n) 6n ^ 2 * sqrt(n),分别)。在丢弃系数后,当 n 变为无穷大时,哪一个增长得更快?事实证明,丢弃系数会产生相同的精确函数(即 n ^ 2 * sqrt(n)),因此函数具有相等的渐近增长。这意味着我们可以证明 f = O(g) g = O(f)

为了证明第一个,我们只需找到一些 C k ,以便所有 n &gt; k ,我们有 C * g(n) &gt; F(N)。我认为最简单的方法之一是通过矛盾证明。也就是说,假设所有 C k f(n) &gt; C <所有 n&gt;的/ em> * g(n) ķ。然后,在减少表达式之后,我们可以选择 C k 的大值来证明这个假设是错误的。