算法练习题1

算法练习题

1. 证明对任意常实数aaabbb,其中b>0b>0b>0(n+a)b=Θ(nb){(n+a)}^b=\Theta(n^b)(n+a)b=Θ(nb)

解:
依题,对于∀b>0,(n+a)b=θ(nb)∀b>0,(n+a)^b=θ(n^b )b>0,(n+a)b=θ(nb)都有:
a>0a>0a>0时,nb<(n+a)b<2b∗nbn^b<(n+a)^b<2^b*n^bnb<(n+a)b<2bnb
c1=1,c2=2bc_1=1,c_2=2^bc1=1,c2=2b
同理有当a<0a<0a<0时,2−b∗nb<(n+a)b<nb2^{-b}*n^b<(n+a)^b<n^b2bnb<(n+a)b<nb
c1=2−b,c2=1c_1=2^{-b},c_2=1c1=2b,c2=1
满足(n+a)b=θ(nb)(n+a)^b=θ(n^b )(n+a)b=θ(nb)的定义,故得证

2. 解释为什么“算法AAA的运行时间至少是O(n2)O(n^2)O(n2)”这句话是无意义的

解:因为时间复杂度O(n2)O(n^2 )O(n2)只代表时间随数据量规模的增加变化程度,并不指任何具体运行时间。且O(n2)O(n^2 )O(n2)描述了时间变化程度的上界,而至少描述了下界。综上两条,“算法AAA的运行时间至少是O(n2)O(n^2 )O(n2)”这一表述是无意义的。

3. 2(n+1)=O(2n)2^{(n+1)}=O(2^n)2(n+1)=O(2n)成立吗?22n=O(2n)2^{2n}=O(2^n)22n=O(2n)成立吗?

解: 2(n+1)=O(2n)2^{(n+1)}=O(2^n )2(n+1)=O(2n)成立, 22n=O(2n)2^{2n}=O(2^n )22n=O(2n)不成立

4. 证明lim⁡n→+∞n!2πn(ne)n=1\lim\limits_{n \rightarrow +\infty} \frac{n!}{\sqrt{2\pi n{(\frac{n}{e})}^n}}=1n+lim2πn(en)nn!=1

解:
不妨设
an=n!n(n+12)e−na_n=\frac{n!}{n^{(n+\frac{1}{2})} e^{-n} }an=n(n+21)enn!
则有:
anan+1=(n+1)n+32nn+12(n+1)e=1e(1+1n)n(1+12)12\frac{a_n}{a_{n+1}} =\frac{{(n+1)}^{n+\frac{3}{2}}}{n^{n+\frac{1}{2}}(n+1)e} =\frac{1}{e}(1+\frac{1}{n})^n(1+\frac{1}{2})^\frac{1}{2}an+1an=nn+21(n+1)e(n+1)n+23=e1(1+n1)n(1+21)21
所以:
anan+1>1\frac{a_n}{a_{n+1}}>1an+1an>1
即:
an>an+1a_n>a_{n+1}an>an+1
ana_nan单调递减,依积分放缩有:
ln⁡⁡n!>(n+12)ln⁡⁡n−n\ln⁡n!>(n+\frac{1}{2}) \ln⁡n-nlnn!>(n+21)lnnn
即:
n!>n(n+12)e−nn!>n^{(n+\frac{1}{2})} e^{-n}n!>n(n+21)en
因此有:
an>1a_n>1an>1
因此ana_nan极限存在,不妨设:
A=lim⁡n→+∞an=lim⁡n→+∞n!n(n+12)e−nA=\lim\limits_{n \rightarrow +\infty}a_n=\lim\limits_{n \rightarrow +\infty}\frac{n!}{n^{(n+\frac{1}{2})} e^{-n} }A=n+liman=n+limn(n+21)enn!
依华里士公式有:
π2=lim⁡n→+∞[(2n)!!(2n−1)!!]22n+1\frac{\pi}{2}=\lim\limits_{n \rightarrow +\infty}\frac{[\frac{(2n)!!}{(2n-1)!!}]^2}{2n+1}2π=n+lim2n+1[(2n1)!!(2n)!!]2
依次化简得:
π2=lim⁡n→+∞[(2n)!!(2n)!!(2n)!!]22n+1\frac{\pi}{2}=\lim\limits_{n \rightarrow +\infty}\frac{[\frac{(2n)!!(2n)!!}{(2n)!!}]^2}{2n+1}2π=n+lim2n+1[(2n)!!(2n)!!(2n)!!]2
π2=lim⁡n→+∞24n[(n!)2(2n)!]22n+1\frac{\pi}{2}=\lim\limits_{n \rightarrow +\infty}\frac{2^{4n}[\frac{{(n!)}^2}{(2n)!}]^2}{2n+1}2π=n+lim2n+124n[(2n)!(n!)2]2
π2=lim⁡n→+∞24n[(An(n+12)e−n)2A(2n)2n+12e−2n]22n+1\frac{\pi}{2}=\lim\limits_{n \rightarrow +\infty}\frac{2^{4n}[\frac{{(An^{(n+\frac{1}{2})}e^{-n})}^2}{A(2n)^{2n+\frac{1}{2}}e^{-2n}}]^2}{2n+1}2π=n+lim2n+124n[A(2n)2n+21e2n(An(n+21)en)2]2
π2=lim⁡n→+∞24n(2−2n−12An)22n+1\frac{\pi}{2}=\lim\limits_{n \rightarrow +\infty}\frac{2^{4n}(2^{-2n-\frac{1}{2}}A\sqrt{n})^2}{2n+1}2π=n+lim2n+124n(22n21An)2
π2=lim⁡n→+∞24n(2−2n−12An)22n+1\frac{\pi}{2}=\lim\limits_{n \rightarrow +\infty}\frac{2^{4n}(2^{-2n-\frac{1}{2}}A\sqrt{n})^2}{2n+1}2π=n+lim2n+124n(22n21An)2
π2=lim⁡n→+∞24nA22−4n−1∗n2n+1\frac{\pi}{2}=\lim\limits_{n \rightarrow +\infty}\frac{2^{4n}A^22^{-4n-1}*n}{2n+1}2π=n+lim2n+124nA224n1n
π2=A24\frac{\pi}{2}=\frac{A^2}{4}2π=4A2
解得:
A=2πA=\sqrt{2\pi}A=2π
因此:
lim⁡n→+∞n!n(n+12)e−n=2π\lim\limits_{n \rightarrow +\infty}\frac{n!}{n^{(n+\frac{1}{2})} e^{-n} }=\sqrt{2\pi}n+limn(n+21)enn!=2π
即:
lim⁡n→+∞n!2πn(ne)n=1\lim\limits_{n \rightarrow +\infty} \frac{n!}{\sqrt{2\pi n{(\frac{n}{e})}^n}}=1n+lim2πn(en)nn!=1
故得证

