分析框架
-
时间复杂度:指出正在讨论的算法运行的有多快
-
空间复杂度:关心算法需要的额外空间
分析框架概要
- 算法的时间效率和空间效率都用输入规模的函数进行度量
- 我们用算法基本操作的执行次数来度量算法的时间效率。通过计算算法消耗的额外存储单元的数量来度量空间效率。
- 在输入规模相同的情况下,有些算法的效率会有显著差异,对于这样的算法,我们需要区别最差效率,平均效率和最优效率。
- 本框架关心一点:当算法输入规模趋近于无穷大时,它的运行时间函数的增长次数
分析非递归算法效率的通用方案:
- 决定用哪个参数表示输入规模
- 找出算法的基本操作(它总位于算法的最内层循环中)
- 检查基本操作的执行次数是否只依赖输入规模。如果它还依赖于一些其他的特性,则最差效率,平均效率以及最优效率就很有必要分别研究
- 建立一个算法基本操作执行次数次数的求和表达式
- 利用求和运算的标准公式和法则来建立一个操作次数的闭合公式,或者至少确定它的增长次数。
其中我们使用最为频繁的是这两个公式:
以及求和公式:
分析递归算法效率的通用方案
- 决定用哪个参数作为输入规模的度量标准。
- 找出算法的基本操作。
- 检查一下,对于相同规模的不同输入,基本操作的执行次数是否可能不同,如果有这种可能,则必须对最差效率,平均效率以及最优效率做单独研究。
- 对于算法基本操作的执行次数,建立一个递推关系以及相应的初始条件
- 解这个递推式,或者至少确定它的解的增长次数。