1 O、Ω、Θ 的定义
在数学、算法分析里,
最核心的区别是:
更严格地说,给定两个非负函数
-
:存在常数 ,使得对所有 ,意思是:
最终不会比 快超过一个常数倍。 -
:存在常数 ,使得对所有 ,意思是:
最终至少有 这么快的增长量级。 -
:存在常数 ,使得对所有 ,也就是:
意思是:
和 的增长速度是同一个数量级。
可以这样记:
| 符号 | 含义 | 直觉 |
|---|---|---|
| 上界 | “最多这么快” | |
| 下界 | “至少这么快” | |
| 上下界一致 | “就是这个量级” |
如果画成一种直观的“夹住”关系:
2 举例
比如
因为它最终不会超过某个常数倍的
同时:
因为它最终也至少是某个常数倍的
因此,我们有:
注意,这里有一个容易混淆的点:我们常用的大
这些都没错,因为它们都是上界,只是比较松。
相反,
再举一个例子,例如:
是对的,因为
在
但是
因为
反过来:
也是正确的。
3 另外一个判断方式:看 n → ∞ 的极限
另外一个很有用的判断方式是看极限。如果
那么通常可以直接得到
例如:
所以
在算法里,如果一个程序运行时间是
最准确的渐近描述通常是
而说