一.原理

替换法(或者叫代入法)就是我们直接对T(n)进行猜测,然后带入原递归式中进行验证。也就是猜测一个界,然后使用数学归纳法来证明这个界是对的。

步骤{\color{Red}步骤}步骤 :

(1)猜测解的形式

(2)使用数学归纳法求出解中的常数,并证明解是正确的。

猜测要靠经验,偶尔还要靠创造力{\color{Blue}猜测要靠经验,偶尔还要靠创造力}猜测要靠经验,偶尔还要靠创造力

二.举例

现在有递归式如下:


我们首先对其进行猜测(这个最终结果算的好不好就看你猜的准不准了,有点玄学):
T(n)=θ(nlogn)T(n) = \theta(nlogn) T(n)=θ(nlogn)
然后进行求解(在这里因为该式有两个区间,分别有不同的取值,所以我们使用数学归纳法):

当 n = 3 时:有 c1∗3log3≤1≤c2∗3log3c_{1}*3log3≤1≤c_{2}*3log3 c1​∗3log3≤1≤c2​∗3log3解得 0<c1≤13log3,c2≥13log3{\color{Red} 0<c_{1}\le \frac{1}{3log3},c_{2}\ge\frac{1}{3log3}} 0<c1​≤3log31​,c2​≥3log31​

当小于n时:假设命题成立

当等于n时:带入可得T(n)=T(n4)+T(3n4)+n≤c2∗n4∗logn4+c2∗3n4∗log3n4+nT(n) = T(\frac{n}{4}) + T(\frac{3n}{4}) + n \le c_{2}*\frac{n}{4}*log\frac{n}{4} + c_{2}*\frac{3n}{4}*log\frac{3n}{4} + n T(n)=T(4n​)+T(43n​)+n≤c2​∗4n​∗log4n​+c2​∗43n​∗log43n​+n

对等式右边化简:(c2∗n4∗(logn−log4))+(c2∗3n4∗(logn−log43))+n(c_{2}*\frac{n}{4}*(logn-log4))+(c_{2}*\frac{3n}{4}*(logn-log\frac{4}{3}))+n(c2​∗4n​∗(logn−log4))+(c2​∗43n​∗(logn−log34​))+n

展开合并得:c2nlogn−(c2n(log4−34log3))+nc_{2}nlogn-(c_{2}n(log4-\frac{3}{4}log3))+n c2​nlogn−(c2​n(log4−43​log3))+n

将后面的n提取出来可得:c2nlogn−(c2(log4−34log3)−1)nc_{2}nlogn-(c_{2}(log4-\frac{3}{4}log3)-1)n c2​nlogn−(c2​(log4−43​log3)−1)n

根据定义,需要使等式右边即上式 ≤ c2nlogn

所以只需要让 (c2(log4−34log3)−1)n≥0(c_{2}(log4-\frac{3}{4}log3)-1)n \ge 0(c2​(log4−43​log3)−1)n≥0

解得:c2≥1log4−34log3>0{\color{Red} c_{2} \ge \frac{1}{log4-\frac{3}{4}log3} >0} c2​≥log4−43​log31​>0

若想使 T(n)≤c2nlognT(n)≤c_{2}nlognT(n)≤c2​nlogn
只需取他们中较大的值:c2≥max(1log4−34log3,13log3){\color{Red} c_{2} \ge max( \frac{1}{log4-\frac{3}{4}log3},\frac{1}{3log3} )} c2​≥max(log4−43​log31​,3log31​)

此时不等式右边的约束条件的参数c2就取到了,同理我们可以解得不等式右边的约束变量c1的取值:
0<c1≤min(1log4−34log3,13log3){\color{Red} 0<c_{1}\le min(\frac{1}{log4-\frac{3}{4}log3},\frac{1}{3log3})} 0<c1​≤min(log4−43​log31​,3log31​)

得证:T(n)=θ(nlogn)T(n)=\theta(nlogn) T(n)=θ(nlogn)

