非紧渐近符号
算法的时间复杂度
在了解接下来的非紧渐近符号之前, 我们先来思考如何用一般(紧)渐近符号描述一个算法的时间复杂度.
的充要条件定理
我们以一个定理来引入, 即渐近符号的夹逼定理, 或者更正式的称为:
Theta 的充要条件定理 (Theorem on the equivalence of and the combination of and )
如下: 对于两个正函数 和 , 有:
这个定理说明了 Big-Theta 符号是 Big-O 和 Big-Omega 的“交集”. 其证明也非常的简单, 可以通过分别证明充分性和必要性解决. 通过前面的学习, 完成它应该不是什么大问题, 故本书不再赘述.
通过这个定义, 我们可以更好的了解算法的时间复杂度是怎么表示的. 在之前我们已经聊过这个问题了, 现在再深入地解决一下:
- 所有的符号都并非只是描述算法的一种情况, 我们一般给出三种情况: 最坏, 最优(好)和一般1, 在无特定规定下, 符号描述可以参照脚注22.
- 表示在对应情况下, 算法的时间复杂度不超过 的常数倍.
- 表示在对应情况下, 算法的时间复杂度至少为 的常数倍.
- 表示在对应情况下, 算法的时间复杂度总在 的两个常数倍之间.
- 以上三个表达都只是简单描述, 任何需要专业化的表达, 最好参照前面的定义进行.
符号
接下来, 我们来看今天的主题——非紧渐近符号: 非紧渐近符号们提供了 非紧界(Non-tight bounds). 它们有时也被称为 严格渐近符号(Strict asymptotic notation) 或 小记号(Little notations)3.
我们来看 符号的定义:
与 主要区别在于: 在 中, 界 对某个常量 成立, 在 中, 界 对所有常量 成立. 这也就是说, 在 记号中, 当 趋向于无穷大时, 对于 就微不足道了, 即:
关于非紧界这个描述, 是因为 包含同阶函数而 反之. 如, 但 . 同理, 可以推出 . 在本章节的练习与回答中, 也可以通过这种方法判断正误.
符号
不严谨地说, 它与 符号相反. 我们可以利用 来定义它, 下面这个定义同样是它的一个性质:
形式化的定义是:
同样地, 我们有 . 例如, 但 不过 .
同时还要注意, 我们使用的是 , 这意味着关于 Big-O 和 little-o, Big-Omega 和 little-omega 上面这两个结论都不可逆.
另外我们同样有个极限表达:
相关比较性质
就像这样, 可以把渐近符号之间的比较与实数之间的比较形象类比在一起. 上面在遵照本书之前定义的同时, 默认函数在足够大时取非负值:
在深入定义之前, 我们可以将渐近记号与实数的大小关系对应起来, 这有助于记忆:
| 渐近记号 | 含义 | 对应实数关系 | 直观理解 |
|---|---|---|---|
| 同阶 | 和 增长速度相同 | ||
| 上界 | 的增长速度不快于 | ||
| 下界 | 的增长速度不慢于 | ||
| 非紧上界 | 的增长速度严格慢于 | ||
| 非紧下界 | 的增长速度严格快于 |
我们主要关注五个性质:自反性、对称性、传递性、转置对称性和三分性(三歧性).
如果关系 满足: 对任意函数 , 都有 4, 则称该关系具有自反性.
- (Theta): 自反
- 恒成立. 就像 .
- (Big-O): 自反
- 恒成立. 就像 .
- (Big-Omega): 自反
- 恒成立. 就像 .
- (Little-o): 非自反
- . 因为 不能严格小于它自己. 就像 不成立.
- (Little-omega): 非自反
- . 因为 不能严格大于它自己. 就像 不成立.
如果关系 满足: 推导出 , 则称该关系具有对称性.
- (Theta): 对称
- 若 , 则 . 就像 推导 .
- (Big-O): 非对称
- 成立, 但 . 就像 不能推导 .
- (Big-Omega): 非对称
- 成立, 但 .
- (Little-o): 非对称
- 若 , 则 .
- (Little-omega): 非对称
- 若 , 则 .
如果关系 满足: 且 推导出 , 则称该关系具有传递性.
- 所有记号 () 均具有传递性
- 例如: 若 且 , 则 .
- 这与实数性质一致: 若 且 , 则 .
下面是渐近记号特有的性质, 指两个关系互为“逆”关系.
定义: 若 推导出 (其中 是 的对应逆关系), 则称它们具有转置对称性.
- 与 互为转置对称
- 类比:
- 与 互为转置对称
- 类比:
- 是自身的转置对称
- 这也解释了为什么 具有对称性.
对于任意两个函数 和 , 必须且只能满足以下三种关系之一:
- (小于)
- (等于)
- (大于)
- 结论: 渐近记号满足三分性 (针对 的组合).
- 注意: 这里的三分性是指 这三个关系构成了完整的划分. 对于任意两个渐近非负函数 和 , 它们必然处于这三种关系中的一种.
- 这类似于实数的三分律: 对于任意 , 必有 、 或 .
- 陷阱提示: 和 不满足三分性.
- 例如: , .
- 我们有 成立, 但 不成立.
- 同时, 成立, 但 不成立.
- 但是, 如果我们考虑 和 的组合, 情况会变得复杂 (因为 和 可以同时成立, 即 ). 真正的“互斥且穷尽”的三分关系是由 、、 构成的.
根据上述性质, 我们可以将这些记号分类:
- 等价关系:
- 只有 是等价关系.
- 因为它满足自反性、对称性和传递性.
- 这意味着 将函数集合划分成了若干个等价类 (例如所有的多项式函数 都属于同一个等价类 ).
- 偏序关系:
- 和 是偏序关系.
- 因为它们满足自反性、反对称性 (注意: 这里的反对称性指如果 且 , 则 ) 和传递性.
- 它们描述了一种“大小”顺序, 但不要求任意两个元素都可比 (虽然在算法分析中常遇到的函数通常可比, 但数学上存在不可比的函数, 如震荡函数).
- 严格偏序关系:
- 和 是严格偏序关系.
- 因为它们满足传递性和非自反性(irreflexive).
- 它们描述了严格的“大小”关系, 不允许相等.
练习与回答
- 判断下列关于 Big-O 和 little-o 的陈述是否正确.
错误, 正确的应该是 或 . 其余四个均正确.
- 根据已知内容, 判断下列关于 Big-Omega 和 little-omega 陈述是否正确.
已知:
- 若 , 则
- 若 , 则 , 但不是
则判断:
- , 是否满足
- , 是否满足
- , 是否满足 又满足
对于上面已知内容, 可以在下一节具体学习. 以上除第2题以外都正确, 通过极限法证明即可.
- 假设 与 都是渐近非负函数. 使用 记号的基本定义来证明 .
证明:
根据 记号的定义, 需要证明存在正常数 , 使得对所有 , 有:
(1)证明上界:
显然,
因为 要么等于 , 要么等于 , 无论哪种情况都不超过两者之和.
取 .
(2)证明下界:
不失一般性, 假设 (另一种情况对称)
则
因此:
即:
取 .
结论: 存在 , 使得对充分大的 :
因此 .