算法练习题1

算法练习题

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

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

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

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

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

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

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

解:
不妨设
a n = n ! n ( n + 1 2 ) e − n a_n=\frac{n!}{n^{(n+\frac{1}{2})} e^{-n} } an=n(n+21)enn!
则有:
a n a n + 1 = ( n + 1 ) n + 3 2 n n + 1 2 ( n + 1 ) e = 1 e ( 1 + 1 n ) n ( 1 + 1 2 ) 1 2 \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
所以:
a n a n + 1 > 1 \frac{a_n}{a_{n+1}}>1 an+1an>1
即:
a n > a n + 1 a_n>a_{n+1} an>an+1
a n a_n an单调递减,依积分放缩有:
ln ⁡ ⁡ n ! > ( n + 1 2 ) ln ⁡ ⁡ n − n \ln⁡n!>(n+\frac{1}{2}) \ln⁡n-n lnn!>(n+21)lnnn
即:
n ! > n ( n + 1 2 ) e − n n!>n^{(n+\frac{1}{2})} e^{-n} n!>n(n+21)en
因此有:
a n > 1 a_n>1 an>1
因此 a n a_n an极限存在,不妨设:
A = lim ⁡ n → + ∞ a n = lim ⁡ n → + ∞ n ! n ( n + 1 2 ) e − n A=\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 → + ∞ [ ( 2 n ) ! ! ( 2 n − 1 ) ! ! ] 2 2 n + 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 → + ∞ [ ( 2 n ) ! ! ( 2 n ) ! ! ( 2 n ) ! ! ] 2 2 n + 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 → + ∞ 2 4 n [ ( n ! ) 2 ( 2 n ) ! ] 2 2 n + 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 → + ∞ 2 4 n [ ( A n ( n + 1 2 ) e − n ) 2 A ( 2 n ) 2 n + 1 2 e − 2 n ] 2 2 n + 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 → + ∞ 2 4 n ( 2 − 2 n − 1 2 A n ) 2 2 n + 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 → + ∞ 2 4 n ( 2 − 2 n − 1 2 A n ) 2 2 n + 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 → + ∞ 2 4 n A 2 2 − 4 n − 1 ∗ n 2 n + 1 \frac{\pi}{2}=\lim\limits_{n \rightarrow +\infty}\frac{2^{4n}A^22^{-4n-1}*n}{2n+1} 2π=n+lim2n+124nA224n1n
π 2 = A 2 4 \frac{\pi}{2}=\frac{A^2}{4} 2π=4A2
解得:
A = 2 π A=\sqrt{2\pi} A=2π
因此:
lim ⁡ n → + ∞ n ! n ( n + 1 2 ) 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 ( n e ) n = 1 \lim\limits_{n \rightarrow +\infty} \frac{n!}{\sqrt{2\pi n{(\frac{n}{e})}^n}}=1 n+lim2πn(en)n n!=1
故得证

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

即证明:
lim ⁡ n → + ∞ 2 n n ! = 0 \lim\limits_{n \rightarrow +\infty} \frac{2^n}{n!}=0 n+limn!2n=0
因为
lim ⁡ n → + ∞ 2 n n ! = 2 1 ∗ 2 2 ∗ 2 3 ∗ . . . ∗ 2 n − 2 ∗ 2 n − 1 ∗ 2 n \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 → + ∞ 2 n n ! ≤ 2 ∗ lim ⁡ n → + ∞ ( 2 3 ) n < 0 0\le \lim\limits_{n \rightarrow +\infty} \frac{2^n}{n!}\le 2*\lim\limits_{n \rightarrow +\infty} (\frac{2}{3})^n <0 0n+limn!2n2n+lim(32)n<0
依夹逼定理:
lim ⁡ n → + ∞ 2 n n ! = 0 \lim\limits_{n \rightarrow +\infty} \frac{2^n}{n!}=0 n+limn!2n=0
n ! = ω ( 2 n ) n!=ω(2^n) n!=ω(2n)
故得证。

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

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

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

