笔记
代入法求解递归式分为两步:
1) 猜测解的形式。
2) 用数学归纳法证明猜测的解是正确的。
例如,我们要确定递归式
T
(
n
)
=
2
T
(
⌊
n
/
2
⌋
)
+
n
T(n)=2T(⌊n/2⌋)+n
T(n)=2T(⌊n/2⌋)+n的上界。我们猜测其解为
T
(
n
)
=
O
(
n
l
g
n
)
T(n) = O(n{\rm lg}n)
T(n)=O(nlgn),这意味着存在正常数
c
c
c和
n
0
n_0
n0,使得
T
(
n
)
≤
c
n
l
g
n
T(n) ≤ cn{\rm lg}n
T(n)≤cnlgn对所有
n
≥
n
0
n ≥ n_0
n≥n0都成立。现在用数学归纳法来证明。
为方便起见,取递归式的初始情况
T
(
1
)
=
1
T(1) = 1
T(1)=1。应用数学归纳法时,我们很自然地想到取初始情况为
T
(
1
)
T(1)
T(1)。然而,这样做有问题。因为论正常数
c
c
c为多少,
T
(
1
)
≤
c
•
1
•
l
g
1
=
0
T(1) ≤ c•1•{\rm lg}1 = 0
T(1)≤c•1•lg1=0都不成立。因此
T
(
1
)
T(1)
T(1)虽然是递归式的初始情况,但是不能作为归纳证明的初始情况,这一点请注意。
我们观察到,当
n
>
3
n > 3
n>3时,递归式就不直接依赖于
T
(
1
)
T(1)
T(1)了,所以我们取
T
(
2
)
T(2)
T(2)和
T
(
3
)
T(3)
T(3)作为初始情况,这样后续的归纳证明不会依赖于
T
(
1
)
T(1)
T(1)。根据递归式可以得到
T
(
2
)
=
2
T
(
1
)
+
2
=
4
T(2) = 2T(1) + 2 = 4
T(2)=2T(1)+2=4,
T
(
3
)
=
2
T
(
1
)
+
3
=
5
T(3) = 2T(1) + 3 = 5
T(3)=2T(1)+3=5。于是得到两个不等式
T
(
2
)
≤
c
•
2
•
l
g
2
T(2) ≤ c•2•{\rm lg}2
T(2)≤c•2•lg2和
T
(
3
)
≤
c
•
3
•
l
g
3
T(3) ≤ c•3•{\rm lg}3
T(3)≤c•3•lg3。只要取任意
c
≥
2
c ≥ 2
c≥2就可以使这两个不等式成立。因此,
T
(
n
)
=
O
(
n
l
g
n
)
T(n) = O(n{\rm lg}n)
T(n)=O(nlgn)对初始情况
T
(
2
)
T(2)
T(2)和
T
(
3
)
T(3)
T(3)都是成立的。
确定好初始情况之后,下面进入归纳过程。假设
T
(
n
)
=
O
(
n
l
g
n
)
T(n) = O(n{\rm lg}n)
T(n)=O(nlgn)对所有
T
(
2
)
,
T
(
3
)
,
…
,
T
(
n
−
1
)
T(2), T(3), …, T(n−1)
T(2),T(3),…,T(n−1)都成立,现在递归求解
T
(
n
)
T(n)
T(n)。
T
(
n
)
=
2
T
(
⌊
n
/
2
⌋
)
+
n
≤
2
c
⌊
n
/
2
⌋
l
g
(
⌊
n
/
2
⌋
)
+
n
≤
c
n
l
g
(
n
/
2
)
+
n
=
c
n
l
g
n
−
c
n
+
n
T(n)=2T(⌊n/2⌋)+n≤2c⌊n/2⌋{\rm lg}(⌊n/2⌋)+n≤cn{\rm lg}(n/2)+n=cn{\rm lg}n-cn+n
T(n)=2T(⌊n/2⌋)+n≤2c⌊n/2⌋lg(⌊n/2⌋)+n≤cnlg(n/2)+n=cnlgn−cn+n
只要取任意
c
≥
1
c ≥ 1
c≥1,都能使得
T
(
n
)
≤
c
n
l
g
n
−
c
n
+
n
≤
c
n
l
g
n
T(n)≤cn{\rm lg}n-cn+n≤cn{\rm lg}n
T(n)≤cnlgn−cn+n≤cnlgn成立。
综上所述,只要选取任意
c
≥
2
c ≥ 2
c≥2,并且选取
n
0
=
2
n_0 = 2
n0=2,就能使得
T
(
n
)
≤
c
n
l
g
n
T(n) ≤ cn{\rm lg}n
T(n)≤cnlgn对所有
n
≥
n
0
n ≥ n_0
n≥n0都成立。因此,递归式
T
(
n
)
=
2
T
(
⌊
n
/
2
⌋
)
+
n
T(n)=2T(⌊n/2⌋)+n
T(n)=2T(⌊n/2⌋)+n的上界为
O
(
n
l
g
n
)
O(n{\rm lg}n)
O(nlgn)。
通常,我们需要凭经验来猜测递归式的解。如果遇到一个递归式与之前遇到过的递归式相似,那么可以猜测一个类似的解。比如有递归式
T
(
n
)
=
2
T
(
⌊
n
/
2
⌋
+
17
)
+
n
T(n)=2T(⌊n/2⌋+17)+n
T(n)=2T(⌊n/2⌋+17)+n。当
n
n
n较大时,⌊n/2⌋与⌊n/2⌋+17相差不大,都是接近
n
n
n的一半。因此完全可以猜测
T
(
n
)
=
O
(
n
l
g
n
)
T(n) = O(n{\rm lg}n)
T(n)=O(nlgn)。
在有些时候,我们猜测出来的解可能无法用数学归纳法证明。比如要求解递归式
T
(
n
)
=
T
(
⌊
n
/
2
⌋
)
+
T
(
⌈
n
/
2
⌉
)
+
1
T(n)=T(⌊n/2⌋)+T(⌈n/2⌉)+1
T(n)=T(⌊n/2⌋)+T(⌈n/2⌉)+1。我们猜测其解为
T
(
n
)
=
O
(
n
)
T(n) = O(n)
T(n)=O(n)。现在要证明存在正常数
c
c
c,使得
T
(
n
)
≤
c
n
T(n) ≤ cn
T(n)≤cn对足够大的
n
n
n都成立。我们将猜测的解代入递归式,得到
T
(
n
)
=
T
(
⌊
n
/
2
⌋
)
+
T
(
⌈
n
/
2
⌉
)
+
1
≤
c
⌊
n
/
2
⌋
+
c
⌈
n
/
2
⌉
+
1
=
c
n
+
1
T(n)=T(⌊n/2⌋)+T(⌈n/2⌉)+1≤c⌊n/2⌋+c⌈n/2⌉+1=cn+1
T(n)=T(⌊n/2⌋)+T(⌈n/2⌉)+1≤c⌊n/2⌋+c⌈n/2⌉+1=cn+1
显然,无论正常数
c
c
c取何值,都无法满足
T
(
n
)
≤
c
n
T(n) ≤ cn
T(n)≤cn,归纳证明失败。当然,在这种情况下,我们接下来可能要猜测一个更大的界,比如
T
(
n
)
=
O
(
n
2
)
T(n) = O(n^2)
T(n)=O(n2)。然而经验告诉我们,原来猜测的
T
(
n
)
=
O
(
n
)
T(n) = O(n)
T(n)=O(n)是正确的,为了证明它的正确,我们要对归纳假设做出调整,减去一个低阶项,由
T
(
n
)
≤
c
n
T(n) ≤ cn
T(n)≤cn变为
T
(
n
)
≤
c
n
–
d
T(n) ≤ cn–d
T(n)≤cn–d,其中
d
d
d是大于或等于
0
0
0的一个常数。现在将新的归纳假设代入递归式,得到
T
(
n
)
≤
c
⌊
n
/
2
⌋
−
d
+
c
⌈
n
/
2
⌉
−
d
+
1
=
c
n
−
2
d
+
1
T(n)≤c⌊n/2⌋-d+c⌈n/2⌉-d+1=cn-2d+1
T(n)≤c⌊n/2⌋−d+c⌈n/2⌉−d+1=cn−2d+1
只要取
d
≥
1
d ≥ 1
d≥1,就可以使得不等式
c
n
−
2
d
+
1
≤
c
n
−
d
cn-2d+1≤cn-d
cn−2d+1≤cn−d成立,此时
T
(
n
)
≤
c
n
−
d
T(n)≤cn-d
T(n)≤cn−d成立。可以看到,调整归纳假设之后,归纳证明可以顺利进行。
另外有些时候,我们直接猜测递归式的解很困难,这时可以将递归式做一下变换,变换为我们熟悉的递归式。比如有递归式
T
(
n
)
=
2
T
(
n
)
+
l
g
n
T(n)=2T(\sqrt{n})+{\rm lg}n
T(n)=2T(n)+lgn,我们完全猜测不出它的解是什么样的。现在我们对递归式做一下变换。令
m
=
l
g
n
m = {\rm lg}n
m=lgn,于是
n
=
2
m
n = 2^m
n=2m,代入递归式得到
T
(
2
m
)
=
2
T
(
2
m
/
2
)
+
m
T(2^m )=2T(2^{m/2})+m
T(2m)=2T(2m/2)+m。现在重新命名
S
(
m
)
=
T
(
2
m
)
S(m)=T(2^m)
S(m)=T(2m),于是得到新的递归式
S
(
m
)
=
2
S
(
m
/
2
)
+
m
S(m)=2S(m/2)+m
S(m)=2S(m/2)+m。这个新的递归式我们非常熟悉,它的解为
S
(
m
)
=
O
(
m
l
g
m
)
S(m) = O(m{\rm lg}m)
S(m)=O(mlgm)。再从
S
(
m
)
S(m)
S(m)转换回
T
(
n
)
T(n)
T(n),得到
T
(
n
)
=
T
(
2
m
)
=
S
(
m
)
=
O
(
m
l
g
m
)
=
O
(
l
g
n
l
g
l
g
n
)
T(n) = T(2^m) = S(m) = O(m{\rm lg}m) = O({\rm lg}n{\rm lglg}n)
T(n)=T(2m)=S(m)=O(mlgm)=O(lgnlglgn)。
练习
4.3-1 证明:
T
(
n
)
=
T
(
n
−
1
)
+
n
T(n) = T(n−1) + n
T(n)=T(n−1)+n的解为
O
(
n
2
)
O(n^2)
O(n2)。
解
我们要证明的是存在正常数
c
c
c,使得
T
(
n
)
≤
c
n
2
T(n) ≤ cn^2
T(n)≤cn2对足够大的n都成立。
取初始情况
T
(
1
)
=
1
T(1) = 1
T(1)=1。只要取任意
c
≥
1
c ≥ 1
c≥1,就能使得
T
(
1
)
≤
c
•
1
2
T(1) ≤ c•1^2
T(1)≤c•12成立。
当
n
≥
2
n ≥ 2
n≥2时,假设
T
(
n
)
≤
c
n
2
T(n) ≤ cn^2
T(n)≤cn2对所有
1
,
2
,
…
,
n
−
1
1, 2, …, n−1
1,2,…,n−1都成立,有
T
(
n
)
=
T
(
n
−
1
)
+
n
≤
c
(
n
−
1
)
2
+
n
=
c
n
2
−
(
2
n
−
1
)
c
+
n
T(n)=T(n-1) + n≤c(n-1)^2+n=cn^2-(2n-1)c+n
T(n)=T(n−1)+n≤c(n−1)2+n=cn2−(2n−1)c+n
要使不等式
c
n
2
–
(
2
n
–
1
)
c
+
n
≤
c
n
2
cn^2 – (2n–1)c + n ≤ cn^2
cn2–(2n–1)c+n≤cn2成立,只需要让
(
2
n
–
1
)
c
≥
n
(2n–1)c ≥ n
(2n–1)c≥n成立,即
c
≥
n
/
(
2
n
–
1
)
=
1
/
(
2
–
1
/
n
)
c ≥ n/(2n–1) = 1/(2–1/n)
c≥n/(2n–1)=1/(2–1/n)。当
n
≥
2
n ≥ 2
n≥2时,
1
/
(
2
–
1
/
n
)
1/(2–1/n)
1/(2–1/n)是单调递减的,因此它在
n
=
2
n = 2
n=2时取得最大值为
2
/
3
2/3
2/3。因此,只要取
c
≥
2
/
3
c ≥ 2/3
c≥2/3,就可使不等式
c
n
2
–
(
2
n
–
1
)
c
+
n
≤
c
n
2
cn^2 – (2n–1)c + n ≤ cn^2
cn2–(2n–1)c+n≤cn2成立,此时
T
(
n
)
≤
c
n
2
T(n) ≤ cn^2
T(n)≤cn2成立。综合考虑初始情况
T
(
1
)
T(1)
T(1),我们最终要取
c
≥
1
c ≥ 1
c≥1。
因此,
T
(
n
)
=
T
(
n
–
1
)
+
n
T(n) = T(n–1) + n
T(n)=T(n–1)+n的解为
O
(
n
2
)
O(n^2)
O(n2)。
4.3-2 证明:
T
(
n
)
=
T
(
⌈
n
/
2
⌉
)
+
1
T(n)=T(⌈n/2⌉)+1
T(n)=T(⌈n/2⌉)+1的解为
O
(
l
g
n
)
O({\rm lg}n)
O(lgn)。
解
我们要证明的是存在正常数
c
c
c,使得
T
(
n
)
≤
c
l
g
n
T(n) ≤ c{\rm lg}n
T(n)≤clgn对足够大的
n
n
n都成立。
令
T
(
1
)
=
1
T(1) = 1
T(1)=1,根据递归式得到
T
(
2
)
=
T
(
1
)
+
1
=
2
T(2) = T(1) + 1 = 2
T(2)=T(1)+1=2。对于
T
(
1
)
T(1)
T(1),无论
c
c
c取何值,都不能满足
T
(
1
)
≤
c
•
l
g
1
T(1) ≤ c•{\rm lg}1
T(1)≤c•lg1。但只要取
c
≥
2
c ≥ 2
c≥2,就能满足
T
(
2
)
≤
c
•
l
g
2
T(2) ≤ c•{\rm lg}2
T(2)≤c•lg2。因此我们以
T
(
2
)
T(2)
T(2)作为归纳证明的初始情况。
当
n
≥
3
n ≥ 3
n≥3时,假设
T
(
n
)
≤
c
l
g
n
T(n) ≤ c{\rm lg}n
T(n)≤clgn对所有
1
,
2
,
…
,
n
−
1
1, 2, …, n−1
1,2,…,n−1都成立,有
T
(
n
)
=
T
(
⌈
n
/
2
⌉
)
+
1
≤
c
l
g
⌈
n
2
⌉
+
1
≤
c
l
g
n
+
1
2
+
1
T(n)=T(⌈n/2⌉)+1≤c{\rm lg}⌈\frac{n}{2}⌉+1≤c{\rm lg}\frac{n+1}{2}+1
T(n)=T(⌈n/2⌉)+1≤clg⌈2n⌉+1≤clg2n+1+1
现在我们选取合适的
c
c
c,使得不等式成立
c
l
g
n
+
1
2
+
1
≤
c
l
g
n
c{\rm lg}\frac{n+1}{2}+1≤c{\rm lg}n
clg2n+1+1≤clgn成立。对这个不等式做一下变换,有
当
n
≥
3
n ≥ 3
n≥3时,
1
l
g
2
1
+
1
/
n
\frac{1}{{\rm lg}\frac{2}{1+1/n}}
lg1+1/n21是单调递减的,因此它在
n
=
2
n = 2
n=2时取得最大值为
1
/
(
l
g
3
–
1
)
1/({\rm lg}3–1)
1/(lg3–1)。因此,只要取
c
≥
1
/
(
l
g
3
–
1
)
c ≥ 1/({\rm lg}3–1)
c≥1/(lg3–1),就能使得
c
l
g
n
+
1
2
+
1
≤
c
l
g
n
c{\rm lg}\frac{n+1}{2}+1≤c{\rm lg}n
clg2n+1+1≤clgn成立,即
T
(
n
)
≤
c
l
g
n
T(n) ≤ c{\rm lg}n
T(n)≤clgn成立。综合考虑初始情况
T
(
1
)
T(1)
T(1),我们最终要取
c
≥
2
c ≥ 2
c≥2。
因此,
T
(
n
)
=
T
(
⌈
n
/
2
⌉
)
+
1
T(n)=T(⌈n/2⌉)+1
T(n)=T(⌈n/2⌉)+1的解为
O
(
l
g
n
)
O({\rm lg}n)
O(lgn)。
4.3-3 我们看到
T
(
n
)
=
2
T
(
⌊
n
/
2
⌋
)
+
n
T(n)=2T(⌊n/2⌋)+n
T(n)=2T(⌊n/2⌋)+n的解为
O
(
n
l
g
n
)
O(n{\rm lg}n)
O(nlgn)。证明
Ω
(
n
l
g
n
)
Ω(n{\rm lg}n)
Ω(nlgn)也是这个递归式的解。从而得出结论:
T
(
n
)
=
Θ
(
n
l
g
n
)
T(n) = Θ(n{\rm lg}n)
T(n)=Θ(nlgn)。
解
我们要证明的是存在正常数
c
c
c,使得
T
(
n
)
≥
c
n
l
g
n
T(n) ≥ cn{\rm lg}n
T(n)≥cnlgn对足够大的
n
n
n都成立。
取初始情况
T
(
1
)
=
1
T(1) = 1
T(1)=1。只要取任意
c
>
0
c > 0
c>0,就能使得
T
(
1
)
≥
c
•
1
•
l
g
1
T(1) ≥ c•1•{\rm lg}1
T(1)≥c•1•lg1成立。
当
n
≥
2
n ≥ 2
n≥2时,假设
T
(
n
)
≥
c
n
l
g
n
T(n) ≥ cn{\rm lg}n
T(n)≥cnlgn对所有
1
,
2
,
…
,
n
−
1
1, 2, …, n−1
1,2,…,n−1都成立,有
T
(
n
)
=
2
T
(
⌊
n
/
2
⌋
)
+
n
≥
2
c
⌊
n
/
2
⌋
l
g
⌊
n
/
2
⌋
+
n
≥
c
(
n
−
1
)
l
g
(
(
n
−
1
)
/
2
)
+
n
T(n)=2T(⌊n/2⌋)+n≥2c⌊n/2⌋{\rm lg}⌊n/2⌋+n≥c(n-1){\rm lg}((n-1)/2)+n
T(n)=2T(⌊n/2⌋)+n≥2c⌊n/2⌋lg⌊n/2⌋+n≥c(n−1)lg((n−1)/2)+n
我们现在要选取合适的
c
c
c,使得不等式
c
(
n
−
1
)
l
g
(
(
n
−
1
)
/
2
)
+
≥
c
n
l
g
n
c(n-1){\rm lg}((n-1)/2)+≥cn{\rm lg}n
c(n−1)lg((n−1)/2)+≥cnlgn成立。对这个不等式做一下变换,有
现在问题变换为选取合适的
c
c
c,使得
c
≤
1
/
f
(
n
)
c≤1/f(n)
c≤1/f(n)对所有
n
≥
2
n ≥ 2
n≥2成立。因此我们需要找到
1
/
f
(
n
)
1/f(n)
1/f(n)的最小值。现在来分析
f
(
n
)
f(n)
f(n)。显然,当
n
≥
2
n ≥ 2
n≥2时,
f
(
n
)
=
l
g
n
−
l
g
(
n
−
1
)
+
l
g
(
n
−
1
)
n
+
1
−
1
n
f(n)={\rm lg}n-{\rm lg}(n-1)+\frac{{\rm lg}(n-1)}{n}+1-\frac{1}{n}
f(n)=lgn−lg(n−1)+nlg(n−1)+1−n1一定大于
0
0
0。所以只要找到
f
(
n
)
f(n)
f(n)的最大值,就可以找到
1
/
f
(
n
)
1/f(n)
1/f(n)的最小值。
f
(
n
)
f(n)
f(n)这个函数比较复杂,所以我们用求导的方法来寻找它的最大值。
当
2
≤
n
<
3
2 ≤ n < 3
2≤n<3时,
f
′
(
n
)
>
0
f'(n)>0
f′(n)>0;当
n
=
3
n = 3
n=3时,
f
′
(
n
)
=
0
f'(n)=0
f′(n)=0;当
n
>
3
n > 3
n>3时,
f
′
(
n
)
<
0
f'(n)<0
f′(n)<0。所以当
n
≥
2
n ≥ 2
n≥2时,函数
f
(
n
)
f(n)
f(n)先单调递增,然后单调递降,并且在
n
=
3
n = 3
n=3时
f
(
n
)
f(n)
f(n)取得最大值为
l
g
3
{\rm lg}3
lg3,此时
1
/
f
(
n
)
1/f(n)
1/f(n)取得最小值
1
/
l
g
3
1/{\rm lg}3
1/lg3。所以,只要取任意
c
≤
1
/
l
g
3
c ≤ 1/{\rm lg}3
c≤1/lg3,就能使得
c
≤
1
/
f
(
n
)
c≤1/f(n)
c≤1/f(n)对所有
n
≥
2
n ≥ 2
n≥2成立,也就使得
c
(
n
−
1
)
l
g
(
(
n
−
1
)
/
2
)
+
≥
c
n
l
g
n
c(n-1){\rm lg}((n-1)/2)+≥cn{\rm lg}n
c(n−1)lg((n−1)/2)+≥cnlgn成立,即
T
(
n
)
≥
c
n
l
g
n
T(n) ≥ cn{\rm lg}n
T(n)≥cnlgn成立。综合考虑初始情况
T
(
1
)
T(1)
T(1),我们最终要取
c
≤
1
/
l
g
3
c ≤ 1/{\rm lg}3
c≤1/lg3。
因此,
Ω
(
n
l
g
n
)
Ω(n{\rm lg}n)
Ω(nlgn)是递归式
T
(
n
)
=
2
T
(
⌊
n
/
2
⌋
)
+
n
T(n)=2T(⌊n/2⌋)+n
T(n)=2T(⌊n/2⌋)+n的解。
4.3-4 证明:通过做出不同的归纳假设,我们不必调整归纳证明中的边界条件,即可克服递归式(4.19)中边界条件
T
(
1
)
=
1
T(1) = 1
T(1)=1带来的困难。
解
我们要证明的是递归式
T
(
n
)
=
2
T
(
⌊
n
/
2
⌋
)
+
n
T(n)=2T(⌊n/2⌋)+n
T(n)=2T(⌊n/2⌋)+n的解为
O
(
n
l
g
n
)
O(n{\rm lg}n)
O(nlgn),也就是存在正常数
c
c
c,使得
T
(
n
)
≤
c
n
l
g
n
T(n) ≤ cn{\rm lg}n
T(n)≤cnlgn对足够大的
n
n
n都成立。为了避开边界条件
T
(
1
)
=
1
T(1) = 1
T(1)=1带来的困难,对归纳假设做一下调整,增加一个低阶项,归纳假设变为
T
(
n
)
≤
c
n
l
g
n
+
d
n
T(n) ≤ cn{\rm lg}n + dn
T(n)≤cnlgn+dn。
以
T
(
1
)
=
1
T(1) = 1
T(1)=1为归纳证明的初始情况。将
n
=
1
n = 1
n=1代入归纳假设,有
T
(
1
)
≤
c
•
1
•
l
g
1
+
d
•
1
=
d
T(1) ≤ c•1•{\rm lg}1 + d•1 = d
T(1)≤c•1•lg1+d•1=d。只要取任意
c
>
0
c > 0
c>0并且
d
≥
1
d ≥ 1
d≥1,就能使得归纳假设对
T
(
1
)
T(1)
T(1)成立。
当
n
≥
2
n ≥ 2
n≥2时,假设命题对所有
1
,
2
,
…
,
n
−
1
1, 2, …, n−1
1,2,…,n−1都成立,有
T
(
n
)
=
2
T
(
⌊
n
/
2
⌋
)
+
n
≤
2
c
⌊
n
/
2
⌋
l
g
⌊
n
/
2
⌋
+
2
d
⌊
n
/
2
⌋
+
n
≤
c
n
l
g
(
n
/
2
)
+
d
n
+
n
=
c
n
l
g
n
−
c
n
+
d
n
+
n
T(n)=2T(⌊n/2⌋)+n≤2c⌊n/2⌋{\rm lg}⌊n/2⌋+2d⌊n/2⌋+n≤cn{\rm lg}(n/2)+dn+n=cn{\rm lg}n-cn+dn+n
T(n)=2T(⌊n/2⌋)+n≤2c⌊n/2⌋lg⌊n/2⌋+2d⌊n/2⌋+n≤cnlg(n/2)+dn+n=cnlgn−cn+dn+n
现在我们选取合适的
c
c
c和
d
d
d,使得不等式成立
c
n
l
g
n
−
c
n
+
d
n
+
n
≤
c
n
l
g
n
+
d
n
cn{\rm lg}n-cn+dn+n≤cn{\rm lg}n+dn
cnlgn−cn+dn+n≤cnlgn+dn成立。对这个不等式进行化简,得到
n
≤
c
n
n ≤ cn
n≤cn。显然,只要取
c
≥
1
c ≥ 1
c≥1,无论
d
d
d取何值,都能使得这个不等式成立,也就能使得
T
(
n
)
≤
c
n
l
g
n
+
d
n
T(n) ≤ cn{\rm lg}n + dn
T(n)≤cnlgn+dn成立。综合考虑初始情况
T
(
1
)
T(1)
T(1),我们最终要取
c
≥
1
c ≥ 1
c≥1并且
d
≥
1
d ≥ 1
d≥1。
因此,递归式
T
(
n
)
=
2
T
(
⌊
n
/
2
⌋
)
+
n
T(n)=2T(⌊n/2⌋)+n
T(n)=2T(⌊n/2⌋)+n的解为
O
(
n
l
g
n
)
O(n{\rm lg}n)
O(nlgn)。
4.3-5 证明:归并排序的“严格”递归式(4.3)的解为
Θ
(
n
l
g
n
)
Θ(n{\rm lg}n)
Θ(nlgn)。
解
归并排序的“严格”递归式为
为证明
T
(
n
)
=
Θ
(
n
l
g
n
)
T(n) = Θ(n{\rm lg}n)
T(n)=Θ(nlgn),需要分别证明
T
(
n
)
=
O
(
n
l
g
n
)
T(n) = O(n{\rm lg}n)
T(n)=O(nlgn)和
T
(
n
)
=
Ω
(
n
l
g
n
)
T(n) = Ω(n{\rm lg}n)
T(n)=Ω(nlgn)。
1. 证明
T
(
n
)
=
O
(
n
l
g
n
)
T(n) = O(n{\rm lg}n)
T(n)=O(nlgn),即存在正常数
c
c
c,使得
T
(
n
)
≤
c
n
l
g
n
T(n) ≤ cn{\rm lg}n
T(n)≤cnlgn对足够大的
n
n
n都成立。
取
T
(
1
)
=
1
T(1) = 1
T(1)=1,则
T
(
2
)
=
2
T
(
1
)
+
Θ
(
2
)
≤
2
+
2
d
T(2) = 2T(1) + Θ(2) ≤ 2 + 2d
T(2)=2T(1)+Θ(2)≤2+2d,其中
d
>
0
d > 0
d>0。对于
n
=
1
n = 1
n=1,无论
c
c
c取何值,都不能满足
T
(
1
)
≤
c
•
1
•
l
g
1
T(1) ≤ c•1•{\rm lg}1
T(1)≤c•1•lg1,因此归纳假设对
T
(
1
)
T(1)
T(1)不成立。
当
n
>
1
n > 1
n>1时,
T
(
n
)
=
T
(
⌈
n
/
2
⌉
)
+
T
(
⌊
n
/
2
⌋
)
+
Θ
(
n
)
T(n)=T(⌈n/2⌉)+T(⌊n/2⌋)+Θ(n)
T(n)=T(⌈n/2⌉)+T(⌊n/2⌋)+Θ(n)。根据
Θ
Θ
Θ记号的定义,
f
(
n
)
=
Θ
(
n
)
f(n) = Θ(n)
f(n)=Θ(n)意味着存在正常数
d
1
d_1
d1和
d
2
d_2
d2,使得
d
1
n
≤
f
(
n
)
≤
d
2
n
d_1n ≤ f(n) ≤ d_2n
d1n≤f(n)≤d2n对足够大的
n
n
n都成立。于是,当
n
>
1
n > 1
n>1时,递归式可以写为
T
(
⌈
n
/
2
⌉
)
+
T
(
⌊
n
/
2
⌋
)
+
d
1
n
≤
T
(
n
)
≤
T
(
⌈
n
/
2
⌉
)
+
T
(
⌊
n
/
2
⌋
)
+
d
2
n
T(⌈n/2⌉)+T(⌊n/2⌋)+d_1n≤T(n)≤T(⌈n/2⌉)+T(⌊n/2⌋)+d_2n
T(⌈n/2⌉)+T(⌊n/2⌋)+d1n≤T(n)≤T(⌈n/2⌉)+T(⌊n/2⌋)+d2n
将
n
=
2
n = 2
n=2代入递归式,得到
T
(
2
)
≤
2
T
(
1
)
+
2
d
2
=
2
+
2
d
2
T(2) ≤ 2T(1) + 2d_2 = 2 + 2d_2
T(2)≤2T(1)+2d2=2+2d2。只要取
c
≥
d
2
+
1
c ≥ d_2 + 1
c≥d2+1,就能使得
T
(
2
)
≤
c
•
2
•
l
g
2
T(2) ≤ c•2•{\rm lg}2
T(2)≤c•2•lg2成立。再将
n
=
3
n = 3
n=3代入递归式,得到
T
(
3
)
≤
T
(
1
)
+
T
(
2
)
+
3
d
2
≤
3
+
5
d
2
T(3) ≤ T(1) + T(2) + 3d_2 ≤ 3 + 5d_2
T(3)≤T(1)+T(2)+3d2≤3+5d2。只要取
c
≥
1
l
g
3
+
5
3
l
g
3
d
2
c≥\frac{1}{{\rm lg}3}+\frac{5}{3{\rm lg}3}d_2
c≥lg31+3lg35d2,就能使得
T
(
3
)
≤
c
•
3
•
l
g
3
T(3) ≤ c•3•lg3
T(3)≤c•3•lg3成立。我们要选取
T
(
2
)
T(2)
T(2)和
T
(
3
)
T(3)
T(3)作为归纳证明的初始条件,为了使
T
(
2
)
T(2)
T(2)和
T
(
3
)
T(3)
T(3)满足归纳假设,必须选取
c
≥
m
a
x
{
d
2
+
1
,
1
l
g
3
+
5
3
l
g
3
d
2
}
c≥{\rm max}\{d_2+1, \frac{1}{{\rm lg}3}+\frac{5}{3{\rm lg}3}d_2\}
c≥max{d2+1,lg31+3lg35d2}。
当
n
≥
4
n ≥ 4
n≥4时,假设
T
(
n
)
≤
c
n
l
g
n
T(n) ≤ cn{\rm lg}n
T(n)≤cnlgn对所有
2
,
3
,
…
,
n
−
1
2, 3, …, n−1
2,3,…,n−1都成立,有
现在我们要选取合适的
c
c
c,使得不等式
c
n
l
g
(
n
+
1
)
−
c
n
+
d
2
n
≤
c
n
l
g
n
cn{\rm lg}(n+1)-cn+d_2n≤cn{\rm lg}n
cnlg(n+1)−cn+d2n≤cnlgn成立。对这个不等式做一些变换。
当
n
≥
4
n ≥ 4
n≥4时,
d
2
(
1
−
l
g
(
1
+
1
/
n
)
)
\frac{d_2}{(1-{\rm lg}(1+1/n))}
(1−lg(1+1/n))d2是单调递减的,所以它在
n
=
4
n = 4
n=4时取得最大值为
d
2
3
−
l
g
5
\frac{d_2}{3-{\rm lg}5}
3−lg5d2。所以,当
n
≥
4
n ≥ 4
n≥4时,只要取
c
≥
d
2
3
−
l
g
5
c≥\frac{d_2}{3-{\rm lg}5}
c≥3−lg5d2,就能使得
c
n
l
g
(
n
+
1
)
−
c
n
+
d
2
n
≤
c
n
l
g
n
cn{\rm lg}(n+1)-cn+d_2n≤cn{\rm lg}n
cnlg(n+1)−cn+d2n≤cnlgn成立,即
T
(
n
)
≤
c
n
l
g
n
T(n) ≤ cn{\rm lg}n
T(n)≤cnlgn成立。综合考虑初始情况
T
(
2
)
T(2)
T(2)和
T
(
3
)
T(3)
T(3),我们最终要取
c
≥
m
a
x
{
d
2
+
1
,
1
l
g
3
+
5
3
l
g
3
d
2
,
d
2
3
−
l
g
5
}
c≥{\rm max}\{d_2+1, \frac{1}{{\rm lg}3}+\frac{5}{3{\rm lg}3}d_2, \frac{d_2}{3-lg5}\}
c≥max{d2+1,lg31+3lg35d2,3−lg5d2}。
因此,
T
(
n
)
=
O
(
n
l
g
n
)
T(n) = O(n{\rm lg}n)
T(n)=O(nlgn)成立。
2. 证明
T
(
n
)
=
Ω
(
n
l
g
n
)
T(n) = Ω(n{\rm lg}n)
T(n)=Ω(nlgn),即存在正常数
c
c
c,使得
T
(
n
)
≥
c
n
l
g
n
T(n) ≥ cn{\rm lg}n
T(n)≥cnlgn对足够大的
n
n
n都成立。
取初始情况
T
(
1
)
=
1
T(1) = 1
T(1)=1。无论
c
c
c取何值,都能使得
T
(
1
)
≥
c
•
1
•
l
g
1
T(1) ≥ c•1•{\rm lg}1
T(1)≥c•1•lg1成立。
当
n
≥
2
n ≥ 2
n≥2时,假设
T
(
n
)
≥
c
n
l
g
n
T(n) ≥ cn{\rm lg}n
T(n)≥cnlgn对所有
1
,
2
,
…
,
n
−
1
1, 2, …, n−1
1,2,…,n−1都成立,有
现在我们要选取合适的
c
c
c,使得不等式
c
n
l
g
(
n
−
1
)
−
c
n
+
d
1
n
≥
c
n
l
g
n
cn{\rm lg}(n-1)-cn+d_1n≥cn{\rm lg}n
cnlg(n−1)−cn+d1n≥cnlgn成立。对这个不等式做一些变换。
当
n
≥
2
n ≥ 2
n≥2时,
d
1
1
−
l
g
(
1
−
1
/
n
)
\frac{d_1}{1-{\rm lg}(1-1/n)}
1−lg(1−1/n)d1是单调递增的,并且在
n
=
2
n = 2
n=2时取得最小值为
d
2
/
2
d_2/2
d2/2。因此,当
n
≥
2
n ≥ 2
n≥2时,只要取
c
≤
d
2
/
2
c ≤ d_2/2
c≤d2/2,就能使得
c
n
l
g
(
n
−
1
)
−
c
n
+
d
1
n
≥
c
n
l
g
n
cn{\rm lg}(n-1)-cn+d_1n≥cn{\rm lg}n
cnlg(n−1)−cn+d1n≥cnlgn成立,即
T
(
n
)
≥
c
n
l
g
n
T(n) ≥ cn{\rm lg}n
T(n)≥cnlgn成立。综合考虑初始情况
T
(
2
)
T(2)
T(2)和
T
(
3
)
T(3)
T(3),我们最终要取
c
≤
d
2
/
2
c ≤ d_2/2
c≤d2/2。
因此,
T
(
n
)
=
Ω
(
n
l
g
n
)
T(n) = Ω(n{\rm lg}n)
T(n)=Ω(nlgn)成立。
4.3-6 证明:
T
(
n
)
=
2
T
(
⌊
n
/
2
⌋
+
17
)
+
n
T(n)=2T(⌊n/2⌋+17)+n
T(n)=2T(⌊n/2⌋+17)+n的解为
O
(
n
l
g
n
)
O(n{\rm lg}n)
O(nlgn)。
解
我们要证明的是存在正常数
c
c
c,使得
T
(
n
)
≤
c
n
l
g
n
T(n) ≤ cn{\rm lg}n
T(n)≤cnlgn对足够大的
n
n
n都成立。然而,直接证明
T
(
n
)
≤
c
n
l
g
n
T(n) ≤ cn{\rm lg}n
T(n)≤cnlgn比较困难,我们不妨尝试证明
T
(
n
)
≤
c
(
n
−
34
)
l
g
(
n
−
34
)
T(n) ≤ c(n−34){\rm lg}(n−34)
T(n)≤c(n−34)lg(n−34)。由于
c
(
n
−
34
)
l
g
(
n
−
34
)
<
c
n
l
g
n
c(n−34){\rm lg}(n−34) < cn{\rm lg}n
c(n−34)lg(n−34)<cnlgn是显而易见的,所以证明了
T
(
n
)
≤
c
(
n
−
34
)
l
g
(
n
−
34
)
T(n) ≤ c(n−34){\rm lg}(n−34)
T(n)≤c(n−34)lg(n−34),也就证明了
T
(
n
)
≤
c
n
l
g
n
T(n) ≤ cn{\rm lg}n
T(n)≤cnlgn,即
T
(
n
)
=
O
(
n
l
g
n
)
T(n) = O(n{\rm lg}n)
T(n)=O(nlgn)。
首先有必要分析这个递归式的边界条件。只有当
n
>
⌊
n
/
2
⌋
+
17
n>⌊n/2⌋+17
n>⌊n/2⌋+17时,这个递归式才有意义。当
n
=
⌊
n
/
2
⌋
+
17
n=⌊n/2⌋+17
n=⌊n/2⌋+17时,递归式变成
T
(
n
)
=
T
(
n
)
+
n
T(n)=T(n)+n
T(n)=T(n)+n,这个式子显然是自我矛盾的。当
n
<
⌊
n
/
2
⌋
+
17
n<⌊n/2⌋+17
n<⌊n/2⌋+17时,
T
(
n
)
T(n)
T(n)依赖于规模更大的子问题的运行时间,这显然不符合递归的本质。求解不等式
n
>
⌊
n
/
2
⌋
+
17
n>⌊n/2⌋+17
n>⌊n/2⌋+17,得到
n
>
34
n > 34
n>34。因此只有当
n
>
34
n > 34
n>34时,递归式才有意义,而
n
<
34
n < 34
n<34都是这个递归式的边界条件。
根据以上分析,递归式的初始情况必须覆盖
T
(
1
)
,
T
(
2
)
,
…
,
T
(
34
)
T(1), T(2), …, T(34)
T(1),T(2),…,T(34)。然而在归纳证明中,
T
(
1
)
,
T
(
2
)
,
…
,
T
(
33
)
T(1), T(2), …, T(33)
T(1),T(2),…,T(33)都可以忽略,因为当
n
>
34
n > 34
n>34时,
T
(
n
)
T(n)
T(n)只有可能依赖
T
(
34
)
T(34)
T(34),而不可能依赖
T
(
1
)
,
T
(
2
)
,
…
,
T
(
33
)
T(1), T(2), …, T(33)
T(1),T(2),…,T(33),我们取
T
(
34
)
=
1
T(34) = 1
T(34)=1。
如果以
T
(
34
)
T(34)
T(34)作为归纳证明的初始情况,将
n
=
34
n = 34
n=34代入归纳假设,得到不等式
T
(
34
)
≤
c
•
(
34
−
34
)
l
g
(
34
−
34
)
=
c
•
0
•
l
g
0
T(34) ≤ c•(34−34){\rm lg}(34−34) = c•0•{\rm lg}0
T(34)≤c•(34−34)lg(34−34)=c•0•lg0,这个式子中的
l
g
0
{\rm lg}0
lg0是没有意义。因此
T
(
34
)
T(34)
T(34)不能作为归纳证明的初始情况。
下面考虑
T
(
35
)
T(35)
T(35)。根据递归式得到
T
(
35
)
=
2
T
(
34
)
+
35
=
37
T(35) = 2T(34) + 35 = 37
T(35)=2T(34)+35=37。将
n
=
35
n = 35
n=35代入归纳假设,得到不等式
T
(
35
)
≤
c
•
(
35
−
34
)
l
g
(
35
−
34
)
=
c
•
1
•
l
g
1
=
0
T(35) ≤ c•(35−34){\rm lg}(35−34) = c•1•{\rm lg}1 = 0
T(35)≤c•(35−34)lg(35−34)=c•1•lg1=0。显然,无论
c
c
c取何值,这个不等式都不成立。因此
T
(
35
)
T(35)
T(35)也不能作为归纳证明的初始情况。
下面继续考虑
T
(
36
)
T(36)
T(36)。根据递归式得到
T
(
36
)
=
2
T
(
35
)
+
36
=
110
T(36) = 2T(35) + 36 = 110
T(36)=2T(35)+36=110。将
n
=
36
n = 36
n=36代入归纳假设,得到不等式
T
(
36
)
≤
c
•
(
36
−
34
)
l
g
(
36
−
34
)
=
c
•
2
•
l
g
2
=
2
c
T(36) ≤ c•(36−34){\rm lg}(36−34) = c•2•{\rm lg}2 = 2c
T(36)≤c•(36−34)lg(36−34)=c•2•lg2=2c。显然,只要取
c
≥
55
c ≥ 55
c≥55,就能使这个不等式成立,也就能使得
T
(
36
)
T(36)
T(36)满足归纳假设。因此
T
(
36
)
T(36)
T(36)可以作为归纳证明的初始情况。
还要继续考虑
T
(
37
)
T(37)
T(37),因为
T
(
37
)
T(37)
T(37)依赖于
T
(
35
)
T(35)
T(35),而根据刚才分析,
T
(
35
)
T(35)
T(35)并不符合归纳假设。根据递归式得到
T
(
37
)
=
2
T
(
35
)
+
37
=
111
T(37) = 2T(35) + 37 = 111
T(37)=2T(35)+37=111。将
n
=
37
n = 37
n=37代入归纳假设,得到不等式
T
(
37
)
≤
c
•
(
37
−
34
)
l
g
(
37
−
34
)
=
c
•
3
•
l
g
3
T(37) ≤ c•(37−34){\rm lg}(37−34) = c•3•{\rm lg}3
T(37)≤c•(37−34)lg(37−34)=c•3•lg3。显然,只要取
c
≥
111
/
(
3
l
g
3
)
=
37
l
g
3
≈
23.34
c ≥ 111/(3{\rm lg}3) = 37{\rm lg}3 ≈ 23.34
c≥111/(3lg3)=37lg3≈23.34,就能使这个不等式成立,也就能使得
T
(
37
)
T(37)
T(37)满足归纳假设。
根据以上分析,归纳证明的初始情况应当取
T
(
36
)
T(36)
T(36)和
T
(
37
)
T(37)
T(37),并且
c
c
c的取值应当满足
c
≥
55
c ≥ 55
c≥55。
当
n
≥
38
n ≥ 38
n≥38时,假设
T
(
n
)
≤
c
(
n
−
34
)
l
g
(
n
−
34
)
T(n) ≤c(n−34){\rm lg}(n−34)
T(n)≤c(n−34)lg(n−34)对所有
36
,
37
,
…
,
n
−
1
36, 37, …, n−1
36,37,…,n−1都成立,有
现在我们要选取合适的
c
c
c,使得不等式
c
(
n
−
34
)
l
g
(
n
−
34
)
−
c
(
n
−
34
)
+
n
≤
c
(
n
−
34
)
l
g
(
n
−
34
)
c(n-34){\rm lg}(n-34)-c(n-34)+n≤c(n-34){\rm lg}(n-34)
c(n−34)lg(n−34)−c(n−34)+n≤c(n−34)lg(n−34)成立。对这个不等式做一些变换。
当
n
≥
38
n ≥ 38
n≥38时,
1
1
−
34
/
n
\frac{1}{1-34/n}
1−34/n1是单调递降的,并且在
n
=
38
n = 38
n=38时取得最大值为
19
/
2
19/2
19/2。因此,只要选取
c
≥
19
/
2
c ≥ 19/2
c≥19/2,就能使得不等式
c
(
n
−
34
)
l
g
(
n
−
34
)
−
c
(
n
−
34
)
+
n
≤
c
(
n
−
34
)
l
g
(
n
−
34
)
c(n-34){\rm lg}(n-34)-c(n-34)+n≤c(n-34){\rm lg}(n-34)
c(n−34)lg(n−34)−c(n−34)+n≤c(n−34)lg(n−34)成立,也就能使得
T
(
n
)
≤
c
(
n
−
34
)
l
g
(
n
−
34
)
T(n) ≤ c(n−34){\rm lg}(n−34)
T(n)≤c(n−34)lg(n−34)成立。综合考虑初始情况
T
(
36
)
T(36)
T(36)和
T
(
37
)
T(37)
T(37),我们最终要取c ≥ 55。
因此,
T
(
n
)
=
2
T
(
⌊
n
/
2
⌋
+
17
)
+
n
T(n)=2T(⌊n/2⌋+17)+n
T(n)=2T(⌊n/2⌋+17)+n的解为
O
(
n
l
g
n
)
O(n{\rm lg}n)
O(nlgn)。
4.3-7 使用4.5节中的主方法,可以证明
T
(
n
)
=
4
T
(
n
/
3
)
+
n
T(n) = 4T(n/3)+n
T(n)=4T(n/3)+n的解为
T
(
n
)
=
Θ
(
n
l
o
g
3
4
)
T(n)=Θ(n^{{\rm log}_3 4})
T(n)=Θ(nlog34)。说明基于假设
T
(
n
)
≤
c
n
l
o
g
3
4
T(n)≤cn^{{\rm log}_3 4}
T(n)≤cnlog34的代入法不能证明这一结论。然后说明如何通过减去一个低阶项完成代入法证明。
解
如果直接假设
T
(
n
)
≤
c
n
l
o
g
3
4
T(n)≤cn^{{\rm log}_3 4}
T(n)≤cnlog34,那么根据递归式有
可以看到,无论
c
c
c取何值,都不能使得
T
(
n
)
≤
c
n
l
o
g
3
4
T(n)≤cn^{{\rm log}_34}
T(n)≤cnlog34成立。
下面试试在归纳假设中减去一个低阶项
d
n
dn
dn,即假设
T
(
n
)
≤
c
n
l
o
g
3
4
−
d
n
T(n)≤cn^{{\rm log}_3 4}-dn
T(n)≤cnlog34−dn,其中
d
>
0
d > 0
d>0。那么根据递归式,有
可以看到,只要取
d
≥
3
d ≥ 3
d≥3,
c
n
l
o
g
3
4
−
4
3
d
n
+
n
≤
c
n
l
o
g
3
4
−
d
n
cn^{{\rm log}_34}-\frac{4}{3}dn+n≤cn^{{\rm log}_34}-dn
cnlog34−34dn+n≤cnlog34−dn一定成立,也即
T
(
n
)
≤
c
n
l
o
g
3
4
−
d
n
T(n)≤cn^{{\rm log}_3 4}-dn
T(n)≤cnlog34−dn成立。因此,减去一个低阶项
d
n
dn
dn,就可以应用代入法了。
4.3-8 使用4.5节中的主方法,可以证明
T
(
n
)
=
4
T
(
n
/
2
)
+
n
T(n) = 4T(n/2)+n
T(n)=4T(n/2)+n的解为
T
(
n
)
=
Θ
(
n
2
)
T(n)=Θ(n^2)
T(n)=Θ(n2)。说明基于假设
T
(
n
)
≤
c
n
2
T(n)≤cn^2
T(n)≤cn2的代入法不能证明这一结论。然后说明如何通过减去一个低阶项完成代入法证明。
解
如果直接假设
T
(
n
)
≤
c
n
2
T(n)≤cn^2
T(n)≤cn2,那么根据递归式有
可以看到,无论
c
c
c取何值,都不能使得
T
(
n
)
≤
c
n
2
T(n)≤cn^2
T(n)≤cn2成立。
下面试试在归纳假设中减去一个低阶项
d
n
dn
dn,即假设
T
(
n
)
≤
c
n
2
−
d
n
T(n)≤cn^2-dn
T(n)≤cn2−dn,其中
d
>
0
d > 0
d>0。那么根据递归式,有
可以看到,只要取
d
≥
1
d ≥ 1
d≥1,
c
n
2
−
2
d
n
+
n
≤
c
n
2
−
d
n
cn^2-2dn+n≤cn^2-dn
cn2−2dn+n≤cn2−dn一定成立,也即
T
(
n
)
≤
c
n
2
−
d
n
T(n)≤cn^2-dn
T(n)≤cn2−dn成立。因此,减去一个低阶项
d
n
dn
dn,就可以应用代入法了。
4.3-9 利用改变变量的方法求解递归式
T
(
n
)
=
3
T
(
n
)
+
l
g
n
T(n)=3T(\sqrt{n})+{\rm lg}n
T(n)=3T(n)+lgn。你的解应该是渐近紧确的。不必担心数值是否是整数。
解
令
m
=
l
g
n
m = {\rm lg}n
m=lgn,所以
n
=
2
m
n = 2^m
n=2m,代入递归式,得到
T
(
2
m
)
=
3
T
(
2
m
/
2
)
+
m
T(2^m)=3T(2^{m/2})+m
T(2m)=3T(2m/2)+m
令
S
(
m
)
=
T
(
2
m
)
S(m) = T(2^m)
S(m)=T(2m),得到
S
(
m
)
=
3
S
(
m
/
2
)
+
m
S(m) = 3S(m/2) + m
S(m)=3S(m/2)+m
求解递归式
S
(
m
)
=
3
S
(
m
/
2
)
+
m
S(m) = 3S(m/2) + m
S(m)=3S(m/2)+m,得到
S
(
m
)
=
Θ
(
m
l
g
3
)
S(m) = Θ(m^{{\rm lg}3})
S(m)=Θ(mlg3)。
所以
T
(
n
)
=
T
(
2
m
)
=
S
(
m
)
=
Θ
(
m
l
g
3
)
=
Θ
(
l
g
n
l
g
3
)
T(n) = T(2^m) = S(m) = Θ(m^{{\rm lg}3}) = Θ({\rm lg}n^{{\rm lg}3})
T(n)=T(2m)=S(m)=Θ(mlg3)=Θ(lgnlg3)。