主定理及其证明

在这里插入图片描述
(叶节点数: a l o g b n = ( n l o g n a ) l o g b n = n l o g b a a^{log_bn}=(n^{log_na})^{log_bn}=n^{log_ba} alogbn=(nlogna)logbn=nlogba)
T ( n ) = Θ ( n l o g b a ) + ∑ j = 0 l o g b n − 1 a j f ( n b j ) T(n)=\Theta(n^{log_ba})+\sum_{j=0}^{log_bn-1}a^jf(\frac{n}{b^j}) T(n)=Θ(nlogba)+j=0logbn1ajf(bjn)
g ( n ) = ∑ j = 0 l o g b n − 1 a j f ( n b j ) g(n)=\sum_{j=0}^{log_bn-1}a^jf(\frac{n}{b^j}) g(n)=j=0logbn1ajf(bjn)
T ( n ) = Θ ( n l o g b a ) + g ( n ) T(n)=\Theta(n^{log_ba})+g(n) T(n)=Θ(nlogba)+g(n)
主定理的核心是比较
递归树上面那些 f ( n ) f(n) f(n)操作加起来更耗时, 还是最下层所有叶节点的 O ( 1 ) O(1) O(1)加起来更耗时

情况一:所有叶节点的 O ( 1 ) O(1) O(1)加起来更耗时
f ( n ) = O ( n l o g b a − ϵ ) , ϵ > 0 f(n)=O(n^{log_ba-\epsilon}),\epsilon>0 f(n)=O(nlogbaϵ),ϵ>0

g ( n ) = O ( ∑ j = 0 l o g b n − 1 a j ( n b j ) l o g b a − ϵ ) g(n)=O(\sum_{j=0}^{log_bn-1}a^j(\frac{n}{b^j})^{log_ba-\epsilon}) g(n)=O(j=0logbn1aj(bjn)logbaϵ)
∑ j = 0 l o g b n − 1 a j ( n b j ) l o g b a − ϵ \sum_{j=0}^{log_bn-1}a^j(\frac{n}{b^j})^{log_ba-\epsilon} j=0logbn1aj(bjn)logbaϵ
= n l o g b a − ϵ ∑ j = 0 l o g b n − 1 ( a b ϵ b l o g b a ) j =n^{log_ba-\epsilon}\sum_{j=0}^{log_bn-1}(\frac{ab^\epsilon}{b^{log_ba}})^j =nlogbaϵj=0logbn1(blogbaabϵ)j
= n l o g b a − ϵ ∑ j = 0 l o g b n − 1 ( b ϵ ) j =n^{log_ba-\epsilon}\sum_{j=0}^{log_bn-1}(b^\epsilon)^j =nlogbaϵj=0logbn1(bϵ)j
= n l o g b a − ϵ ( b ϵ ) l o g b n − 1 b ϵ − 1 =n^{log_ba-\epsilon}\frac{(b^\epsilon)^{log_bn}-1}{b^\epsilon-1} =nlogbaϵbϵ1(bϵ)logbn1
= n l o g b a − ϵ n ϵ − 1 b ϵ − 1 =n^{log_ba-\epsilon}\frac{n^\epsilon-1}{b^\epsilon-1} =nlogbaϵbϵ1nϵ1
所以 g ( n ) = O ( n l o g b a ) g(n)=O(n^{log_ba}) g(n)=O(nlogba)
T ( n ) = Θ ( n l o g b a ) + O ( n l o g b a ) = Θ ( n l o g b a ) T(n)=\Theta(n^{log_ba})+O(n^{log_ba})=\Theta(n^{log_ba}) T(n)=Θ(nlogba)+O(nlogba)=Θ(nlogba)

