在以下视频中,对渐进分析进行了解释:
https://class.coursera.org/algo-004/lecture/169
但是我不明白什么是“低阶术语”和“常数因子”本身? (在视频的第4分钟)。
合并排序为6n*log2(n)+6n
。为什么6n
是低阶术语,而这里的constant factor
是6?这些术语有具体定义吗?
最佳答案
低阶字词:
这里的“顺序”是指order of magnitude。
在处理诸如x
或x
之类的非常简单的术语时,该概念易于理解和解释。 x
具有数量级1
,因为它可以写为x
,而x
具有2阶-数量级等于该项中变量的幂。但是,当您通过添加log
等使事情复杂化时,事情变得更加朦胧(至少对我而言)。 [1]
用某种非正式的术语来说,如果f(x)
趋于无穷大,则g(x)
的顺序比f(x) < g(x)
低。
只需替换一些非常大的x
值,就很容易看出f(n) = 6n
比g(n) = 6n*log2(n)
的顺序低(正确的方法是用数学方式证明它,但是用较大的值替换对于简单术语而言是有效的)。
terms本质上是由加/减符号分隔的事物。
因此,低阶术语只是比其他术语低阶的任何术语。
大概这与the leading-order term相反,ojit_a是数量级最大的术语。
[1]:我经常处理big-O,但是已经有一段时间了(高中吗?),因为我已经处理了数量级的基础知识,所以如果我可能错过或忘记了有关该部分的内容,我们深表歉意。
常数因子:
“因子”是乘法中的术语。对于n
,6n
和6
是因素。
常数因子就是不依赖于输入参数的任何事物(在这种情况下为n
)。
在这里,无论我们做什么n
,n
始终保持为6
,因此它是恒定的。
关于big-o - 算法中的常数因子和低阶项是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22614585/