CLRS 4.4用递归树方法求解递归式

4.4-1
递归树如下:
CLRS 4.4用递归树方法求解递归式_第1张图片
假设 n 是 2 的幂,子问题的规模每一步减少 1/2 ,最终达到边界条件,深度为 i 的结点对应规模为 n2i ,当 n2i=1 时即 i=lgn 时子问题规模为 1,因此树的层数为 lgn+1 。对于每一层的代价,每层都是上一层的 3 倍,因此深度为 i 的结点数 3i 。此层每个结点的代价 n2i ,因此第 i 层结点总代价 n(32)i ,树的最底层有 3lgn=nlg3 ,每个结点代价 T(1) ,所以有:

T(n)=i=0lgn1(32)in+Θ(nlg3)=n(3/2)lgn1(3/2)1+Θ(nlg3)=nΘ(nlg31)+Θ(nlg3)=Θ(nlg3)

下面用代入法验证:猜测 T(n)cnlg3dn
T(n)3c(n2)lg332dn+n=cnlg3dn(12d1)ncnlg3dn(c0,d12)

4.4-2
以下几个题目和 4.4-1 类似分析,在此不画出递归树。
假设 n 是 2 的幂,子问题的规模每一步减少 1/2 ,最终达到边界条件,深度为 i 的结点对应规模为 n2i ,当 n2i=1 时即 i=lgn 时子问题规模为 1,因此树的层数为 lgn+1 。对于每一层的代价,每层结点数都上一层一样,因此深度为 i 的结点数 1。此层结点的代价 (n2i)2 ,因此第 i 层结点总代价 (n2i)2 ,树的最底层有 1 个结点,结点代价 T(1) ,所以有:

T(n)=i=0lgn1(14)in2+1<n2i=0(14)i+1=n2111/4+1=Θ(n2)

猜测 T(n)cn2
T(n)c(n2)2+n2=cn2(34c1)n2cn2(c43)

4.4-3
由于以下题目类似上面两题,因此以下题目直接给出层数以及每层代价。
树的深度为 lgn ,每层的代价和为 2in+21i 。最底层为 4lgn=n2 ,因此有:

T(n)=i=0lgn1(2in+21i)+Θ(n2)=i=0lgn12in+i=0lgn121i+Θ(n2)=2lgn121+2i=0lgn1(12)i+Θ(n2)n1+2i=0(12)i+Θ(n2)=n1+2111/2+Θ(n2)=Θ(n2)+n+3=Θ(n2)

用代入法验证,猜测 T(n)cn2+2n :
T(n)4c(n/2)2+2n/2+ncn2+2n=Θ(n2)

4.4-4
树深 n ,每层 1 个结点,代价为 1。

T(n)=T(n1)+1=T(n2)+2==n

4.4-5
第一层 n ,第二层 (3/2)n1 ,第三层 (9/4)n31/2 ,最长的路径 n 层,由于该递归树不是满的,所以有:

T(n)i=0n(32)in=(3/2)n+113/21n2n(32)n+1=O(n(32)n)

用代入法验证,猜测 T(n)cn(3/2)n ,代入递推式可得
T(n)c(n1)(32)n1+c(n2)(32)n/2+n=cn(32)n12cn(32)n1c(32)n1+12cn(32)n/2+n=cn(32)n12cn(32)n/2((32)n/211)(c(32)n1n)cn(32)n(c1,n2)

4.4-6
最短路径有 log3n 层。每层代价为 cn 。所以有:

T(n)i=0log3ncn=cnlog3n=Ω(nlgn)

4.4-7
递归树如图:
CLRS 4.4用递归树方法求解递归式_第2张图片
假设 n 是 2 的幂次方,树的高度 lgn+1 ,每层代价 2icn ,一个 4lgn=n2 个叶子结点。因此有:

T(n)=i=0lgn12icn+Θ(n2)=cni=0lgn12i+Θ(n2)=cn2lgn121+Θ(n2)=Θ(n2)

代入法验证类似 4.4-1。在此略

4.4-8
树高 n/a ,每层代价 c(nia) 。因此有:

T(n)=i=0n/ac(nia)+(n/a)ca=i=0n/acni=0n/acia+(n/a)ca=cn2/aΘ(n)+Θ(n)=Θ(n2)

4.4-9
此题的递归式类似于 4.4-6。不失一般性,设 α1α 1/2α1
递归树有满的 log1/(1α)n 层,每层贡献 cn ,所以猜测 Ω(nlog1/(1α)n)=Ω(nlgn) ,有 log1/(α)n 层,每层贡献小于等于 cn ,所以猜测 O(nlog1/(α)n)=O(nlgn)
猜测 T(n)=Θ(nlgn) ,用代入法验证。
证明上界, T(n)dnlgn

T(n)=T(αn)+T((1α)n)+cndαnlg(αn)+d(1α)nlg((1α)n)+cn=dαnlgα+dαnlgn+d(1α)nlg(1α)+d(1α)nlgn+cn=dnlgn+dn(αlgα+(1α)lg(1α))+cndnlgn

dn(αlgα+(1α)lg(1α))+cn0 时成立,此等式等同于 d(αlgα+(1α)lg(1α))c ,由于 1/2α1 ,所以 lgα<0,lg(1α)<0 ,因此 αlgα+(1α)lg(1α)<0 。得到:
dcαlgα+(1α)lg(1α)

证明下界和上界类似。最后得到:
0<dcαlgα(1α)lg(1α)

你可能感兴趣的:(算法导论)