《算法导论》第四章-第4节_练习(参考答案)

来源:互联网 发布:汤臣倍健 鱼油 知乎 编辑:程序博客网 时间:2024/05/17 22:01

算法导论(第三版)参考答案:练习4.4-1,练习4.4-2,练习4.4-3,练习4.4-4,练习4.4-5,练习4.4-6,练习4.4-7,练习4.4-8,练习4.4-9

Exercise 4.4-1

Use a reccursion tree to determine a good asymptotic upper bound on the recurrence T(n)=3T(n/2)+n. Use the substitution method to verify your answer.

假设 n 是2的幂(忍受不精确),则递归树为

01

注:请看更正版,一个更好的渐进紧确界。

树高 lgn,叶节点数量为 3lgn=nlg3,整棵树的代价:

T(n)=n+(32)n+(32)2n++(32)lgn1n+Θ(nlg3)=i=0lgn1(32)in+Θ(nlg3)=n(3/2)lgn1(3/2)1+Θ(nlg3)<n(3/2+1/2)lgn1(3/2)1+Θ(nlg3)<nn1(3/2)1+Θ(nlg3)=O(n2)

代入法证明 T(n)cn2+2n :
T(n)3c(n/2)2+2n/2+n=34cn2+2ncn2+2n

O(n2)T(n) 的一个渐进上界。

更正:

T(n)=n+(32)n+(32)2n++(32)lgn1n+Θ(nlg3)=i=0lgn1(32)in+Θ(nlg3)=n(3/2)lgn1(3/2)1+Θ(nlg3)=2n(3lgnn1)+Θ(nlg3)=23lgn2n+Θ(nlg3)=O(nlg(3))

代入法证明 T(n)cnlg3+2n :
T(n)3c(n/2)lg3+2n/2+n=cnlg3+2n=O(nlg3)

O(nlg3)T(n) 的一个渐进上界。

Exercise 4.4-2

Use a reccursion tree to determine a good asymptotic upper bound on the recurrence T(n)=T(n/2)+n2. Use the substitution method to verify your answer.

02

树高 lgn,叶节点数量为 1,整棵树的代价:

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

证明 T(n)cn2
T(n)c(n/2)2+n2cn2/4+n2(c/4+1)n2(c>4/3)cn2

得证。

Exercise 4.4-3

Use a reccursion tree to determine a good asymptotic upper bound on the recurrence T(n)=4T(n/2+2)+n. Use the substitution method to verify your answer.

03

树高 lgn,叶节点数量为 4lgn=n2,整棵树的代价:

注:以下递归树求解有误,请略过。看更正版(上图递归树形状不变,其中常数项代价需更改)

T(n)=n+((412)n+42)+((42(12)2)n+422)++((4lgn1(12)lgn1)n+4lgn12)+Θ(n2)=i=0lgn1(2in+22i+1)+Θ(n2)=i=0lgn12in+2i=0lgn14i+Θ(n2)=n2lgn121+24lgn141+Θ(n2)=n2n+2n213+Θ(n2)=Θ(n2)

更正:

T(n)=n+((412)n+4(2))+((42(12)2)n+42(1+2))+((43(12)3)n+43(12+1+2))++((4lgn1(12)lgn1)n+4lgn1(12lgn3++2))+Θ(n2)=i=0lgn1(2in)+i=1lgn1(4i+12i+2)+Θ(n2)=i=0lgn1(2in)+i=2lgn4i4i=1lgn12i+Θ(n2)=n2lgn121+84lgn+114+422lgn12+Θ(n2)=n2n+13(4n28)+4n8+Θ(n2)=Θ(n2)

证明 T(n)cn2+2n
T(n)4c(n/2)2+2n/2+ncn2+2n

得证 T(n)=O(n2)

Exercise 4.4-4

Use a reccursion tree to determine a good asymptotic upper bound on the recurrence T(n)=2T(n1)+1. Use the substitution method to verify your answer.

04

树高 n1,叶节点数量为 2n1,整棵树的代价:

