算法导论4-3

读书笔记

代入法求解递归式分为两步:

  1. 猜测解的形式。
  2. 用数学归纳法求出解中的常数,并证明解是正确的。

但是并不存在通用的方法来猜测递归式的正确解,但是也是有一些技巧的:

  1. 使用递归树辅助猜测
  2. 先猜测一个较为宽松的上界和下界,然后缩小范围

课后习题

证明:T(n)=T(n1)+n的解为O(n2)

猜测:T(n)cn2

证明:

T(n)=T(n1)+nc(n1)2+n=cn22cn+c+ncn2

此处只要2cn+c+n0,上述不等式成立;

所以

cn2n1

因此可令c=1,证毕。

证明: T(n)=T(n/2)+1的解为O(lgn)

证明:

T(n)=T(n/2)+1=clgn2+1=clgnc+1clgn

c=1,上式成立,证毕;

我们看到T(n)=2T(n/2)+n的解为O(nlgn)。证明Ω(nlgn)也是这个递归式的解。从而得出结论: 解为θ(nlgn)

证明:

T(n)=2T(n/2)+n=cnlgn2+n=cnlgncn+ncnlgn

c=1,上式成立,证毕;

证明:通过做出不同的归纳假设,我们不必调整归纳证明中的边界条件,即可克服递归式(4.19)中边界条件T(1)=1带来的困难。

将假设换位T(n)cnlgn+d,其中d0即可;

证明:归并排序的严格递归式(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)=θ(nlog34)。说明基于假设T(n)cnlog34的代入法不能证明这一结论。然后说明如何通过减去一个低阶项完成代入法证明。

//todo

使用4.5节中的主方法,可以证明T(n)=4T(n/2)+n的解为T(n)=θ(n2)。说明基于假设T(n)=≤cn2的代入法不能证明这一结论。然后说明如何通过减去一个低阶项完成代入法证明。

//todo

利用改变变量的方法求解递归式T(n)=3T(n)+logn。你的解应该是渐近紧确的。不必担心数值是否为整数。

//todo

posted @   ijkzen  阅读(645)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 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】
点击右上角即可分享
微信分享提示