《算法设计与分析基础》Chapt 2 算法效率分析基础
2.1 分析框架
2.1.1 输入规模的度量
- 大多数情况,以输入数n
- 矩阵,维数
- 数值算法,数字的比特数
2.1.2 运行时间的度量单位
- 找出算法中最重要的操作,即基本操作
- 计算他们的运行次数
2.1.3 增长次数
logn n nlogn n2 n3 2n n!
2.1.4 算法的最优、最差和平均效率
- 最优效率
- 最差效率
- 平均效率
- 摊销效率
2.2 渐进符号和基本效率类型
2.2.1 介绍Ο,Ω,Θ
Ο (g(n))是增长次数小于等于g(n)的函数集合
Ω (g(n))是增长次数大于等于g(n)的函数集合
Θ(g(n))是增长次数等于g(n)的函数集合
2.2.2 符号Ο
2.2.5 渐进符号的有用特性
2.2.6 利用极限比较增长次数
2.2.7 基本的效率类型
2.3 非递归算法的数学分析
分析非递归算法效率的通用方案:
- 决定用哪个(些)参数作为输入规模的度量
- 找出算法的基本操作(作为一个规律,它总是位于算法的最内层循环)
- 检查基本操作的执行次数是否只依赖输入规模。如它还依赖一些其他的特性,如输入顺序等,则最差效率、平均效率以及最优效率需要分别研究。
- 建立一个算法基本操作执行次数的求和表达式
- 利用求和运算的标准公式和法则来建立一个操作次数的闭合公式,或至少确定它的增长次数。
求和运算的两个基本规则:
两个常见求和公式:
2.4 递归算法的数学分析
用递推式的形式来表达基本操作次数
- 决定用那些参数作为输入规模的度量
- 找出算法的基本操作
- 检查一下,对于相同规模的不同输入,基本操作的执行次数是否不同。如果不同,则必须对最差效率、平均效率以及最优效率作单独研究
- 对于算法基本操作的执行次数,建立一个递推关系以及相应的初始条件
- 解这个递推式,或者至少确定它的解的增长次数