A A A B B B O O O o o o Ω Ω Ω ω ω ω Θ \Theta Θ
lg ⁡ k ⁡ n \lg^k⁡n lgkn n c n^c nc
n k n^k nk c n c^n cn
n \sqrt{n} n n sin ⁡ ⁡ n n^{\sin⁡n} nsinn
2 n 2^n 2n 2 n / 2 2^{n/2} 2n/2
n lg ⁡ ⁡ c n^{\lg⁡c} nlgc c lg ⁡ ⁡ n c^{\lg⁡n } clgn
lg ⁡ ⁡ n ! \lg⁡n! lgn! lg ⁡ ⁡ n n \lg⁡{n^n } lgnn

8. 根据增长率来对下列函数排序;即找出函数的一种排序 g 1 , g 2 , . . . , g 30 g_1,g_2,...,g_{30} g1,g2,...,g30,使 g 1 = Ω ( g 2 ) g_1=\Omega(g_2) g1=Ω(g2) g 2 = Ω ( g 3 ) g_2=\Omega(g_3) g2=Ω(g3) . . . ... ... g 29 = Ω ( g 30 ) 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) 2 lg ⁡ ⋅ n 2^{\lg\cdot n} 2lgn 2 lg ⁡ n \sqrt{2}^{\lg n} 2 lgn n 2 n^2 n2 n ! n! n! ( lg ⁡ n ) ! (\lg n)! (lgn)! ( 3 2 ) n (\frac{3}{2})^n (23)n n 3 n^3 n3 lg ⁡ 2 n \lg^2n lg2n lg ⁡ ( n ! ) \lg(n!) lg(n!) 2 2 n 2^{2^n} 22n n 1 / lg ⁡ n n^{1/\lg n} n1/lgn ln ⁡ ln ⁡ n \ln\ln n lnlnn lg ⁡ ⋅ n \lg\cdot n lgn n ∗ 2 n n*2^n n2n n lg ⁡ lg ⁡ n n^{\lg\lg n} nlglgn ln ⁡ n \ln n lnn 1 1 1 2 lg ⁡ n 2^{\lg n} 2lgn ( lg ⁡ n ) lg ⁡ n (\lg n)^{\lg n} (lgn)lgn e n e^n en 4 lg ⁡ n 4^{\lg n} 4lgn ( n + 1 ) ! (n+1)! (n+1)! lg ⁡ n \sqrt{\lg n} lgn lg ⁡ ⋅ ( lg ⁡ n ) \lg\cdot (\lg n) lg(lgn) 2 2 lg ⁡ n 2^{\sqrt{2\lg n}} 22lgn n n n 2 n 2^n 2n n lg ⁡ n n\lg n nlgn 2 2 n + 1 2^{2^{n+1}} 22n+1

解:
2 2 n + 1 > 2 2 n > ( n + 1 ) ! > n ! > e n > n ∗ 2 n > 2 n > ( 3 2 ) n > ( lg ⁡ n ) lg ⁡ n = n lg ⁡ lg ⁡ n > ( lg ⁡ ⁡ n ) ! > n 3 > n 2 = 4 lg ⁡ ⁡ n > n ⋅ lg ⁡ ⁡ n = lg ⁡ ⁡ ( n ! ) > n = 2 lg ⁡ ⁡ n > 2 lg ⁡ n > 2 2 lg ⁡ n > lg ⁡ 2 ⁡ n > ln ⁡ ⁡ n > lg ⁡ n > ln ⁡ ln ⁡ n > 2 lg ⁡ ⋅ n > lg ⁡ ⋅ n = lg ⁡ ⋅ ( lg ⁡ n ) > lg ⁡ ( lg ⁡ ⋅ n ) > n 1 / lg ⁡ n > 1 2^{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}>1 22n+1>22n>(n+1)!>n!>en>n2n>2n>(23)n>(lgn)lgn=nlglgn>(lgn)!>n3>n2=4lgn>nlgn=lg(n!)>n=2lgn>2 lgn>22lgn >lg2n>lnn>lgn >lnlnn>2lgn>lgn=lg(lgn)>lg(lgn)>n1/lgn>1

猜你喜欢

转载自blog.csdn.net/m0_46326495/article/details/124162115