第四章 分治策略 4.3 用代入法求解递归式

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(n1)+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/212+1/21=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(m1)+mc(m1)2+c(m1)+m=cm2(c1)mcm2+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)=22lg2=3
     假设当 n < m n < m n<m 时,存在正常数 c ≥ 2 c≥2 c2 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)+1clg(2m)+1clg(2 m)+1clgm+12cclgm
     综上所述,解为 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)=32lg2=3
     假设当 n < m n < m n<m 时,存在正常数 c ≥ 1 c≥1 c1 T ( n ) ≥ c n lg ⁡ n + ( 2 − 2 c ) n T(n)≥cn\lg n+(2-2c)n T(n)cnlgn+(22c)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)+m2c2mlg(2m)+d2m+mcmlg(2m)+(1c)m+m=cmlgm+(22c)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)=11lg1+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)+m2c2mlg(2m)+2mcmlgm+(2c)mcmlgm+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=1n>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)1lg11
     由于存在正常数 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(n2)lg(n2),于是
     当 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(2m2)lg(2m2)+c2(2m2)lg(2m2)+c4mc2(2m+12)lg(2m+12)+c2(2m2)lg(2m2)+c4m=c2(2m1)lg(2m1)+c2(2m2)lg(2m2)+c4m2c22m2lg2m2+c4mc2(m2)lg2m2+c4mc2(m2)c2(m2)lg(m2) 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)+c3mc1(2m+2)lg(2m+2)+c1(2m1+2)lg(2m1+2)+c3m=c1(2m+2)lg(2m+2)+c1(2m+1)lg(2m+1)+c3m2c12m+2lg2m+2+c3mc1(m+2)lg(m+2)+c3mc1(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(n34)lg(n34) 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)+m2c(m/217)lg(m/217)+mc(m34)lg(m34),从而解为 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)+n4c(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<c3。假定 T ( n ) ≤ c n log ⁡ 3 4 − 3 n T(n) ≤ cn^{\log_34}-3n T(n)cnlog343n 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)+ncnlog344n+ncn23n,从而解为 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<c1。 假定 T ( n ) ≤ c n 2 − n T(n) ≤ cn^2-n T(n)cn2n 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)+ncn22n+ncn2n,从而解为 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(2m1)+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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值