<算法导论>练习4.3

该文详细探讨了如何使用数学归纳法证明算法的时间复杂度,涉及递归式和边界条件的调整,通过举例证明了4.3-1到4.3-7等不同情况下的复杂度上界和下界。文章深入浅出地阐述了代入法在证明过程中的应用,强调了在证明过程中边界条件的重要性,并展示了如何逐步调整边界条件以满足所需的渐进上界或下界。
摘要由CSDN通过智能技术生成

4.3-1
用数学归纳法证明即可,思路是假设 n < = k n<=k n<=k时存在c使得 T ( k ) < = c n 2 T(k)<=cn^2 T(k)<=cn2成立,只要证明出 n = k + 1 n=k+1 n=k+1时,存在c使得 T ( k + 1 ) < = c ( k + 1 ) 2 T(k+1)<=c(k+1)^2 T(k+1)<=c(k+1)2。那么把 T ( k ) 和 T ( k − 1 ) T(k)和T(k-1) T(k)T(k1)代入递归式得到:
T ( k ) = T ( k − 1 ) + k < = c ∗ ( k − 1 ) 2 + k = c ( k 2 − 2 k + 1 ) + k \begin{aligned} T(k)&=T(k-1)+k\\ &<=c*(k-1)^2+k\\ &=c(k^2-2k+1)+k \end{aligned} T(k)=T(k1)+k<=c(k1)2+k=c(k22k+1)+k
把T(k)的方程代入T(k+1)的方程可以得到:
T ( k + 1 ) = T ( k ) + k + 1 < = c ( k 2 − 2 k + 1 ) + k + k + 1 = c ( k 2 − 2 k + 1 + 2 k + 1 c ) \begin{aligned} T(k+1)&=T(k)+k+1\\ &<=c(k^2-2k+1)+k+k+1\\ &=c(k^2-2k+1+\frac{2k+1}{c}) \end{aligned} T(k+1)=T(k)+k+1<=c(k22k+1)+k+k+1=c(k22k+1+c2k+1)
c = 1 2 + 1 4 k c=\frac12+\frac1{4k} c=21+4k1时,k无穷大时 c = 1 2 c=\frac12 c=21,即 c > 1 2 c>\frac12 c>21.代入上式可得:
T ( k + 1 ) < = c ( k + 1 ) 2 , c > 1 2 T(k+1)<=c(k+1)^2,c>\frac12 T(k+1)<=c(k+1)2,c>21
证明完毕。

4.3-2

用书中所介绍的代入法计算可能会更简单一些:假设对于m ( m < n ) (m<n) (m<n)成立。令:
m = ⌈ n 2 ⌉ m=\left \lceil \frac{n}{2} \right \rceil m=2n
即对于m,满足方程的解为 O ( l g n ) , 即 T ( m ) < = c ∗ l g m O(lgn),即T(m)<=c*lgm O(lgn),T(m)<=clgm,将其代入n的递归式中,解出使方程成立的c的解即可。
T ( n ) < = c ∗ lg ⁡ ⌈ n 2 ⌉ + 1 < = c ∗ lg ⁡ ( n 2 + 1 ) + 1 < = c ∗ lg ⁡ ( n + 2 ) − c ∗ lg ⁡ ( 2 ) + 1 \begin{aligned} T(n)&<=c*\lg{\left \lceil \frac{n}{2} \right \rceil }+1\\ &<=c*\lg(\frac{n}2+1)+1\\ &<=c*\lg(n+2)-c*\lg(2)+1 \end{aligned} T(n)<=clg2n+1<=clg(2n+1)+1<=clg(n+2)clg(2)+1
显然不成立,因为lg(n+2)>lg(n),按照书中的方法,令n减去d重新计算,猜测: T ( n ) < = c ∗ l g ( n − 2 ) T(n)<=c*lg(n-2) T(n)<=clg(n2),证明方法和上文中的一样
T ( n ) < = c ∗ lg ⁡ ( ⌈ n 2 ⌉ − 2 ) + 1 < = c ∗ lg ⁡ ( n 2 + 1 − 2 ) + 1 = c ∗ lg ⁡ ( ( n − 2 ) / 2 ) + 1 = c ∗ lg ⁡ ( n − 2 ) − c + 1 \begin{aligned} T(n)&<=c*\lg(\left \lceil \frac{n}{2} \right \rceil-2)+1\\ &<=c*\lg(\frac{n}2+1-2)+1\\ &=c*\lg((n-2)/2)+1\\ &=c*\lg(n-2)-c+1 \end{aligned} T(n)<=clg(2n2)+1<=clg(2n+12)+1=clg((n2)/2)+1=clg(n2)c+1
在c大于1时,上式成立,且lg(n-2)<lgn。对于渐进上界O(lgn)来说,原式成立。

