根据this book,大O意味着:
f(n)= O(g(n))表示c·g(n)是f(n)的上限。因此存在一些常数c,使得f(n)总是≤c·g(n),足够大的n(即,对于某些常数n0,n≥n0)。
我对下面的大O方程有了理解
3n2 - 100n + 6 = O(n2),因为我选择c = 3且3n2> 3n2 - 100n + 6;
3如何成为一个因素?在3n2 - 100n + 6中,如果我们降低低位项-100n和6,那么3n2和3.n2不一样吗?如何解决这个等式?
答案 0 :(得分:2)
我冒昧地将这个问题略微解释为:
为什么和具有相同的渐近复杂度。
为此,定义应该是双向的。
<小时/> 第一:
让
然后对于,总是满足不等式。
<小时/> 反过来说:
让
我们向上打开一个抛物线,因此再次有一些,之后总是满足不等式。
答案 1 :(得分:1)
y = 3n ^ 2(上图)vs y = 3n ^ 2 - 100n + 6
考虑上面的草图。根据您的定义,对于足够大的n(即,对于某些常数n0,n≥n0),3n ^ 2仅需要大于3n ^ 2 - 100n + 6 。在这种情况下,让n0 = 5(它可能会稍微小一些,但是很明显哪个图表在n = 5时更大,所以我们只需要这样做)。
从图中可以清楚地看出,在我们绘制的范围内,3n ^ 2> = 3n ^ 2 - 100n + 6。 3n ^ 2 - 100n + 6大于3n ^ 2的唯一方法就是让它变得更加陡峭。
但3n ^ 2和3n ^ 2 - 100n + 6的梯度分别为6n和6n - 100,因此3n ^ 2 - 100n + 6不能生长得更陡峭,因此必须始终位于下方。
所以你的定义成立 - 3n ^ 2 - 100n + 6&lt; = 3n ^ 2所有n&gt; = 5
答案 2 :(得分:1)
我不是专家,但这看起来与我们在实际分析课程中的相似。
基本上,如果你有类似f(n) = 3n^2 − 100n + 6
的东西,那么“增长最快”的术语会“胜出”其他术语,当你真的很大的时候。
所以在这种情况下3n^2
超过了100n
,当n非常大时。
另一个例子是f(n) = n/n^2
或f(n) = n! * n^2
。
第一个变小,因为n根本无法跟上n ^ 2。在第二个例子中n!显然比n ^ 2增长得快,所以我想那个答案应该是f(n) = n!
然后,因为n ^ 2在技术上会停止与大n的关系。
像+6这样没有影响它们的术语是常数,因为即使n增长它们也不会增长,因此它们的含量甚至更少。
当n非常大时,这就是所发生的事情。如果你的n是34934854385754385463543856,那么n ^ 2是一个大于100n的地狱,因为n ^ 2 = n * n = 34934854385754385463543856 * 34934854385754385463543856。
答案 3 :(得分:1)
让我们看看您为f(n) in O(g(n))
发布的定义:
f(n)= O(g(n))表示c·g(n)是f(n)的上限。因此有 存在某个常数c ,使得f(n)总是≤c·g(n), 足够大n (即,对于某些常数n0,n≥n0)。
因此,我们只需要找到一组满足
的常量(c,n0)f(n) < c · g(n), for all n > n0, (+)
但此设置并非唯一。即,找到常数(c,n0)使得(+)成立的问题是退化。实际上,如果存在任何这样的常数对,则将存在无限量的不同的这样的对。
请注意,在这里我已经转向严格的不平等,这实际上只是一个品味问题,但我更喜欢后一种惯例。现在,我们可以用更容易理解的术语重新陈述Big-O定义:
...如果我们能找到一个常数c,我们可以说f(n)是O(g(n)) f(n)小于c·g(n)或全部n大于n0,即全部 N'GT; N0
现在,让我们看一下你的函数f(n)
f(n) = 3n^2 - 100n + 6 (*)
让我们将你的函数描述为它的最高项和另一个函数的总和
f(n) = 3n^2 + h(n) (**)
h(n) = 6 - 100n (***)
我们现在分别研究h(n)和f(n)的行为:
h(n) = 6 - 100n
what can we say about this expression?
=> if n > 6/100, then h(n) < 0, since 6 - 100*(6/100) = 0
=> h(n) < 0, given n > 6/100 (i)
f(n) = 3n^2 + h(n)
what can we say about this expression, given (i)?
=> if n > 6/100, the f(n) = 3n^2 + h(n) < 3n^2
=> f(n) < c*n^2, with c=3, given n > 6/100 (ii)
确定!
因此,我们已经证明(+)金为常数集**(c,n0)=(3,1),随后, f(n)在O(n ^ 2)< / em>的
有关渐近行为的参考,请参见例如