1.迭代法
-
步骤
- 不断将递推方程的右部替代左部
- 直到出现初值
- 将初值带入,进行化简
- 用数学归纳法进行验证
- 备注:迭代法也可以进行换元后进行如例三
-
例子
- 汉诺塔问题
- T(n)=2T(n-1)+1
- T(1)=1
-
T(n) = 2 T(n-1) + 1
= 2[2T(n-2) + 1] + 1
= 2^2 T(n-2) + 2 + 1
......
= 2^(n-1)T(1) + 2^(n-2)+2^(n-3)+...+2+1
=2^(n-1) + 2^(n-1)-1= 2^n-1
T(1)=1, 2^(n-2)+2^(n-3)+...+2+1等比数列
- 数学归纳法验证:
- 第一步:n=1:T(0)=0,T(1)=1
- 第二步:假设n时,T(n)=2^n-1成立
- 第三步:带入n+1
-
T(n+1)=2T(n)+1
=(2^n-1)*2+1
=2^(n+1)-2+1
=2^(n+1)-1
- 插入排序
- W(n)=W(n-1)+n-1
- W(1)=0
-
W(n)=W(n-1) + n-1
=[W(n-2) + n-2] + n-1
= W(n-2) + n-2 + n-1
......
= W(1) + 1 +2 + ...+(n-2) + (n-1)=1 +2 + ... +(n-2) +(n-1)
= m(n-1)/2
1 +2 + ... +(n-2) +(n-1)等差数列化简即可
- 二分排序
- W(n)=2W(n/2)+n-1
- W(1)=0
- 换元为:
-
W(2^k) = 2W(2^(k-1)) + 2^k-1
-
W(0) = 0
-
W(n)= 2W(2^(k-1))+ 2^k -1
= 2[2W (2^(k-2))+ 2^(k-1) -1]+ 2^k -1
= 2^2W(2^(k-2))+2^k -2+2^k -1
= 2^2[2W(2^(k-3))+ 2^(k-2) -1]+ 2^k -2+2^k-1
......
= 2^kW(1)+ k2^k -(2^(k-1) + 2^(k-2) + ...+ 2+1)= k2^k -2^k +1
=nlogn-n+1(2^(k-1) + 2^(k-2) + ...+ 2+1)等比数列
nlogn-n+1换元换回来
-
- 汉诺塔问题