4.3-3
根据题意,只需证明 T ( n ) > = c ∗ n lg ⁡ ( n ) T(n)>=c*n\lg(n) T(n)>=cnlg(n),和上一题类似依旧用代入法证明,假设在m<n时 T ( m ) T(m) T(m)成立,只需证明在n处,有 T ( n ) > = c n l g ( n ) T(n)>=cnlg(n) T(n)>=cnlg(n)即可。先将
m = ⌊ n 2 ⌋ m=\left \lfloor \frac{n}{2} \right \rfloor m=2n
代入原式中,得:
T ( n ) > = 2 c ⌊ n 2 ⌋ lg ⁡ ⌊ n 2 ⌋ + n > = 2 c ( n 2 − 1 ) lg ⁡ ( n 2 − 1 ) + n = c ( n − 2 ) ( lg ⁡ ( n − 2 ) − 1 ) + n \begin{aligned} T(n)&>=2c\left \lfloor \frac{n}{2} \right \rfloor \lg{\left \lfloor \frac{n}{2} \right \rfloor }+n\\ &>=2c(\frac{n}{2}-1)\lg(\frac{n}{2}-1)+n\\ &=c(n-2)(\lg(n-2)-1)+n \end{aligned} T(n)>=2c2nlg2n+n>=2c(2n1)lg(2n1)+n=c(n2)(lg(n2)1)+n
很显然没有得到我们想要的结果,由于是在证明T(n)>=cnlg(n)时,选择在后面加上一个常数项。
即假设 T ( n ) > = c ( n + 2 ) l g ( n + 2 ) T(n)>=c(n+2)lg(n+2) T(n)>=c(n+2)lg(n+2),证明如下:
T ( n ) > = 2 c ( ⌊ n 2 ⌋ + 2 ) ( lg ⁡ ( ⌊ n 2 ⌋ + 2 ) + n > = c ( n + 2 ) lg ⁡ ( n + 2 2 ) + n = c ( n + 2 ) lg ⁡ ( n + 2 ) + ( 1 − c ) n − 2 c > = c ( n + 2 ) lg ⁡ ( n + 2 ) \begin{aligned} T(n)&>=2c(\left \lfloor \frac{n}{2} \right \rfloor+2)(\lg(\left \lfloor \frac{n}{2} \right \rfloor+2)+n\\ &>=c(n+2)\lg(\frac{n+2}{2})+n\\ &=c(n+2)\lg(n+2)+(1-c)n-2c\\ &>=c(n+2)\lg(n+2) \end{aligned} T(n)>=2c(2n+2)(lg(2n+2)+n>=c(n+2)lg(2n+2)+n=c(n+2)lg(n+2)+(1c)n2c>=c(n+2)lg(n+2)
0 < = c < 1 且 n > = 2 c 1 − c 0<=c<1且n>=\frac{2c}{1-c} 0<=c<1n>=1c2c的时候上式最后一步成立,且 ( n + 2 ) l g ( n + 2 ) > n l g n (n+2)lg(n+2)>nlgn (n+2)lg(n+2)>nlgn,所以证明完毕。

4.3-4

要想不调整归纳证明中的边界条件,只能放大渐进上界,比如求其解为 T ( n ) = O ( n l g n + n ) T(n)=O(nlgn+n) T(n)=O(nlgn+n)
归纳证明的方法和前面的类似,此时把边界条件 n = 1 n=1 n=1代入, T ( 1 ) = 1 l g 1 + 1 = 1 T(1)=1lg1+1=1 T(1)=1lg1+1=1,所以不需要调整递归边界条件。

4.3-5

在这里插入图片描述
4.3-6

这个和前面类似,直接证也是证明不出来的,需要减去一个常数项,即证明:
T ( n ) < = c ( n − 36 ) lg ⁡ ( n − 36 ) T(n)<=c(n-36)\lg(n-36) T(n)<=c(n36)lg(n36)
证明方式和前面一模一样。

4.3-7

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值