5. 证明n!=ω(2n)n!=ω(2^n)n!=ω(2n)

即证明:
lim⁡n→+∞2nn!=0\lim\limits_{n \rightarrow +\infty} \frac{2^n}{n!}=0n+limn!2n=0
因为
lim⁡n→+∞2nn!=21∗22∗23∗...∗2n−2∗2n−1∗2n\lim\limits_{n \rightarrow +\infty} \frac{2^n}{n!}=\frac{2}{1}*\frac{2}{2}*\frac{2}{3}*...*\frac{2}{n-2}*\frac{2}{n-1}*\frac{2}{n}n+limn!2n=122232...n22n12n2
则有
0≤lim⁡n→+∞2nn!≤2∗lim⁡n→+∞(23)n<00\le \lim\limits_{n \rightarrow +\infty} \frac{2^n}{n!}\le 2*\lim\limits_{n \rightarrow +\infty} (\frac{2}{3})^n <00n+limn!2n2n+lim(32)n<0
依夹逼定理:
lim⁡n→+∞2nn!=0\lim\limits_{n \rightarrow +\infty} \frac{2^n}{n!}=0n+limn!2n=0
n!=ω(2n)n!=ω(2^n)n!=ω(2n)
故得证。

6. 证明n!=O(nn)n!=O(n^n )n!=O(nn)

即证明:
lim⁡n→+∞n!nn=0\lim\limits_{n \rightarrow +\infty} \frac{n!}{n^n}=0n+limnnn!=0
展开并化简得:
lim⁡n→+∞n!nn=1n∗2n∗3n∗...∗n−2n∗n−1n∗nn\lim\limits_{n \rightarrow +\infty} \frac{n!}{n^n}=\frac{1}{n}*\frac{2}{n}*\frac{3}{n}*...*\frac{n-2}{n}*\frac{n-1}{n}*\frac{n}{n}n+limnnn!=n1n2n3...nn2nn1nn
易得:
0≤lim⁡n→+∞n!nn=1n∗2n∗3n∗...∗n−2n∗n−1n∗nn≤lim⁡n→+∞1n=00\le \lim\limits_{n \rightarrow +\infty} \frac{n!}{n^n}=\frac{1}{n}*\frac{2}{n}*\frac{3}{n}*...*\frac{n-2}{n}*\frac{n-1}{n}*\frac{n}{n}\le \lim\limits_{n \rightarrow +\infty}\frac{1}{n}=00n+limnnn!=n1n2n3...nn2nn1nnn+limn1=0
依夹逼定理:
lim⁡n→+∞n!nn=0\lim\limits_{n \rightarrow +\infty} \frac{n!}{n^n}=0n+limnnn!=0
n!=O(nn)n!=O(n^n )n!=O(nn)
故得证。

