关闭

主定理笔记(master theorem)

399人阅读 评论(0) 收藏 举报
分类:
T(1)=d and for n>1,T(n)=aT(n/b)+cn n is a
power of b;prove
z if a<b, T(n)=O(n);
z if a=b, T(n)=O(nlogn);
z if a>b, T(n)=O(nlogba)//b为底 logba 为n的次数


由问题有
T(1)=d
T(n)=aT(n/b)+cn,且有n=b^a
这个递推式描述了大小为n的原问题分成若干个大小为n/b的子问题,其中a个子问题需要求解,而cn是合并各个子问题的解需要的工作量。下面使用扩展递推技术对通用分治递推式进行推导
T(n)=aT(n/b)+cn
=a(aT(n/b^2)+c*n/b)+cn
…………………………
=a^aT(n/b^a)+a^(a-1)*c*n/b^(a-1)+...+a*c*n/b+cn
=c∑(i从0到a)[a^(a-i)]*n/b^(a-i)(因为n=b^a)
=c∑(i从0到a)[a^(a-i)]*b^i
=c*a^a∑(i从0到a)[(b/a)^i]
这个求和是个几何级数,其值依赖与比率b/a,注意到a^a=a^(logbn)=n^(logba),则有下3种情况:
(1)a>b:∑(i从0到a)[(b/a)^i]<1/(1-b/a),由于
a^a=n^(logba),所以T(n)=O(n^(logba))
(2)a=b:∑(i从0到a)[(b/a)^i]=a+1=logbn+1,又
a^a=n^(logba)=n,所以T(n)=O(nlogbn)
(3)a<b:∑(i从0到a)[(b/a)^i]=[(b/a)^(a+1)-1]/(b/a-1)=O((b/a)^a),所以,T(n)=O(((b/a)^a)*a^a)=O(b^a)=O(n)
也就是
if a<b, T(n)=O(n);
z if a=b, T(n)=O(nlogn);
z if a>b, T(n)=O(nlogba)//b为底 logba 为n的次数

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场