主定理证明

证明主方法(主定理)

注意:本文部分内容参考了知乎上数学答主的解答

主方法内容:

设 a ≥ 1 和 b > 1 为常数, f ( n ) 是一个函数, T ( n ) 由下面的递推式定义 T ( n ) = a T ( n b ) + f ( n ) 其中, n b 指 ⌊ n b ⌋ 或 ⌈ n b ⌉ ,则 T ( n ) 有如下的渐进界: 若对某常数 ϵ > 0 ,有 f ( n ) = O ( n log ⁡ b a − ϵ ) ,则 T ( n ) = Θ ( n log ⁡ b a ) 若 f ( n ) = Θ ( n log ⁡ b a ) , T ( n ) = Θ ( n log ⁡ b a log ⁡ n ) 若对某常数 ϵ > 0 ,有 f ( n ) = Ω ( n log ⁡ b a + ε ) ,且对某个常数 c < 1 和所有足够大的 n , 有 a f ( n b ) ≤ c f ( n ) ,则 T ( n ) = Θ ( f ( n ) ) 设a\ge1和b>1为常数,f\left(n\right)是一个函数,T(n)由下面的递推式定义\\ T(n)=aT(\frac{n}{b}) + f(n)\\ 其中,\frac{n}{b}指\lfloor\frac{n}{b}\rfloor或\lceil\frac{n}{b}\rceil,则T(n)有如下的渐进界:\\ 若对某常数\epsilon>0,有f(n)=O(n^{\log_{b}{a}-\epsilon}),则T(n)=\Theta(n^{\log_{b}{a}})\\ 若f(n)=\Theta(n^{\log_{b}{a}}),T(n)=Θ(n^{\log_{b}{a}}\log{n})\\ 若对某常数\epsilon>0,有f(n)=\Omega(n^{\log_{b}{a}+ε}),且对某个常数c<1和所有足够大的n,\\ 有af(\frac{n}{b})≤cf(n),则T(n)=\Theta(f(n)) a1b>1为常数,f(n)是一个函数,T(n)由下面的递推式定义T(n)=aT(bn)+f(n)其中,bnbnbn,则T(n)有如下的渐进界:若对某常数ϵ>0,有f(n)=O(nlogbaϵ),则T(n)=Θ(nlogba)f(n)=Θ(nlogba)T(n)=Θ(nlogbalogn)若对某常数ϵ0,有f(n)=Ω(nlogba+ε),且对某个常数c<1和所有足够大的naf(bn)cf(n),则T(n)=Θ(f(n))

证明:由题有
T ( n ) = a T ( n b ) + f ( n ) T(n)=aT(\frac{n}{b})+f(n) T(n)=aT(bn)+f(n)

首先考虑当n为b的k次幂的情况

