算法设计与分析 - 基本概念与解递归方程
🕒 阅读时间:10 分钟📝 字数:3763👀 阅读量:Loading...
📚 参考书籍
计算机算法设计与分析(第5版)
ISBN编号:9787121344398
💡 有趣的发现: ISBN编号相同却有两个不同封面的书,可能是出版商重印了。
🔍 一些基本概念
计算复杂度
-
上界(Upper Bound): 算法复杂度的上界用大O表示法表示,即 ,表示算法的运行时间不会超过 的常数倍。
-
确界(Tight Bound): 算法复杂度的确界用Θ表示法表示,即 ,表示算法的运行时间既有上界又有下界,都是 的常数倍。
-
下界(Lower Bound): 算法复杂度的下界用Ω表示法表示,即 ,表示算法的运行时间至少是 的常数倍。
注意:一般而言,我们通常考虑最差情况的复杂度,也就是 。
验证复杂度公式
极限法验证
原理:通过计算 与 的比值极限来确定渐进复杂度。
- 若 ,则
- 若 ,则
- 若 ( 为常数),则
验证方法:对于给定的 和 ,计算 。
例子:对于 和 ,计算极限
这是一个正常数,所以 。
提示:一般而言,我们只需要考虑最高次项的系数,除非实在是不确定才会用到这个公式。
💻 解递归方程
主定理方法
主定理(Master Theorem)是分析递归算法时间复杂度的一个强大工具,适用于形如 的递归方程,其中:
- 是子问题的数量
- 是子问题规模缩减因子
- 是分解和合并的额外工作量
主定理的三种情况:
- 若 对某个 :
- 此时
- 若 对某个 :
- 此时
- 若 对某个 ,且对某个常数 和足够大的 有 :
- 此时
例子:分析归并排序
- 这里 , ,
- 计算
- 因为 ,符合情况2()
- 所以
递归树方法
递归树方法是一种可视化的方式来分析递归方程。
基本步骤:
- 将递归方程表示为一棵树,根节点代表原问题
- 每个内部节点表示一个子问题,边表示递归调用
- 对每一层计算总的工作量
- 累加所有层的工作量得到总复杂度
例子:分析
递归树:
- 第0层(根):工作量 =
- 第1层:2个子问题,每个工作量 = ,总工作量 =
- 第2层:4个子问题,每个工作量 = ,总工作量 =
- …
- 第层:个子问题,每个工作量 = ,总工作量 =
总工作量 = (项) =
代入法
代入法(也称为归纳法)是通过猜测解的形式,然后使用数学归纳法证明猜测是正确的。
基本步骤:
- 猜测解的形式(通常基于直觉或经验)
- 使用归纳法证明这个猜测
例子:证明 的解为
假设 对某个常数
验证:
当 时,,假设成立。
这要没ai,写latex得累死…
算法设计与分析 - 基本概念与解递归方程
作者:xingwangzhe
本文链接:https://xingwangzhe.fun/posts/55cab229/
本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

留言评论