4.3 用代入法求解递归式
一.
1. 代入法
1.1
代入法 求解递归式分为两步:
1. 猜测解的形式。
2. 用数学归纳法求出解中的常数,并证明解是正确的。
1.2
数学归纳法要求我们证明解在边界条件下也成立。为证明这一点,我们通常证明对于归纳证明,边界条件适合作为基本情况。
1.3 微妙的细节
才出了递归式解的渐近界,但在归纳证明时失败。问题常常在于归纳假设不够强,无法证出准确的界。当遇到这种障碍时,如果修改猜测,将他减去一个低阶的项,数学证明常常能顺利进行。
当利用归纳法证明一个上界时,实际上证明一个更弱的上界可能会更困难一些。因为为了证明一个更弱的上界,我们在归纳证明中也必须使用同样更弱的界。
1.4 避免陷阱
使用渐进符号很容易出错。需要显式地证明出与归纳假设严格一致的形式。
1.5 改变变量
使用换元法,一个小的代数运算可以将一个未知的递归式改变成你所熟悉的形式。
二.
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)。
证明:当
n
=
1
n = 1
n=1 时,
T
(
1
)
≤
1
/
2
∗
1
2
+
1
/
2
∗
1
=
1
2
=
1
T(1)≤1/2 * 1^2+1/2 * 1=1^2=1
T(1)≤1/2∗12+1/2∗1=12=1
假设当
n
<
m
n < m
n<m 时,存在正常数
c
>
1
2
c>\frac{1}{2}
c>21,
T
(
n
)
≤
c
n
2
+
c
n
T(n)≤cn^2+cn
T(n)≤cn2+cn
当
n
=
m
n=m
n=m 时,
T
(
m
)
=
T
(
m
−
1
)
+
m
≤
c
(
m
−
1
)
2
+
c
(
m
−
1
)
+
m
=
c
m
2
−
(
c
−
1
)
m
≤
c
m
2
+
c
m
\begin{aligned}T(m)&=T(m-1)+m\\&≤c(m-1)^2+c(m-1)+m\\&=cm^2-(c-1)m\\&≤cm^2+cm\end{aligned}
T(m)=T(m−1)+m≤c(m−1)2+c(m−1)+m=cm2−(c−1)m≤cm2+cm
综上所述,解为
O
(
n
2
)
O(n^2)
O(n2)。
4.3-2
证明: T ( n ) = T ( ⌈ n 2 ⌉ ) + 1 T(n)=T(\lceil\frac{n}{2}\rceil)+1 T(n)=T(⌈2n⌉)+1 的解为 O ( lg n ) O(\lg n) O(lgn)。
证明:当
n
=
2
n = 2
n=2 时,
T
(
2
)
=
2
≤
2
∗
lg
2
=
3
T(2)=2≤2*\lg2=3
T(2)=2≤2∗lg2=3
假设当
n
<
m
n < m
n<m 时,存在正常数
c
≥
2
c≥2
c≥2,
T
(
n
)
≤
c
lg
n
T(n)≤c\lg n
T(n)≤clgn
当
n
=
m
n=m
n=m 时,
T
(
m
)
=
T
(
⌈
m
2
⌉
)
+
1
≤
c
lg
(
⌈
m
2
⌉
)
+
1
≤
c
lg
(
m
2
)
+
1
≤
c
lg
m
+
1
−
c
2
≤
c
lg
m
\begin{aligned}T(m)&=T(\lceil\frac{m}{2}\rceil)+1\\&≤c\lg(\lceil\frac{m}{2}\rceil)+1\\&≤c\lg(\frac{m}{\sqrt2})+1\\&≤c\lg m+1-\frac{c}{2}\\&≤c\lg m\end{aligned}
T(m)=T(⌈2m⌉)+1≤clg(⌈2m⌉)+1≤clg(2m)+1≤clgm+1−2c≤clgm
综上所述,解为
O
(
lg
n
)
O(\lg n)
O(lgn)。
4.3-3
我们看到 T ( n ) = 2 T ( ⌈ n / 2 ⌉ ) + n T(n) = 2T(\lceil n/2\rceil)+n T(n)=2T(⌈n/2⌉)+n 的解为 O ( n lg n ) O(n\lg n) O(nlgn)。证明 Ω ( n lg n ) \Omega(n\lg n) Ω(nlgn) 也是这个递归式的解。从而得出结论:解为 Θ ( n lg n ) \Theta(n\lg n) Θ(nlgn)
证明:当
n
=
2
n = 2
n=2 时,
T
(
2
)
=
3
≥
2
∗
lg
2
=
3
T(2)=3≥2*\lg2=3
T(2)=3≥2∗lg2=3
假设当
n
<
m
n < m
n<m 时,存在正常数
c
≥
1
c≥1
c≥1,
T
(
n
)
≥
c
n
lg
n
+
(
2
−
2
c
)
n
T(n)≥cn\lg n+(2-2c)n
T(n)≥cnlgn+(2−2c)n
当
n
=
m
n=m
n=m 时,
T
(
m
)
=
2
T
(
⌈
m
2
⌉
)
+
m
≥
2
c
⌈
m
2
⌉
lg
(
⌈
m
2
⌉
)
+
d
⌈
m
2
⌉
+
m
≥
c
m
lg
(
m
2
)
+
(
1
−
c
)
m
+
m
=
c
m
lg
m
+
(
2
−
2
c
)
m
\begin{aligned}T(m)&=2T(\lceil\frac{m}{2}\rceil)+m\\&≥2c\lceil\frac{m}{2}\rceil\lg(\lceil\frac{m}{2}\rceil)+d\lceil\frac{m}{2}\rceil+m\\&≥cm\lg(\frac{m}{2})+(1-c)m+m\\&=cm\lg m+(2-2c)m\end{aligned}
T(m)=2T(⌈2m⌉)+m≥2c⌈2m⌉lg(⌈2m⌉)+d⌈2m⌉+m≥cmlg(2m)+(1−c)m+m=cmlgm+(2−2c)m
综上所述,解为
Ω
(
n
lg
n
)
\Omega(n\lg n)
Ω(nlgn),又由于
O
(
n
lg
n
)
O(n\lg n)
O(nlgn) 也是它的解,故而解为
Θ
(
n
lg
n
)
\Theta(n\lg n)
Θ(nlgn)。
4.3-4
证明:通过做出不同的归纳假设,我们不必调整归纳证明中的边界条件,即可克服递归式 (4.19) 中边界条件 T ( 1 ) = 1 T(1) = 1 T(1)=1 带来的困难。 T ( n ) = 2 T ( ⌊ n 2 ⌋ ) + n ( 3.19 ) T(n) = 2T(\lfloor\frac{n}{2}\rfloor)+n \space\space\space\space\space(3.19) T(n)=2T(⌊2n⌋)+n (3.19)
证明:当
n
=
1
n = 1
n=1 时,
T
(
1
)
=
1
≤
1
∗
lg
1
+
1
=
1
T(1)=1≤1*\lg1+1=1
T(1)=1≤1∗lg1+1=1
假设当
n
<
m
n < m
n<m 时,存在正常数
c
>
1
c>1
c>1,
T
(
n
)
≤
c
n
lg
n
+
n
T(n)≤cn\lg n+n
T(n)≤cnlgn+n
当
n
=
m
n=m
n=m 时,
T
(
m
)
=
2
T
(
⌊
m
2
⌋
)
+
m
≤
2
c
⌊
m
2
⌋
lg
(
⌊
m
2
⌋
)
+
2
m
≤
c
m
lg
m
+
(
2
−
c
)
m
≤
c
m
lg
m
+
m
\begin{aligned}T(m)&=2T(\lfloor\frac{m}{2}\rfloor)+m\\&≤2c\lfloor\frac{m}{2}\rfloor\lg(\lfloor\frac{m}{2}\rfloor)+2m\\&≤cm\lg m+(2-c)m\\&≤cm\lg m+m\end{aligned}
T(m)=2T(⌊2m⌋)+m≤2c⌊2m⌋lg(⌊2m⌋)+2m≤cmlgm+(2−c)m≤cmlgm+m 综上所述,解为
O
(
n
lg
n
)
O(n\lg n)
O(nlgn)
4.3-5
证明:归并排序的“严格”递归式 (4.3) 的解为 Θ ( n lg n ) \Theta(n\lg n) Θ(nlgn)。 T ( n ) = { Θ ( 1 ) , 若n=1 T ( ⌈ n 2 ⌉ ) + T ( ⌊ n 2 ⌋ ) + Θ ( n ) 若n>1 T(n)=\begin{cases}\Theta(1),&\text{若n=1}\\T(\lceil\frac{n}{2}\rceil)+T(\lfloor\frac{n}{2}\rfloor)+\Theta(n)&\text{若n>1}\end{cases} T(n)={Θ(1),T(⌈2n⌉)+T(⌊2n⌋)+Θ(n)若n=1若n>1
证明:当
n
=
1
n=1
n=1 时,
T
(
1
)
≤
1
lg
1
+
1
=
1
T(1)≤1\lg 1+1=1
T(1)≤1lg1+1=1且
T
(
1
)
≥
1
lg
1
−
1
T(1)≥1\lg 1-1
T(1)≥1lg1−1
由于存在正常数
c
3
,
c
4
c_3,c_4
c3,c4,
c
3
n
≤
Θ
(
n
)
≤
c
4
n
c_3n≤\Theta(n)≤c_4n
c3n≤Θ(n)≤c4n
那么假设当
n
<
m
n < m
n<m 时,存在正常数
c
1
>
c
3
,
c
2
>
c
4
c_1>c_3,c_2>c_4
c1>c3,c2>c4,对于
n
>
max
(
2
c
2
,
2
c
1
)
n>\max(2c_2,2c_1)
n>max(2c2,2c1),
c
1
(
n
+
2
)
lg
(
n
+
2
)
≤
T
(
n
)
≤
c
2
(
n
−
2
)
lg
(
n
−
2
)
c_1(n+2)\lg (n+2)≤T(n)≤c_2(n-2)\lg (n-2)
c1(n+2)lg(n+2)≤T(n)≤c2(n−2)lg(n−2),于是
当
n
=
m
n=m
n=m 时,
T
(
m
)
=
T
(
⌈
m
2
⌉
)
+
T
(
⌊
m
2
⌋
)
+
Θ
(
m
)
≤
c
2
(
⌈
m
2
⌉
−
2
)
lg
(
⌈
m
2
⌉
−
2
)
+
c
2
(
m
2
−
2
)
lg
(
m
2
−
2
)
+
c
4
m
≤
c
2
(
m
2
+
1
−
2
)
lg
(
m
2
+
1
−
2
)
+
c
2
(
m
2
−
2
)
lg
(
m
2
−
2
)
+
c
4
m
=
c
2
(
m
2
−
1
)
lg
(
m
2
−
1
)
+
c
2
(
m
2
−
2
)
lg
(
m
2
−
2
)
+
c
4
m
≤
2
c
2
m
−
2
2
lg
m
−
2
2
+
c
4
m
≤
c
2
(
m
−
2
)
lg
m
−
2
2
+
c
4
m
−
c
2
(
m
−
2
)
≤
c
2
(
m
−
2
)
lg
(
m
−
2
)
\begin{aligned}T(m) &=T(\lceil\frac{m}{2}\rceil)+T(\lfloor\frac{m}{2}\rfloor)+\Theta(m)\\ &≤c_2(\lceil\frac{m}{2}\rceil-2)\lg(\lceil\frac{m}{2}\rceil-2)+c_2(\frac{m}{2}-2)\lg(\frac{m}{2}-2)+c_4m\\ &≤c_2(\frac{m}{2}+1-2)\lg(\frac{m}{2}+1-2)+c_2(\frac{m}{2}-2)\lg(\frac{m}{2}-2)+c_4m\\ &=c_2(\frac{m}{2}-1)\lg(\frac{m}{2}-1)+c_2(\frac{m}{2}-2)\lg(\frac{m}{2}-2)+c_4m\\ &≤2c_2\frac{m-2}{2}\lg\frac{m-2}{2}+c_4m\\ &≤c_2(m-2)\lg\frac{m-2}{2}+c_4m-c_2(m-2)\\ &≤c_2(m-2)\lg (m-2) \end{aligned}
T(m)=T(⌈2m⌉)+T(⌊2m⌋)+Θ(m)≤c2(⌈2m⌉−2)lg(⌈2m⌉−2)+c2(2m−2)lg(2m−2)+c4m≤c2(2m+1−2)lg(2m+1−2)+c2(2m−2)lg(2m−2)+c4m=c2(2m−1)lg(2m−1)+c2(2m−2)lg(2m−2)+c4m≤2c22m−2lg2m−2+c4m≤c2(m−2)lg2m−2+c4m−c2(m−2)≤c2(m−2)lg(m−2)
T
(
m
)
=
T
(
⌈
m
2
⌉
)
+
T
(
⌊
m
2
⌋
)
+
Θ
(
m
)
≥
c
1
(
⌈
m
2
⌉
+
2
)
lg
(
⌈
m
2
⌉
+
2
)
+
c
1
(
⌊
m
2
⌋
+
2
)
lg
(
⌊
m
2
⌋
+
2
)
+
c
3
m
≥
c
1
(
m
2
+
2
)
lg
(
m
2
+
2
)
+
c
1
(
m
2
−
1
+
2
)
lg
(
m
2
−
1
+
2
)
+
c
3
m
=
c
1
(
m
2
+
2
)
lg
(
m
2
+
2
)
+
c
1
(
m
2
+
1
)
lg
(
m
2
+
1
)
+
c
3
m
≥
2
c
1
m
+
2
2
lg
m
+
2
2
+
c
3
m
≥
c
1
(
m
+
2
)
lg
(
m
+
2
)
+
c
3
m
−
c
1
(
m
+
2
)
≥
c
1
(
m
+
2
)
lg
(
m
+
2
)
\begin{aligned}T(m) &=T(\lceil\frac{m}{2}\rceil)+T(\lfloor\frac{m}{2}\rfloor)+\Theta(m)\\ &≥c_1(\lceil\frac{m}{2}\rceil+2)\lg(\lceil\frac{m}{2}\rceil+2)+c_1(\lfloor\frac{m}{2}\rfloor+2)\lg(\lfloor\frac{m}{2}\rfloor+2)+c_3m\\ &≥c_1(\frac{m}{2}+2)\lg(\frac{m}{2}+2)+c_1(\frac{m}{2}-1+2)\lg(\frac{m}{2}-1+2)+c_3m\\ &=c_1(\frac{m}{2}+2)\lg(\frac{m}{2}+2)+c_1(\frac{m}{2}+1)\lg(\frac{m}{2}+1)+c_3m\\ &≥2c_1\frac{m+2}{2}\lg\frac{m+2}{2}+c_3m\\ &≥c_1(m+2)\lg(m+2)+c_3m-c_1(m+2)\\ &≥c_1(m+2)\lg (m+2)\\ \end{aligned}
T(m)=T(⌈2m⌉)+T(⌊2m⌋)+Θ(m)≥c1(⌈2m⌉+2)lg(⌈2m⌉+2)+c1(⌊2m⌋+2)lg(⌊2m⌋+2)+c3m≥c1(2m+2)lg(2m+2)+c1(2m−1+2)lg(2m−1+2)+c3m=c1(2m+2)lg(2m+2)+c1(2m+1)lg(2m+1)+c3m≥2c12m+2lg2m+2+c3m≥c1(m+2)lg(m+2)+c3m−c1(m+2)≥c1(m+2)lg(m+2) 综上所述,解为
Θ
(
n
lg
n
)
\Theta(n\lg n)
Θ(nlgn)
4.3-6
证明: T ( n ) = 2 T ( ⌊ n 2 ⌋ + 17 ) + n T(n)=2T(\lfloor\frac{n}{2}\rfloor+17)+n T(n)=2T(⌊2n⌋+17)+n 的解为 O ( n lg n ) O(n\lg n) O(nlgn)
证明:当 n = 34 n=34 n=34 时, T ( 34 ) T(34) T(34) 符合条件 。对取定的 c > 1 c > 1 c>1,假定 T ( n ) ≤ c ( n − 34 ) lg ( n − 34 ) T(n) ≤ c(n-34)\lg (n-34) T(n)≤c(n−34)lg(n−34) 对 n < m n < m n<m 成立,则 T ( m ) = T ( ⌊ m / 2 ⌋ + 17 ) + m ≤ 2 c ( ⌊ m / 2 ⌋ − 17 ) lg ( ⌊ m / 2 ⌋ − 17 ) + m ≤ c ( m − 34 ) lg ( m − 34 ) T(m) = T(\lfloor m/2\rfloor+17)+m≤2c(\lfloor m/2\rfloor-17)\lg (\lfloor m/2\rfloor-17)+m≤c(m-34)\lg (m-34) T(m)=T(⌊m/2⌋+17)+m≤2c(⌊m/2⌋−17)lg(⌊m/2⌋−17)+m≤c(m−34)lg(m−34),从而解为 O ( n lg n ) O(n\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 log 3 4 ) T(n)=\Theta(n^{\log_34}) T(n)=Θ(nlog34)。说明基于假设 T ( n ) ≤ c n log 3 4 T(n)≤cn^{\log_34} T(n)≤cnlog34 的代入法不能证明这一结论。然后说明如何通过减去一个低阶项完成代入法证明。
解:(1).对取定的
c
>
0
c > 0
c>0,假定
T
(
n
)
≤
c
n
log
3
4
T(n) ≤ cn^{\log_34}
T(n)≤cnlog34 对
n
<
m
n < m
n<m 成立,则
T
(
m
)
=
4
T
(
n
/
3
)
+
n
≤
4
c
(
n
/
3
)
log
3
4
+
n
=
c
n
log
3
4
+
n
T(m) = 4T(n/3)+n≤4c(n/3)^{\log_34}+n=cn^{\log_34}+n
T(m)=4T(n/3)+n≤4c(n/3)log34+n=cnlog34+n,这意味着可能不是所有的
T
(
n
)
≤
c
n
log
3
4
T(n) ≤cn^{\log_34}
T(n)≤cnlog34
(2).对取定的
c
>
4
c > 4
c>4,
T
(
1
)
=
1
<
c
−
3
T(1)=1<c-3
T(1)=1<c−3。假定
T
(
n
)
≤
c
n
log
3
4
−
3
n
T(n) ≤ cn^{\log_34}-3n
T(n)≤cnlog34−3n 对
n
<
m
n < m
n<m 成立,则
T
(
m
)
=
4
T
(
n
/
3
)
+
n
≤
c
n
log
3
4
−
4
n
+
n
≤
c
n
2
−
3
n
T(m) = 4T(n/3)+n≤cn^{\log_34}-4n+n≤cn^2-3n
T(m)=4T(n/3)+n≤cnlog34−4n+n≤cn2−3n,从而解为
O
(
n
log
3
4
)
O(n^{\log_34})
O(nlog34)
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)=\Theta(n^2) T(n)=Θ(n2) 。说明基于假设 T ( n ) ≤ c n 2 T(n)≤cn^{2} T(n)≤cn2 的代入法不能证明这一结论。然后说明如何通过减去一个低阶项完成代入法证明。
解:(1).对取定的
c
>
0
c > 0
c>0,假定
T
(
n
)
≤
c
n
2
T(n) ≤ cn^2
T(n)≤cn2 对
n
<
m
n < m
n<m 成立,则
T
(
m
)
=
4
T
(
n
/
2
)
+
n
≤
(
c
+
1
)
n
2
T(m) = 4T(n/2)+n≤(c+1)n^2
T(m)=4T(n/2)+n≤(c+1)n2,这意味着可能不是所有的
T
(
n
)
≤
c
n
2
T(n) ≤cn^2
T(n)≤cn2
(2).对取定的
c
>
1
c > 1
c>1,
T
(
1
)
=
1
<
c
−
1
T(1)=1<c-1
T(1)=1<c−1。 假定
T
(
n
)
≤
c
n
2
−
n
T(n) ≤ cn^2-n
T(n)≤cn2−n 对
n
<
m
n < m
n<m 成立,则
T
(
m
)
=
4
T
(
n
/
2
)
+
n
≤
c
n
2
−
2
n
+
n
≤
c
n
2
−
n
T(m) = 4T(n/2)+n≤cn^2-2n+n≤cn^2-n
T(m)=4T(n/2)+n≤cn2−2n+n≤cn2−n,从而解为
O
(
n
2
)
O(n^2)
O(n2)
4.3-9
利用改变变量的方法求解递归式 T ( n ) = 3 T ( n ) + log n T(n)=3T(\sqrt n)+\log n T(n)=3T(n)+logn 你的解应该是渐近紧确的。不必担心数值是否是整数。
解:令 m = log n m=\log n m=logn,则原式转换为 T ( 2 m ) = 3 T ( 2 m − 1 ) + m T(2^m)=3T(2^{m-1})+m T(2m)=3T(2m−1)+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 ,此式说明复杂度为 Θ ( m lg 3 ) \Theta(m^{\lg 3}) Θ(mlg3),从而解为 Θ ( lg lg 3 n ) \Theta(\lg^{\lg3}n) Θ(lglg3n)