​ 原递归式改写为:
T ( n ) = { Θ ( 1 ) , n = 1 a T ( n b ) + f ( n ) , n = b i , i = 1 , 2 , … k T(n)=\begin{cases}\Theta(1),\quad n=1\\ \\aT(\frac{n}{b})+f(n),\quad n=b^{i},i=1,2,\dots k\end{cases} T(n)= Θ(1),n=1aT(bn)+f(n),n=bi,i=1,2,k
​ 根据迭代法:
T ( n ) = a 2 T ( n b ) + f ( n ) + a f ( n b ) = … \begin{aligned}T(n)&=a^{2}T(\frac{n}{b})+f(n)+af(\frac{n}{b})\\&=\dots\\ \end{aligned} T(n)=a2T(bn)+f(n)+af(bn)=
​ 令 n b i = 1 \frac{n}{b^{i}}=1 bin=1(临界条件),则有:
T ( n ) = a i T ( n b i ) + ∑ i = 0 log ⁡ b n − 1 a i f ( n b i ) = n log ⁡ b a T ( 1 ) + ∑ i = 0 log ⁡ b n − 1 a i f ( n b i ) = n log ⁡ b a Θ ( 1 ) + ∑ i = 0 log ⁡ b n − 1 a i f ( n b i ) = Θ ( n log ⁡ b a ) + ∑ i = 0 log ⁡ b n − 1 a i f ( n b i ) \begin{aligned}T(n)&=a^{i}T(\frac{n}{b^{i}})+\sum\limits^{\log_{b}{n}-1}_{i=0}a_{i}f(\frac{n}{b^{i}})\\ &=n^{\log_{b}{a}}T(1)+\sum\limits^{\log_{b}{n}-1}_{i=0}a_{i}f(\frac{n}{b^{i}})\\ &=n^{\log_{b}{a}}\Theta(1)+\sum\limits^{\log_{b}{n}-1}_{i=0}a_{i}f(\frac{n}{b^{i}})\\ &=\Theta(n^{\log_{b}{a}})+\sum\limits^{\log_{b}{n}-1}_{i=0}a_{i}f(\frac{n}{b^{i}})\end{aligned} T(n)=aiT(bin)+i=0logbn1aif(bin)=nlogbaT(1)+i=0logbn1aif(bin)=nlogbaΘ(1)+i=0logbn1aif(bin)=Θ(nlogba)+i=0logbn1aif(bin)
​ 故只需要考虑 ∑ i = 0 log ⁡ b n − 1 a i f ( n b i ) \sum\limits^{\log_{b}{n}-1}_{i=0}a_{i}f(\frac{n}{b^{i}}) i=0logbn1aif(bin)渐进表达式即可

下面从三种情况展开证明:

​ (1)当 f ( n ) = O ( n log ⁡ b a − ϵ ) f(n)=O(n^{\log_{b}{a}-\epsilon}) f(n)=O(nlogbaϵ)
f ( n b i ) = O ( ( n b i ) log ⁡ b a − ϵ ) ∴ g ( n ) = ∑ i = 0 log ⁡ b n − 1 a i O ( ( n b i ) log ⁡ b a − ϵ ) = O ( ∑ i = 0 log ⁡ b n − 1 a i ( n b i ) log ⁡ b a − ϵ ) = O ( n log ⁡ b a − ϵ ⋅ ∑ i = 0 log ⁡ b n − 1 ( a b log ⁡ b a − ϵ ) i ) = O ( n log ⁡ b a − ϵ ⋅ ∑ i = 0 log ⁡ b n − 1 b i ϵ ) = O ( n log ⁡ b a − ϵ ⋅ n ϵ − 1 b ϵ − 1 ) = O ( n log ⁡ b a − n log ⁡ b a − ϵ b ϵ − 1 ) = O ( n log ⁡ b a ) f(\frac{n}{b^i})=O((\frac{n}{b^i})^{\log_{b}{a}-\epsilon})\\ \begin{aligned} \therefore g(n)&=\sum\limits^{\log_{b}{n}-1}_{i=0}a^{i}O\left(\left(\frac{n}{b^i}\right)^{\log_{b}{a}-\epsilon}\right)\\ &=O\left(\sum\limits^{\log_{b}{n}-1}_{i=0}a^{i}\left(\frac{n}{b^i}\right)^{\log_{b}{a}-\epsilon}\right)\\ &=O\left(n^{\log_{b}{a}-\epsilon}\cdot\sum\limits^{\log_{b}{n}-1}_{i=0}\left(\frac{a}{b^{\log_{b}{a}-\epsilon}}\right)^{i}\right)\\ &=O\left(n^{\log_{b}{a}-\epsilon}\cdot\sum\limits^{\log_{b}{n}-1}_{i=0}b^{i\epsilon}\right)\\ &=O\left(n^{\log_{b}{a}-\epsilon}\cdot\frac{n^{\epsilon}-1}{b^{\epsilon}-1}\right)\\ &=O\left(\frac{n^{\log_{b}{a}}-n^{\log_{b}{a}-\epsilon}}{b^{\epsilon}-1}\right)\\ &=O\left(n^{\log_{b}{a}}\right) \end{aligned} f(bin)=O((bin)logbaϵ)g(n)=i=0logbn1aiO((bin)logbaϵ)=O i=0logbn1ai(bin)logbaϵ =O nlogbaϵi=0logbn1(blogbaϵa)i =O nlogbaϵi=0logbn1biϵ =O(nlogbaϵbϵ1nϵ1)=O(bϵ1nlogbanlogbaϵ)=O(nlogba)
​ (2)当 f ( n ) = Θ ( n log ⁡ b a lg ⁡ k n ) f(n)=\Theta(n^{\log_{b}{a}}\lg^{k}{n}) f(n)=Θ(nlogbalgkn)
f ( n b i ) = Θ ( ( n b i ) log ⁡ b a lg ⁡ k ( n b i ) ) ∴ g ( n ) = Θ ( n log ⁡ b a ⋅ ∑ i = 0 log ⁡ b n − 1 lg ⁡ k ( n b i ) ) = Θ ( n log ⁡ b a ⋅ ∑ i = 0 log ⁡ b n − 1 ( lg ⁡ n − i lg ⁡ b ) k ) = Θ ( n log ⁡ b a ⋅ ∑ i = 0 log ⁡ b n − 1 ( lg ⁡ k n + O ( lg ⁡ k n ) ) ) = Θ ( n log ⁡ b a ⋅ ( log ⁡ b n ⋅ lg ⁡ k n + log ⁡ b n ⋅ O ( lg ⁡ k n ) ) ) = Θ ( n log ⁡ b a ⋅ ( log ⁡ b n ⋅ lg ⁡ k n ) ) = Θ ( n log ⁡ b a ⋅ lg ⁡ k + 1 n ) f(\frac{n}{b^{i}})=\Theta((\frac{n}{b^{i}})^{\log_{b}{a}}\lg^{k}{(\frac{n}{b^{i}})})\\ \begin{aligned}\therefore g(n)&=\Theta\left(n^{\log_{b}{a}}\cdot\sum\limits^{\log_{b}{n}-1}_{i=0}\lg^{k}{(\frac{n}{b^{i}})}\right)\\ &=\Theta\left(n^{\log_{b}{a}}\cdot\sum\limits^{\log_{b}{n}-1}_{i=0}\left(\lg{n}-i\lg{b}\right)^{k}\right)\\ &=\Theta\left(n^{\log_{b}{a}}\cdot\sum\limits^{\log_{b}{n}-1}_{i=0}\left(\lg^{k}{n}+O(\lg^{k}{n})\right)\right)\\ &=\Theta\left(n^{\log_{b}{a}}\cdot\left(\log_{b}{n}\cdot\lg^{k}{n}+\log_{b}{n}\cdot O(\lg^{k}{n})\right)\right)\\ &=\Theta\left(n^{\log_{b}{a}}\cdot\left(\log_{b}{n}\cdot\lg^{k}{n}\right)\right)\\ &=\Theta\left(n^{\log_{b}{a}}\cdot \lg^{k+1}{n}\right) \end{aligned} f(bin)=Θ((bin)logbalgk(bin))g(n)=Θ nlogbai=0logbn1lgk(bin) =Θ nlogbai=0logbn1(lgnilgb)k =Θ nlogbai=0logbn1(lgkn+O(lgkn)) =Θ(nlogba(logbnlgkn+logbnO(lgkn)))=Θ(nlogba(logbnlgkn))=Θ(nlogbalgk+1n)
​ (3)由题:
g ( n ) = f ( n ) + ∑ i = 0 log ⁡ b n − 1 a i f ( n b i ) = Ω ( f ( n ) ) \begin{aligned}g(n)&=f(n)+\sum\limits^{\log_{b}{n}-1}_{i=0}a_{i}f(\frac{n}{b^{i}})\\ &=\Omega(f(n))\end{aligned} g(n)=f(n)+i=0logbn1aif(bin)=Ω(f(n))
​ 由题: ∃ c < 1 , ∃ N ∈ Z , ∀ n > N \exist c<1,\exist N\in \mathrm{Z},\forall n>N c<1,NZ,n>N
s . t . a f ( n b ) ≤ c f ( n ) s.t.\quad af(\frac{n}{b})\leq cf(n) s.t.af(bn)cf(n)
​ 递推有 n b i > N \frac{n}{b^{i}}>N bin>N​时
a i f ( n b i ) ≤ c i f ( n ) ∴ g ( n ) = f ( n ) + ∑ i = 0 log ⁡ b n − 1 a i f ( n b i ) ≤ f ( n ) + ∑ i = 0 log ⁡ b n − 1 c i f ( n ) = f ( n ) + 1 − c log ⁡ b n 1 − c f ( n ) < 2 − c 1 − c f ( n ) = O ( f ( n ) ) a^{i}f(\frac{n}{b^{i}})\leq c^{i}f(n)\\ \begin{aligned}\therefore g(n)&=f(n)+\sum\limits^{\log_{b}{n}-1}_{i=0}a^{i}f(\frac{n}{b^{i}})\\ &\leq f(n)+\sum\limits^{\log_{b}{n}-1}_{i=0}c^{i}f(n)\\ &=f(n)+\frac{1-c^{\log_{b}{n}}}{1-c}f(n)\\ &<\frac{2-c}{1-c}f(n)=O(f(n)) \end{aligned} aif(bin)cif(n)g(n)=f(n)+i=0logbn1aif(bin)f(n)+i=0logbn1cif(n)=f(n)+1c1clogbnf(n)<1c2cf(n)=O(f(n))
​ 故 g ( n ) = Θ ( f ( n ) ) g(n)=\Theta(f(n)) g(n)=Θ(f(n))

​ 由 T ( n ) = Θ ( n log ⁡ b a ) + ∑ i = 0 log ⁡ b n − 1 a i f ( n b i ) T(n)=\Theta(n^{\log_{b}{a}})+\sum\limits^{\log_{b}{n}-1}_{i=0}a^{i}f(\frac{n}{b^{i}}) T(n)=Θ(nlogba)+i=0logbn1aif(bin)

​ 根据上述分析可证得 n = b k n=b^{k} n=bk​时主定理成立

下面推广n至全体正整数

​ 由 T ( n ) = a T ( ⌈ n b ⌉ ) + f ( n ) ≥ a T ( n b ) + f ( n ) T(n)=aT(\lceil \frac{n}{b} \rceil)+f(n)\geq aT(\frac{n}{b})+f(n) T(n)=aT(⌈bn⌉)+f(n)aT(bn)+f(n)

​ 即 T ( n ) = O ( A ) , A ∈ { n log ⁡ b a , n log ⁡ b a lg ⁡ k + 1 n , f ( n ) ∣ 当 A 满足特定条件 } T(n)=O(A),A\in\{n^{\log_{b}{a}},n^{\log_{b}{a}}\lg^{k+1}{n},f(n)|当A满足特定条件\} T(n)=O(A),A{nlogba,nlogbalgk+1n,f(n)A满足特定条件}

​ 同理可得 T ( n ) = a T ( ⌊ n b ⌋ ) + f ( n ) T(n)=aT(\lfloor\frac{n}{b}\rfloor)+f(n) T(n)=aT(⌊bn⌋)+f(n)时, T ( n ) = O ( A ) T(n)=O(A) T(n)=O(A)

下证 T ( n ) = a T ( ⌈ n b ⌉ ) + f ( n ) T(n)=aT(\lceil \frac{n}{b} \rceil)+f(n) T(n)=aT(⌈bn⌉)+f(n)时, T ( n ) = O ( A ) T(n)=O(A) T(n)=O(A)

​ 不妨令 t 0 = n , t 1 = ⌈ t 0 b ⌉ , … t k = ⌈ t k − 1 b ⌉ = Θ ( 1 ) t_{0}=n,t_{1}=\lceil\frac{t_{0}}{b}\rceil,\dots t_{k}=\lceil\frac{t_{k-1}}{b} \rceil=\Theta(1) t0=n,t1=bt0,tk=btk1=Θ(1)
∵ t 1 ≤ n b + 1 [ 1 ] t 2 ≤ t 1 b + 1 ≤ n b 2 + 1 b + 1 … t k ≤ t k − 1 b + 1 ≤ n b k + ∑ i = 0 k − 1 1 b i ∴ t k ≤ n b k + ∑ i = 0 ∞ 1 b i = n b k ⋅ b b − 1 当 k = ⌊ log ⁡ b n ⌋ 时 n b k ≤ n b log ⁡ b n − 1 ⋅ b b − 1 = b 2 b − 1 = Θ ( 1 ) ∴ k ≤ ⌊ log ⁡ b n ⌋ ∴ T ( n ) = a T ( t 1 ) + f ( t 0 ) = a 2 T ( t 2 ) + a f ( t 1 ) + f ( t 0 ) … ≤ Θ ( n log ⁡ b a ) + ∑ i = 0 ⌊ log ⁡ b n ⌋ − 1 a i f ( t i ) \begin{aligned}\because \quad t_{1}&\leq \frac{n}{b}+1\quad [1]\\ t_{2}&\leq \frac{t_{1}}{b}+1\leq \frac{n}{b^{2}}+\frac{1}{b}+1\\ &\dots\\ t_{k}&\leq \frac{t_{k-1}}{b}+1\leq \frac{n}{b^{k}}+\sum\limits^{k-1}_{i=0}\frac{1}{b^{i}}\\ \therefore \quad t_{k} &\leq \frac{n}{b^{k}}+\sum\limits^{\infty}_{i=0}\frac{1}{b^{i}}\\ &=\frac{n}{b^{k}}\cdot \frac{b}{b-1}\\ 当k=\lfloor\log_{b}{n}\rfloor时\\ \frac{n}{b^{k}}&\leq \frac{n}{b^{\log_{b}{n}-1}}\cdot \frac{b}{b-1}\\ &=\frac{b^{2}}{b-1}=\Theta(1)\\ \therefore \quad k &\leq \lfloor\log_{b}{n}\rfloor\\ \therefore \quad T(n)&=aT(t_{1})+f(t_{0})\\ &=a^{2}T(t_{2})+af(t_{1})+f(t_{0})\\ &\dots\\ &\leq \Theta(n^{\log_{b}{a}})+\sum\limits^{\lfloor\log_{b}{n}\rfloor-1}_{i=0}a^{i}f(t_{i}) \end{aligned} t1t2tktkk=logbnbknkT(n)bn+1[1]bt1+1b2n+b1+1btk1+1bkn+i=0k1bi1bkn+i=0bi1=bknb1bblogbn1nb1b=b1b2=Θ(1)logbn=aT(t1)+f(t0)=a2T(t2)+af(t1)+f(t0)Θ(nlogba)+i=0logbn1aif(ti)
​ 由前面证明的主定理(部分)有: T ( n ) ≤ Θ ( A ) T(n)\leq\Theta(A) T(n)Θ(A)
∴ T ( n ) = O ( A ) \therefore \quad T(n)=O(A) T(n)=O(A)
​ 同理可得 T ( n ) = a T ( ⌊ n b ⌋ ) + f ( n ) = Ω ( A ) T(n)=aT(\lfloor\frac{n}{b}\rfloor)+f(n)=\Omega(A) T(n)=aT(⌊bn⌋)+f(n)=Ω(A)

Q . E . D Q.E.D Q.E.D

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值