读书笔记
代入法求解递归式分为两步:
- 猜测解的形式。
- 用数学归纳法求出解中的常数,并证明解是正确的。
但是并不存在通用的方法来猜测递归式的正确解,但是也是有一些技巧的:
- 使用递归树辅助猜测
- 先猜测一个较为宽松的上界和下界,然后缩小范围
课后习题
证明:T(n)=T(n−1)+n的解为O(n2)
猜测:T(n)≤cn2
证明:
T(n)=T(n−1)+n≤c(n−1)2+n=cn2−2cn+c+n≤cn2
此处只要−2cn+c+n≤0,上述不等式成立;
所以
c≥n2n−1
因此可令c=1,证毕。
证明: T(n)=T(⌈n/2⌉)+1的解为O(lgn)
证明:
T(n)=T(⌈n/2⌉)+1=clgn2+1=clgn−c+1≤clgn
令c=1,上式成立,证毕;
我们看到T(n)=2T(⌊n/2⌋)+n的解为O(nlgn)。证明Ω(nlgn)也是这个递归式的解。从而得出结论: 解为θ(nlgn)。
证明:
T(n)=2T(⌊n/2⌋)+n=cnlgn2+n=cnlgn−cn+n≥cnlgn
令c=1,上式成立,证毕;
证明:通过做出不同的归纳假设,我们不必调整归纳证明中的边界条件,即可克服递归式(4.19)中边界条件T(1)=1带来的困难。
将假设换位T(n)≤cnlgn+d,其中d≥0即可;
证明:归并排序的严格递归式(4.3)的解为θ(nlgn)。
严格递归式4.3:
T(n)={θ(1)ifn=1T(⌈n/2⌉)+T(⌊n/2⌋)+θ(n)ifn>1

证明: T(n)=2T(⌊n/2⌋+17)+n的解为O(nlgn)。
证明:
T(n)=2T(⌊n/2⌋+17)+n
//todo
使用4.5节中的主方法,可以证明T(n)=4T(n/3)+n的解为T(n)=θ(nlog43)。说明基于假设T(n)≤cnlog43的代入法不能证明这一结论。然后说明如何通过减去一个低阶项完成代入法证明。
//todo
使用4.5节中的主方法,可以证明T(n)=4T(n/2)+n的解为T(n)=θ(n2)。说明基于假设T(n)=≤cn2的代入法不能证明这一结论。然后说明如何通过减去一个低阶项完成代入法证明。
//todo
利用改变变量的方法求解递归式T(n)=3T(√n)+logn。你的解应该是渐近紧确的。不必担心数值是否为整数。
//todo
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】