替换法(代入法)求解递归式

一.原理

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

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

(1)猜测解的形式

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

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

二.举例

现在有递归式如下:

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

当 n = 3 时:有 c 1 ∗ 3 l o g 3 ≤ 1 ≤ c 2 ∗ 3 l o g 3 c_{1}*3log3≤1≤c_{2}*3log3 c13log31c23log3解得 0 < c 1 ≤ 1 3 l o g 3 , c 2 ≥ 1 3 l o g 3 {\color{Red} 0<c_{1}\le \frac{1}{3log3},c_{2}\ge\frac{1}{3log3}} 0<c13log31,c23log31

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

当等于n时:带入可得 T ( n ) = T ( n 4 ) + T ( 3 n 4 ) + n ≤ c 2 ∗ n 4 ∗ l o g n 4 + c 2 ∗ 3 n 4 ∗ l o g 3 n 4 + n T(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)+nc24nlog4n+c243nlog43n+n

对等式右边化简: ( c 2 ∗ n 4 ∗ ( l o g n − l o g 4 ) ) + ( c 2 ∗ 3 n 4 ∗ ( l o g n − l o g 4 3 ) ) + n (c_{2}*\frac{n}{4}*(logn-log4))+(c_{2}*\frac{3n}{4}*(logn-log\frac{4}{3}))+n c24nlognlog4))+(c243n(lognlog34))+n

展开合并得: c 2 n l o g n − ( c 2 n ( l o g 4 − 3 4 l o g 3 ) ) + n c_{2}nlogn-(c_{2}n(log4-\frac{3}{4}log3))+n c2nlogn(c2n(log443log3))+n

将后面的n提取出来可得: c 2 n l o g n − ( c 2 ( l o g 4 − 3 4 l o g 3 ) − 1 ) n c_{2}nlogn-(c_{2}(log4-\frac{3}{4}log3)-1)n c2nlogn(c2(log443log3)1)n

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

所以只需要让 ( c 2 ( l o g 4 − 3 4 l o g 3 ) − 1 ) n ≥ 0 (c_{2}(log4-\frac{3}{4}log3)-1)n \ge 0 (c2(log443log3)1)n0

解得: c 2 ≥ 1 l o g 4 − 3 4 l o g 3 > 0 {\color{Red} c_{2} \ge \frac{1}{log4-\frac{3}{4}log3} >0} c2log443log31>0

若想使 T ( n ) ≤ c 2 n l o g n T(n)≤c_{2}nlogn T(n)c2nlogn
只需取他们中较大的值: c 2 ≥ m a x ( 1 l o g 4 − 3 4 l o g 3 , 1 3 l o g 3 ) {\color{Red} c_{2} \ge max( \frac{1}{log4-\frac{3}{4}log3},\frac{1}{3log3} )} c2max(log443log31,3log31)

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

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

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比奇堡咻飞兜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值