在下面的视频中描述了一些渐近分析问题: https://class.coursera.org/algo-004/lecture/169
但我无法理解"低阶术语"和"常数因子"本身? (这是视频的第4分钟。)
合并排序为6n*log2(n)+6n
。为什么6n
在视频中提到的情况下为低阶词,而6为constant factor
?这些术语有具体的定义吗?
答案 0 :(得分:20)
低阶词:
此处的“订单”是指order of magnitude。
在处理x
或x2
等非常简单的术语时,这个概念很容易理解和解释。 x
具有数量级1
,因为它可以写为x1
,x2
具有阶数2 - 数量级等于变量的幂术语。但是当你通过添加log
使事情变得复杂时,事情变得更加模糊(至少对我而言)。 [1]
在某种非正式的术语中,如果f(x)
g(x)
趋于无穷大,则f(x) < g(x)
的排序低于x
。
很容易看出f(n) = 6n
比g(n) = 6n*log2(n)
更低的顺序,只需用n
替换一些非常大的值(正确的方法是在数学上证明它,但是用一个大的价值往往适用于简单的术语)。
terms基本上是用加/减符号分隔的东西。
因此,低阶项是任何比其他项更低阶的项。
据推测,这与the leading-order term相反,{{3}}是具有最大数量级的术语。
[1]:我经常与big-O打交道,但是已经有一段时间了(高中?)因为我已经处理了数量级的基础知识,所以如果我可能遗漏或遗忘了某些事情,那么道歉关于那部分。
常数因素:
“因子”是乘法中的一个术语。对于6n
,6
和n
是因素。
常数因子只是不依赖于输入参数的任何事物(在这种情况下为n
)。
在这里,无论我们做什么n
,6
都将始终保持6
,因此它会保持不变。
答案 1 :(得分:1)
当big-O中的函数有多个术语时,你可以保留一个增长得更快的术语,因为它迟早会“隐藏”其他术语。你可以乘以任何常数。
O(6.N.Lg(N) + 6.N)
与O(6.N.Lg(N))
或O(N.Lg(N))
或O(0.01.N.Lg(N) + 42.sin(N) - 1.745 + 1/N)
相同......
主导词总是N.Log(N)
(对数的基础并不重要)。
答案 2 :(得分:0)
通常,您最好在论坛上提出与Coursera课程相关的问题,其他学生可以帮助您锻炼您自己无法理解的任何内容。
假设我们有一个多项式函数F(n)=5n³+ 8n + 3,n³具有最高指数5n³是多项式的最高阶项。所有其他条款因此都是低阶条款。
现在他们为什么不相关。好吧,这是大O符号的定义
T(n)= O(F(n))如果我们能找到c和n0,例如所有n> = n0 T(n)&lt; = C.F(n)
我们可以证明对于任何多项式函数F(N)= Cn.N ^ n + Cn-1.N ^(n-1)+ ... + C0 F(N)= O(C.N ^ n)此证明在视频中给出。
我们还可以证明,对于每个C和K,C.N ^ K = O(N ^ K)(简单地取c = C)
最后我们可以证明,如果F(n)= O(G(n))和G(n)= O(K(n))那么F(n)= O(K(n)) ,这个属性叫做传递性。
然后我们得出结论,每个函数T(n)= O(F(n))其中F是多项式也是O(n ^ k)其中k是多项式F的最高指数。
为简单起见,我们将F降低到最高阶项,并在保持数学正确性的同时降低常数因子。