算法练习题1

Posted 上山打老虎D

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法练习题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 \\fracn!\\sqrt2\\pi n(\\fracne)^n=1 n+lim2πn(en)n n!=1

解:
不妨设
a n = n ! n ( n + 1 2 ) e − n a_n=\\fracn!n^(n+\\frac12) 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 \\fraca_na_n+1 =\\frac(n+1)^n+\\frac32n^n+\\frac12(n+1)e =\\frac1e(1+\\frac1n)^n(1+\\frac12)^\\frac12 an+1an=nn+21(n+1)e(n+1)n+23=e1(1+n1)n(1+21)21
所以:
a n a n + 1 > 1 \\fraca_na_n+1>1 an+1an以上是关于算法练习题1的主要内容,如果未能解决你的问题,请参考以下文章

线性时间排序

与网络流相关算法

0-1背包-回溯法

《算法设计与分析》期末不挂科

算法导论-递归

大O和数据的规模