证明主方法(主定理)
注意:本文部分内容参考了知乎上数学答主的解答
主方法内容:
设 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)) 设a≥1和b>1为常数,f(n)是一个函数,T(n)由下面的递推式定义T(n)=aT(bn)+f(n)其中,bn指⌊bn⌋或⌈bn⌉,则T(n)有如下的渐进界:若对某常数ϵ>0,有f(n)=O(nlogba−ϵ),则T(n)=Θ(nlogba)若f(n)=Θ(nlogba),T(n)=Θ(nlogbalogn)若对某常数ϵ>0,有f(n)=Ω(nlogba+ε),且对某个常数c<1和所有足够大的n,有af(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=0∑logbn−1aif(bin)=nlogbaT(1)+i=0∑logbn−1aif(bin)=nlogbaΘ(1)+i=0∑logbn−1aif(bin)=Θ(nlogba)+i=0∑logbn−1aif(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=0∑logbn−1aif(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=0∑logbn−1aiO((bin)logba−ϵ)=O
i=0∑logbn−1ai(bin)logba−ϵ
=O
nlogba−ϵ⋅i=0∑logbn−1(blogba−ϵa)i
=O
nlogba−ϵ⋅i=0∑logbn−1biϵ
=O(nlogba−ϵ⋅bϵ−1nϵ−1)=O(bϵ−1nlogba−nlogba−ϵ)=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)=Θ
nlogba⋅i=0∑logbn−1lgk(bin)
=Θ
nlogba⋅i=0∑logbn−1(lgn−ilgb)k
=Θ
nlogba⋅i=0∑logbn−1(lgkn+O(lgkn))
=Θ(nlogba⋅(logbn⋅lgkn+logbn⋅O(lgkn)))=Θ(nlogba⋅(logbn⋅lgkn))=Θ(nlogba⋅lgk+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=0∑logbn−1aif(bin)=Ω(f(n))
由题:
∃
c
<
1
,
∃
N
∈
Z
,
∀
n
>
N
\exist c<1,\exist N\in \mathrm{Z},\forall n>N
∃c<1,∃N∈Z,∀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=0∑logbn−1aif(bin)≤f(n)+i=0∑logbn−1cif(n)=f(n)+1−c1−clogbnf(n)<1−c2−cf(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=0∑logbn−1aif(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=⌈btk−1⌉=Θ(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}
∵t1t2tk∴tk当k=⌊logbn⌋时bkn∴k∴T(n)≤bn+1[1]≤bt1+1≤b2n+b1+1…≤btk−1+1≤bkn+i=0∑k−1bi1≤bkn+i=0∑∞bi1=bkn⋅b−1b≤blogbn−1n⋅b−1b=b−1b2=Θ(1)≤⌊logbn⌋=aT(t1)+f(t0)=a2T(t2)+af(t1)+f(t0)…≤Θ(nlogba)+i=0∑⌊logbn⌋−1aif(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