递归树推导

主定理证明
设总层数为t 所以tbn=1\frac{t}{b^n}=1 (n规模大的问题,每次分为原问题的1/b ,t次分成1)
t=logbnt=log_{b}n
总代价
主定理证明
假定a是b(b>1)的幂
主定理的三种情况分别对应这个式子的的三种情况
1.树的总代价由叶结点的代价决定,
2.树的总代价均匀分布在树的所有层次上
3.树的总代价由根结点的代价决定

case1:

若对某个常数ε>0f(n)=O(nlogbaε)f(n)=O(n^{log_{b}a-ε})g(n)=O(nlogba)g(n)=O(n^{log_{b}a})可转换为
存在f(n)=O(nc)f(n)=O(n^{c}) ,其中 c<logbac<log_{b}a
T(n)=i=0taiO((nbi)c)T(n)=\sum_{i=0}^ta^{i}O((\frac{n}{b^i})^c)
=O(i=0tai(nbi)c)=O(\sum_{i=0}^ta^{i}(\frac{n}{b^i})^c)
=O(nci=0t(abc)i)=O(n^c\sum_{i=0}^t(\frac{a}{b^c})^i)
求和项为等比数列
=O(nc(abc)t)=O(n^c(\frac{a}{b^c})^t)
ncbtc=1\frac{n^c}{b^{tc}}=1
=O(at)=O(a^t)
at=alogbn=aloganlogab=aloganlogbaa^t=a^{log_{b}n}=a^\frac{{log_{a}n}}{{log_{a}b}}=a^{log_{a}n*log_{b}a}
=O(nlogba)=O(n^{log_{b}a})
得证

case2:

f(n)=Θ(nlogba)f(n)=Θ(n^{log_{b}a})g(n)=Θ(nlogba)g(n)=Θ(n^{log_{b}a})
假设f(n)=Θ(nlogba)f(n)=Θ(n^{log_{b}a}) 所以f(nbi)=Θ((nbi)logba)f(\frac{n}{b^i})=Θ((\frac{n}{b^i})^{log_{b}a})
T(n)=Θ(i=0tai(nbi)logba)T(n)=Θ(\sum_{i=0}^ta^{i}(\frac{n}{b^i})^{log_{b}a})
=Θ(nlogbai=0t(aa)i)=Θ(n^{log_{b}a}\sum_{i=0}^t(\frac{a}{a})^i)
=Θ(nlogbai=0t1)=Θ(n^{log_{b}a}\sum_{i=0}^t1)
=Θ(nlogbalogbn)=Θ(n^{log_{b}a}log_{b}n)
=Θ(nlogbalgn)=Θ(n^{log_{b}a}lgn)

case3:

若对某个常数c<1和所有足够大的n有af(nb)cf(n)af(\frac{n}{b})\leq cf(n)T(n)=Θ(f(n))T(n)=Θ(f(n))
T(n)=i=0taif(nbi)i=0tcif(n)f(n)i=0ciT(n)=\sum_{i=0}^ta^{i}f(\frac{n}{b^i})\leq\sum_{i=0}^tc^{i}f(n)\leq f(n)\sum_{i=0}^∞c^{i}
:c<1注意:c<1且求和部分为等比数列,求和再取极限
=f(n)(11c)+O(1)=O(f(n))=f(n)(\frac{1}{1-c})+O(1)=O(f(n))
在上篇的矩阵乘法中,
分治法得到的复杂度T(n)=8T(n2)+O(n²)T(n)=8T(\frac{n}{2})+O(n^²)
则a=8,b=2 满足第一种情况 复杂度为O(nlog28)=O(n3)O(n^{log_{2}8})=O(n^3)
Strassen方法中 复杂度T(n)=7T(n2)+O(n²)T(n)=7T(\frac{n}{2})+O(n^²)
a=7, b = 2 也满足第一种情况,复杂度为O(nlog27)O(n^{log_{2}7})

相关文章: