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

Posted 桃陉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了替换法(代入法)求解递归式相关的知识,希望对你有一定的参考价值。

一.原理

替换法(或者叫代入法)就是我们直接对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(log4431log3,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})} 算法复习求解递归式的方法

and 第四章 python

递归式的三种求解方式

分治策略(求解递归式的方法)

全排列 (递归求解+字典序) java 转载

递归思想