一、对算法分析具有重要意义的函数值
二、递归算法的数学分析
- 递归函数有两个要素: 结束条件和递归公式
- 步骤:
- 决定用哪些参数作为输入规模的度量(eg:数组元素的个数)
- 找出算法基本操作
- 检查一下,对于相同规模的不同输入,基本操作的执行次数是否不同(如果不同的话则要对最差效率和最优效率进行研究)
- 建立一个递推关系以及相应的初始条件
- 例题:
F(n){
if n=0 return 1;
else return F(n-1)*n
当n>0时,M(n) = M(n-1) + 1;
M(n)表示规模为n的阶乘的乘法数量
M(n-1)表示做完一次乘法后,阶乘规模变为n-1
1 表示做一次乘法F(n-1)*n
- M(n)=M(n-1)+1 = M(n-2)+2 = M(n-3)+3 = M(n-i)+i=M(n-n)+n = M(0)+n = n
三、递推关系的一些求解方法
1.前向替代法
x(n)=2x(n-1) +1
x(1)=1 x(2) =3 x(3)=7 x(4)=15
==>x(n)=-1
2.反向替代法(如例题)
3.二阶常系树线性递推式
ax(n)+bx(n-1)+cx(n-2) = 0的特征方程为a+br+c = 0
- 第一种情况,如果r1,r2是不相等的实根 x(n)=
- 第一种情况,r1=r2 x(n)=
四、极限法判断时间复杂度
- 判断
- 判断