替换法(代入法)求解递归式相关推荐

  1. 分治算法中的数学——求解递归式(代入法)

    前言 在运用分治法将原问题分解成多个子问题后,通常可以得到一个关于时间复杂度的递归式,如T(n)=T(n/2)+O(1),如何求解递归式并得出该算法的时间复杂度O(f(n))就是我们要解决的问题.一般 ...

  2. 4.3—代入法求解递归式

    对于代入法求解递归式,有以下自己的感触: 1.中间的证明过程用到了数学归纳法的思想: (1)首先证明初始条件是不是满足的,例如T(n)=O(nlgn),首先得验证当n=1的时候是不是满足条件,这里还牵 ...

  3. 算法导论 — 4.4 用递归树方法求解递归式

    笔记 在应用代入法求解递归式时,需要事先做出一个好的猜测.然而,有时候做出好的猜测是很困难的,此时可以考虑采用递归树方法.在递归树中,每个结点表示一个单一子问题的代价.创建递归树之后,对树的每层的各子 ...

  4. 第四章 分治策略 4.4 用递归树方法求解递归式

    4.4 用递归数方法求解递归式 一. 1.   在递归树中,每个结点表示一个单一子问题的代价,子问题对应某次递归函数调用.我们将树中每层中的代价求和,得到每层代价,然后将所有层的代价求和,得到所有层次 ...

  5. 用递归树方法求解递归式

    用递归树方法求解递归式 [备注:需要修改] 一个递归算法的递归式:T(n)=3T(n/4)+cn2T\left(n\right)=3T\left(n/4\right)+cn^2T(n)=3T(n/4) ...

  6. 【算法导论-主定理】用主方法求解递归式 学练结合版

    问题:若某算法的计算时间表示为递推关系式:T(N)=2T(N/2)+NlogN 且 T(1)=1 则该算法的时间复杂度为( ). O(Nsqrt(N)) O(NlogN) O(N(logN)^2) O ...

  7. 主定理(主方法)求解递归式

    1.主方法使用条件 用主方法求解递归式有条件,必须要求递归式为以下形式: 其中a>=1,b>1,f(n)渐进趋正,意为对足够大的n,f(n)是正的,即n>= n 0 n_0 n0​时 ...

  8. 用代入法求解递归式里的”微妙细节“【算法导论P49】

    当利用归纳法证明一个上界时,实际上证明一个更弱的上界可能会更难一些,因为为了证明一个更弱的上界,我们在归纳证明中也必须使用同样更弱的界. 例如: 考虑一下的递归式: T(n)=4T(n/3)+n 知道 ...

  9. 第四章 4.3 用代入法求解递归式

    4.3-1 证明:T(n)=T(n-1)+n的解为O(n2n^2). c(n−1)2+n≤n2cn2−2cn+c+n≤n2cn2−(2c−1)n+1≤n2 c(n-1)^2+n\le n^2 \\cn ...

最新文章

  1. fourinone学习笔记一(上手demo)
  2. ThinkPHP URL模式和URL重写
  3. python 2: 解决python中的plot函数的图例legend不能显示中文问题
  4. bzoj1110: [POI2007]砝码Odw
  5. angular1.x todolist 实现
  6. 北大青鸟的java课程_北大青鸟Java课程
  7. Java调用webservice
  8. Java 将HTML转为Word
  9. XCode下Swift – WebView IOS demo
  10. android PorterDuffXfermode ,PorterDuff.Mode 使用 以及Porter-Duff规则详解
  11. 扩展lucas学习笔记
  12. 指定JDK运行Jar包
  13. join()方法的使用
  14. 句向量 Sentence Embedding
  15. 优化问题中什么形式有闭式解
  16. pdf转换器如何切换语言类型
  17. Springboot+poi+实现导出导入Excle表格+Vue引入echarts数据展示
  18. 跟牛老师一起学WEBGIS——WEBGIS基础(地图切片)
  19. cdo (Climate Data Operators ) 常用命令介绍:(查看文件信息、多文件合并、数据裁剪、数据插值、数据计算。。)
  20. 用python海龟制图画花瓣_Python绘图之(5)turtle 画一朵花

热门文章

  1. 微信小程序音频(录制、播放、重录)功能
  2. 算法系列之-互为变形词
  3. 阳新一中2021高考成绩查询入口,点燃激情 赢在高考 阳新一中举办2021届高三年级高考励志演讲报告会...
  4. 你为什么在Windows桌面右键菜单上狂点“刷新”?
  5. GET请求URL拼接参数
  6. C语言——EOF的用法——while(scanf(“%d“,num)!=EOF)
  7. Android学习Flutter的Widget
  8. ExceL文档2.上传解析Excel文档
  9. 记2018年苏州的第一场雪
  10. 【硬件】各类显示屏幕