主定理证明

递归树推导

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

case1:

若对某个常数ε>0 f ( n ) = O ( n l o g b a − ε ) f(n)=O(n^{log_{b}a-ε}) f(n)=O(nlogbaε) g ( n ) = O ( n l o g b a ) g(n)=O(n^{log_{b}a}) g(n)=O(nlogba)可转换为
存在 f ( n ) = O ( n c ) f(n)=O(n^{c}) f(n)=O(nc) ,其中 c < l o g b a c<log_{b}a c<logba
T ( n ) = ∑ i = 0 t a i O ( ( n b i ) c ) T(n)=\sum_{i=0}^ta^{i}O((\frac{n}{b^i})^c) T(n)=i=0taiO((bin)c)
= O ( ∑ i = 0 t a i ( n b i ) c ) =O(\sum_{i=0}^ta^{i}(\frac{n}{b^i})^c) =O(i=0tai(bin)c)
= O ( n c ∑ i = 0 t ( a b c ) i ) =O(n^c\sum_{i=0}^t(\frac{a}{b^c})^i) =O(nci=0t(bca)i)
求 和 项 为 等 比 数 列 求和项为等比数列
= O ( n c ( a b c ) t ) =O(n^c(\frac{a}{b^c})^t) =O(nc(bca)t)
n c b t c = 1 \frac{n^c}{b^{tc}}=1 btcnc=1
= O ( a t ) =O(a^t) =O(at)
a t = a l o g b n = a l o g a n l o g a b = a l o g a n ∗ l o g b a a^t=a^{log_{b}n}=a^\frac{{log_{a}n}}{{log_{a}b}}=a^{log_{a}n*log_{b}a} at=alogbn=alogablogan=aloganlogba
= O ( n l o g b a ) =O(n^{log_{b}a}) =O(nlogba)
得证

case2:

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

case3:

若对某个常数c<1和所有足够大的n有 a f ( n b ) ≤ c f ( n ) af(\frac{n}{b})\leq cf(n) af(bn)cf(n) T ( n ) = Θ ( f ( n ) ) T(n)=Θ(f(n)) T(n)=Θ(f(n))
T ( n ) = ∑ i = 0 t a i f ( n b i ) ≤ ∑ i = 0 t c i f ( n ) ≤ f ( n ) ∑ i = 0 ∞ c i T(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} T(n)=i=0taif(bin)i=0tcif(n)f(n)i=0ci
注 意 : c < 1 且 求 和 部 分 为 等 比 数 列 , 求 和 再 取 极 限 注意:c<1且求和部分为等比数列,求和再取极限 :c<1
= f ( n ) ( 1 1 − c ) + O ( 1 ) = O ( f ( n ) ) =f(n)(\frac{1}{1-c})+O(1)=O(f(n)) =f(n)(1c1)+O(1)=O(f(n))
在上篇的矩阵乘法中,
分治法得到的复杂度 T ( n ) = 8 T ( n 2 ) + O ( n ² ) T(n)=8T(\frac{n}{2})+O(n^²) T(n)=8T(2n)+O(n²)
则a=8,b=2 满足第一种情况 复杂度为 O ( n l o g 2 8 ) = O ( n 3 ) O(n^{log_{2}8})=O(n^3) O(nlog28)=O(n3)
Strassen方法中 复杂度 T ( n ) = 7 T ( n 2 ) + O ( n ² ) T(n)=7T(\frac{n}{2})+O(n^²) T(n)=7T(2n)+O(n²)
a=7, b = 2 也满足第一种情况,复杂度为 O ( n l o g 2 7 ) O(n^{log_{2}7}) O(nlog27)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值