情况二:一样耗时
f ( n ) = Θ ( n l o g b a log ⁡ k n ) , k ≥ 0 f(n)=\Theta(n^{log_ba}\log^kn),k\geq0 f(n)=Θ(nlogbalogkn),k0
g ( n ) = Θ ( ∑ j = 0 l o g b n − 1 a j ( n b j ) l o g b a log ⁡ k n b j ) g(n)=\Theta(\sum_{j=0}^{log_bn-1}a^j(\frac{n}{b^j})^{log_ba}\log^k\frac{n}{b^j}) g(n)=Θ(j=0logbn1aj(bjn)logbalogkbjn)
∑ j = 0 l o g b n − 1 a j ( n b j ) l o g b a log ⁡ k n b j \sum_{j=0}^{log_bn-1}a^j(\frac{n}{b^j})^{log_ba}\log^k\frac{n}{b^j} j=0logbn1aj(bjn)logbalogkbjn
= n l o g b a ∑ j = 0 l o g b n − 1 ( a b l o g b a ) j ( log ⁡ n − j log ⁡ b ) k =n^{log_ba}\sum_{j=0}^{log_bn-1}(\frac{a}{b^{log_ba}})^j(\log n-j\log b)^k =nlogbaj=0logbn1(blogbaa)j(lognjlogb)k
= n l o g b a ∑ j = 0 l o g b n − 1 ( log ⁡ n − j log ⁡ b ) k =n^{log_ba}\sum_{j=0}^{log_bn-1}(\log n-j\log b)^k =nlogbaj=0logbn1(lognjlogb)k
g ( n ) = Θ ( n l o g b a ∑ j = 0 l o g b n − 1 log ⁡ k n ) g(n)=\Theta(n^{log_ba}\sum_{j=0}^{log_bn-1}\log^k n) g(n)=Θ(nlogbaj=0logbn1logkn)
= Θ ( n l o g b a ⋅ l o g b n ⋅ log ⁡ k n ) =\Theta(n^{log_ba}\cdot log_bn\cdot \log^kn) =Θ(nlogbalogbnlogkn)
= Θ ( n l o g b a log ⁡ k + 1 n ) =\Theta(n^{log_ba}\log^{k+1}n) =Θ(nlogbalogk+1n)
T ( n ) = Θ ( n l o g b a ) + Θ ( n l o g b a log ⁡ k + 1 n ) = Θ ( n l o g b a log ⁡ k + 1 n ) T(n)=\Theta(n^{log_ba})+\Theta(n^{log_ba}\log^{k+1}n)=\Theta(n^{log_ba}\log^{k+1}n) T(n)=Θ(nlogba)+Θ(nlogbalogk+1n)=Θ(nlogbalogk+1n)

情况三:上面那些 f ( n ) f(n) f(n)操作加起来更耗时
f ( n ) = Ω ( n l o g b a + ϵ ) , ϵ ≥ 0 f(n)=\Omega(n^{log_ba+\epsilon}),\epsilon\geq 0 f(n)=Ω(nlogba+ϵ),ϵ0 ∃ c < 1 , n 0 \exists c<1,n_0 c<1,n0,使得 ∀ n > n 0 , a f ( n b ) ≤ c f ( n ) \forall n>n_0,af(\frac{n}{b})\leq cf(n) n>n0,af(bn)cf(n)

∀ j ≥ 1 , a j f ( n b j ) ≤ c j f ( n ) \forall j\geq 1,a^jf(\frac{n}{b^j})\leq c^jf(n) j1,ajf(bjn)cjf(n)
所以 ∑ j = 0 l o g b n − 1 a j f ( n b j ) ≤ f ( n ) ∑ j = 0 l o g b n − 1 c j = f ( n ) 1 − c l o g b n 1 − c \sum_{j=0}^{log_bn-1}a^jf(\frac{n}{b^j})\leq f(n)\sum_{j=0}^{log_bn-1}c^j=f(n)\frac{1-c^{log_bn}}{1-c} j=0logbn1ajf(bjn)f(n)j=0logbn1cj=f(n)1c1clogbn
所以 g ( n ) = O ( f ( n ) ) g(n)=O(f(n)) g(n)=O(f(n))

g ( n ) = ∑ j = 0 l o g b n − 1 a j f ( n b j ) ≥ f ( n ) g(n)=\sum_{j=0}^{log_bn-1}a^jf(\frac{n}{b^j})\geq f(n) g(n)=j=0logbn1ajf(bjn)f(n)
所以 g ( n ) = Ω ( f ( n ) ) g(n)=\Omega(f(n)) g(n)=Ω(f(n))

所以 g ( n ) = Θ ( f ( n ) ) g(n)=\Theta(f(n)) g(n)=Θ(f(n))
T ( n ) = Θ ( n l o g b a ) + Θ ( f ( n ) ) = Θ ( f ( n ) ) T(n)=\Theta(n^{log_ba})+\Theta(f(n))=\Theta(f(n)) T(n)=Θ(nlogba)+Θ(f(n))=Θ(f(n))

主定理:
在这里插入图片描述
简记:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值