[关闭]
@rg070836rg 2015-10-17T01:22:22.000000Z 字数 1711 阅读 1919

算法概论作业2.2

算法概论作业


2.3

(a)

由题解,假定对于某个常数c,有O(n)≤cn
且T(n)=3T(n/2)+O(n)
那么有

T(n)≤≤≤…3T(n/2)+cn3[3T(n/4)+cn/2]+cn=9T(n/4)+3cn/2+cn9[3T(n/8)+cn/4]+3cn/2+cn=27T(n/8)+9cn/4+3cn/2+cn

从而,通项公式为:
T(n)≤3kT(n/2k)+∑i=0k−1(3/2)icn

很明显,k=log2n


(b)

由题解,假定对于某个常数c,有O(1)≤c
且T(n)=T(n−1)+O(1)
那么有

T(n)≤≤≤…T(n−1)+cT(n−2)+2cT(n−3)+3c

从而,通项公式为:
T(n)≤T(n−k)+kc

很明显,k=n
所以,
T(n)=O(n)


2.4

首先,介绍求解递归式的几个方法:
1 主方法
1.gif-28.5kB
2 替代法

  1. 猜测解的形式。
  2. 通过推导验证。
  3. 解出常数。

3 递归树方法
4 递推法


算法A:

T(n)=5T(n/2)+O(n)
很明显,递归式满足主定理模式,a=5,b=2,f(n)=n
logba=log25,
又∵log25>1,
∴T(n)=O(nlog25)


算法B:

T(n)=2T(n−1)+O(1)
采用递推法,

T(n)≤≤≤…≤2T(n−1)+c22T(n−2)+2c23T(n−3)+3c2nT(1)+nc

所以,T(n)=O(2n)


算法C:

T(n)=9T(n/3)+O(n3)
很明显,递归式满足主定理模式,a=9,b=3,f(n)=n3
logba=log39=2,
又∵n2<n3,
T(n)=O(n3)


当n足够大时,很明显Ta(n)<Tc(n)<Tb(n)
所以算法A最优。


2.5

a)用递推法很快可以求出

T(n)=O(nlog32)

b)用主方法

T(n)=O(nlog45)

c)用主方法
T(n)=O(nlogn)

d)用主方法
T(n)=O(n2logn)

e)用主方法
T(n)=O(n3logn)

f)用替代法,由于前面是log25,所以我们猜测大影响在后面
T(n)=O(n3/2logn)

g)用递推法

T(n)=O(n)

h) 用递推法
T(n)=O(nc+1)

i) 用递推法
T(n)=O(cn)

j)用递推法
T(n)=O(2n)

k)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注