算法导论 4.2-4

来源:互联网 发布:visio流程图软件下载 编辑:程序博客网 时间:2024/05/06 16:55

1 题目

利用递归树来找出递归式T(n)=T(n-a)+T(a)+cn的渐近紧确解,其中a>=1且c>0是常数。

2 分析与解答

画出递归树:


从递归树可以得到:

  1. 递归树的高度为⌊ n/a ⌋ ;
  2. 深度为i的结点的代价总和为T(a)+c(n-ia)

忽略上下取整,可得T(n)=∑i=0n/a(T(a)+c(n-ia))=(n/a+1)T(a)+(cn2+acn)/2a=Θ (n2);

用替换法证明,首先证明T(n)=O(n2):

若渐近上界存在,可得T(n) <= c0 (n-a)2 + T(a) + cn =c0 n2 - (2ac0 n - ac02 - T(a) - cn);

显然当c0 >= c/a时,2ac0 n - ac0 2 - T(a) - cn >= cn - ac02 - T(a);

此时,只需n >= (ac0 2 + T(a))/c,就可令(2ac0 n - ac02 - T(a) - cn) >=0;

那么,当满足上述条件时,显然T(n) <= c0 n2,即T(n)=O(n2);

我们取c0 = c/a,则当n >= c/a + T(a)/c时,存在c0 =c/a,使T(n)<=c0 n2

再证明T(n)=Ω(n2):

根据渐近下界定义,可得T(n) >= c0 (n-a)2 + T(a) + cn =c0 n2 - 2ac0 n + ac02 + T(a) + cn;

当c0 = c/2a时,上式转换为T(n) >= c0 n2 + ac02 + cn >= c0 n2;

即存在c0 = c/2a,使得当n >= 0时,T(n)>=c0 n2 ,即T(n)=Ω(n2);

综上可得T(n)=Θ(n2)。证毕

原创粉丝点击