算法导论4-3
读书笔记
代入法求解递归式分为两步:
- 猜测解的形式。
- 用数学归纳法求出解中的常数,并证明解是正确的。
但是并不存在通用的方法来猜测递归式的正确解,但是也是有一些技巧的:
- 使用递归树辅助猜测
- 先猜测一个较为宽松的上界和下界,然后缩小范围
课后习题
证明:\(T(n) = T(n-1)+n\)的解为\(O(n^2)\)
猜测:\(T(n) \le {cn^2}\)
证明:
此处只要\(-2cn+c+n\le 0\),上述不等式成立;
所以
因此可令\(c = 1\),证毕。
证明: \(T(n)=T(\lceil n/2\rceil)+1\)的解为\(O(\lg{n})\)
证明:
令\(c=1\),上式成立,证毕;
我们看到\(T(n)=2T(\lfloor n/2 \rfloor)+n\)的解为\(O(n\lg{n})\)。证明\(\Omega(n\lg{n})\)也是这个递归式的解。从而得出结论: 解为\(\theta(n\lg{n})\)。
证明:
令\(c=1\),上式成立,证毕;
证明:通过做出不同的归纳假设,我们不必调整归纳证明中的边界条件,即可克服递归式(4.19)中边界条件\(T(1)=1\)带来的困难。
将假设换位\(T(n)\le{cn\lg{n}+d}\),其中\(d\ge0\)即可;
证明:归并排序的严格递归式(4.3)的解为\(\theta(n\lg{n})\)。
严格递归式4.3:
证明: \(T(n)=2T(\lfloor n/2 \rfloor+17)+n\)的解为\(O(n\lg{n})\)。
证明:
//todo
使用4.5节中的主方法,可以证明\(T(n)=4T(n/3)+n\)的解为\(T(n)=\theta(n^{\log_3^4})\)。说明基于假设\(T(n)\le{cn^{\log_3^4}}\)的代入法不能证明这一结论。然后说明如何通过减去一个低阶项完成代入法证明。
//todo
使用4.5节中的主方法,可以证明\(T(n)=4T(n/2)+n\)的解为\(T(n)=\theta(n^2)\)。说明基于假设\(T(n)=\le{cn^2}\)的代入法不能证明这一结论。然后说明如何通过减去一个低阶项完成代入法证明。
//todo
利用改变变量的方法求解递归式\(T(n)=3T(\sqrt{n})+\log{n}\)。你的解应该是渐近紧确的。不必担心数值是否为整数。
//todo