T(n)=1+2+4++2n2+Θ(2n1)=2n11+Θ(2n1)=Θ(2n)

证明 T(n)<c2n+n
T(n)2c2n1+(n1)+1c2n+n

得证 T(n)=O(2n)

Exercise 4.4-5

Use a reccursion tree to determine a good asymptotic upper bound on the recurrence T(n)=T(n1)+T(n/2)+n. Use the substitution method to verify your answer.

画图可知递归树不是完全二叉树,从 lgnn1 层为非完全的。求整棵树代价中,可以推测 T(n)=O(2n)

证明 T(n)c2n4n

T(n)c2n14(n1)+c2n/24n/2+nc(2n1+2n/2)5n+1c(2n1+2n/2)4nc(2n1+2n1)4nc2n4n(n>1/4)(n>2)

得证 T(n)=O(2n)

Exercise 4.4-6

Argue that the solution to the recurrence T(n)=T(n/3)+T(2n/3)+cn, where c is a constant, is Ω(nlgn) by appealing to the recurrsion tree.

递归树直到 log3n 后才开始变得不完全,加上每层代价都为 cn,所以 T(n)Ω(nlog3n)=Ω(nlgn)

Exercise 4.4-7

Draw the recursion tree for T(n)=4T(n/2)+cn, where c is a constant, and provide a tight asymptotic bound on its solution. Verify your answer with the substitution method.

07

树高 lgn,叶节点数量为 4lgn=n2,整棵树的代价:

T(n)=cn+2cn+4cn++4lgn1cn2lgn1+Θ(n2)=i=0lgn12icn+Θ(n2)=cn2lgn121+Θ(n2)=Θ(n2)

证明 T(n)cn2+2cn
T(n)4c(n/2)2+2cn/2+cn=cn2+2cn

证明 T(n)cn2+2cn
T(n)4c(n/2)2+2cn/2+cn=cn2+2cn

得证 T(n)=Θ(n2)

Exercise 4.4-8

Use a recursion tree to give an asymptotically tight solution to the recurrence T(n)=T(na)+T(a)+cn, where a1 and c>0 are constants.

08

树高 n/a(假设 n 能被 a 整除),叶节点数量为 2,整棵树的代价:

T(n)=cn+cn+c(na)+c(n2a)++c(n(na1)a+a)+Θ(1)=cn2/a+c(na1)a1n1a1cia+Θ(1)=Θ(n2)+Θ(n)Θ(n)+Θ(1)=Θ(n2)

尝试用代入法,证明 T(n)cn2
T(n)c(na)2+ca+cn=cn22acn+ca2+ca+cn=cn2cn(2a1)+ca2+cacn2=O(n2)(a1>1/2, n>a2+a2a1)

证明 T(n)c(n+1)2 (这部分有trick)
T(n)c(na)2+ca+cn=cn22acn+ca2+ca+cn=cn2c(2anan)cn2+cncn2=Θ(n2)(a<1/2,n>2a)

决策树给出了精确值,可是代入法证明失败了。

Exercise 4.4-9

Use a recursion tree to give an asymptotically tight solution to the recurrence T(n)=T(αn)+T((1α)n)+cn, where α is a constant in the range 0<α<1, and c>0 is also a constant.

这里写图片描述

类似练习4.4-6。假设 α 更大,则树高 lg1αn。整棵树在 lg11αn 以上,每一层次代价都为 cn,所以

T(N)cnlg11αncnlgn((1α)12)

T(n)=Ω(nlgn)

代入法证明 T(n)dnlgn

T(n)dαnlg(αn)+c(1α)nlg((1α)n)+cn=dαnlgn+d(1α)nlgn+dαnlgα+d(1α)nlg(1α)+cndnlgn+(d(αlgα+(1α)lg(1α))+c)ndnlgn

只要 dcαlgα+(1α)lg(1α)T(n)=O(nlgn)

所以 T(n)=Θ(nlgn)

阅读全文
2 0
原创粉丝点击