7. 为下表中的每对表达式(A,B)(A,B)A,B指出AAA是否是BBBOOOoooΩ\OmegaΩω\omegaωΘ\ThetaΘ。假设k≥1,ε>0k\ge1,\varepsilon \gt0k1,ε>0c>1c\gt1c>1均为常量。回答应该以表格的形式将是或否写在每个空格中。

AAABBBOOOoooΩΩΩωωωΘ\ThetaΘ
lg⁡k⁡n\lg^k⁡nlgknncn^cnc
nkn^knkcnc^ncn
n\sqrt{n}nnsin⁡⁡nn^{\sin⁡n}nsinn
2n2^n2n2n/22^{n/2}2n/2
nlg⁡⁡cn^{\lg⁡c}nlgcclg⁡⁡nc^{\lg⁡n }clgn
lg⁡⁡n!\lg⁡n!lgn!lg⁡⁡nn\lg⁡{n^n }lgnn

8. 根据增长率来对下列函数排序;即找出函数的一种排序g1,g2,...,g30g_1,g_2,...,g_{30}g1,g2,...,g30,使g1=Ω(g2)g_1=\Omega(g_2)g1=Ω(g2)g2=Ω(g3)g_2=\Omega(g_3)g2=Ω(g3).........g29=Ω(g30)g_{29}=\Omega(g_{30})g29=Ω(g30)。将该序列划分成等价类,使f(n)f(n)f(n)g(n)g(n)g(n)在同一个等价类中当且仅当f(n)=Θ(g(n)))f(n)=\Theta(g(n)))f(n)=Θ(g(n)))

函数如下:
lg⁡(lg⁡⋅n)\lg(\lg\cdot n)lg(lgn)2lg⁡⋅n2^{\lg\cdot n}2lgn2lg⁡n\sqrt{2}^{\lg n}2lgnn2n^2n2n!n!n!(lg⁡n)!(\lg n)!(lgn)!(32)n(\frac{3}{2})^n(23)nn3n^3n3lg⁡2n\lg^2nlg2nlg⁡(n!)\lg(n!)lg(n!)22n2^{2^n}22nn1/lg⁡nn^{1/\lg n}n1/lgnln⁡ln⁡n\ln\ln nlnlnnlg⁡⋅n\lg\cdot nlgnn∗2nn*2^nn2nnlg⁡lg⁡nn^{\lg\lg n}nlglgnln⁡n\ln nlnn1112lg⁡n2^{\lg n}2lgn(lg⁡n)lg⁡n(\lg n)^{\lg n}(lgn)lgnene^nen4lg⁡n4^{\lg n}4lgn(n+1)!(n+1)!(n+1)!lg⁡n\sqrt{\lg n}lgnlg⁡⋅(lg⁡n)\lg\cdot (\lg n)lg(lgn)22lg⁡n2^{\sqrt{2\lg n}}22lgnnnn2n2^n2nnlg⁡nn\lg nnlgn22n+12^{2^{n+1}}22n+1

解:
22n+1>22n>(n+1)!>n!>en>n∗2n>2n>(32)n>(lg⁡n)lg⁡n=nlg⁡lg⁡n>(lg⁡⁡n)!>n3>n2=4lg⁡⁡n>n⋅lg⁡⁡n=lg⁡⁡(n!)>n=2lg⁡⁡n>2lg⁡n>22lg⁡n>lg⁡2⁡n>ln⁡⁡n>lg⁡n>ln⁡ln⁡n>2lg⁡⋅n>lg⁡⋅n=lg⁡⋅(lg⁡n)>lg⁡(lg⁡⋅n)>n1/lg⁡n>12^{2^{n+1} }>2^{2^{n} }>(n+1)!>n!>e^n>n* 2^n>2^n>(\frac{3}{2})^n>(\lg n)^{\lg n} =n^{\lg\lg n} >(\lg⁡n )!>n^3>n^2=4^{\lg⁡ n} >n\cdot \lg⁡ n=\lg⁡(n!)> n=2^{\lg ⁡n }>\sqrt{2}^{\lg n}>2^{\sqrt{2\lg n}}>\lg^2⁡n>\ln ⁡n>\sqrt{\lg n}>\ln\ln n>2^{\lg\cdot n}>\lg\cdot n=\lg\cdot(\lg n)>\lg(\lg\cdot n)>n^{1/\lg n}>122n+1>22n>(n+1)!>n!>en>n2n>2n>(23)n>(lgn)lgn=nlglgn>(lgn)!>n3>n2=4lgn>nlgn=lg(n!)>n=2lgn>2lgn>22lgn>lg2n>lnn>lgn>lnlnn>2lgn>lgn=lg(lgn)>lg(lgn)>n1/lgn>1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上山打老虎D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值