<算法导论>练习3.1

3.1-1
  由题目可知, f ( n ) > 0 且 g ( n ) > 0 f(n)>0且g(n)>0 f(n)>0g(n)>0,并且他们均小于 m a x ( f ( n ) , g ( n ) ) max(f(n),g(n)) max(f(n),g(n)),而且 m a x ( f ( n ) , g ( n ) ) max(f(n),g(n)) max(f(n),g(n))一定小于 f ( n ) + g ( n ) f(n)+g(n) f(n)+g(n),那么存在:
0 < = f ( n ) + g ( n ) 2 < = m a x ( f ( n ) + g ( n ) ) < = f ( n ) + g ( n ) 0<=\frac{f(n)+g(n)}{2} <=max(f(n)+g(n))<=f(n)+g(n) 0<=2f(n)+g(n)<=max(f(n)+g(n))<=f(n)+g(n)
这就是 Θ ( f ( n ) + g ( n ) ) Θ(f(n)+g(n)) Θ(f(n)+g(n))的定义了,即 c 1 = 1 / 2 , c 2 = 1 c_1=1/2,c_2=1 c1=1/2,c2=1

3.1-2

为了证明该式,只需要找到对任意的 n > n 0 n>n_0 n>n0,以及存在 c 1 , c 2 c_1,c_2 c1,c2使得 c 1 n b < ( a + n ) b < = c 2 n b c_1n^b<(a+n)^b<=c_2n^b c1nb<(a+n)b<=c2nb
<算法导论>练习3.1_第1张图片
3.1-3

  求一个算法的运行时间,是为了得到它的运行上界以及运行下界,按题中所说的运行时间至少是 O ( n 2 ) O(n^2) O(n2),是得不到运行上界的。
  在这本书里 O ( ) O() O()函数指的是运行上界,以 O ( n 2 ) O(n^2) O(n2)为例,所有运行时间小于它的函数都可以认为其时间复杂度为 O ( n 2 ) O(n^2) O(n2),比如 f ( n ) = n f(n)=n f(n)=n,所以用这种方式运行下界也无法得出,即这种说话没有意义。

3.1-4

(1)成立,由定义可知,存在 c > = 2 , n 0 = 0 c>=2,n_0=0 c>=2,n0=0使得, 0 < = 2 n + 1 < = c ∗ 2 n 0<=2^n+1<=c*2^n 0<=2n+1<=c2n
(2)不成立,因为找不到满足的c与 n 0 n_0 n0

3.1-5
<算法导论>练习3.1_第2张图片
3.1-6

由第5题可知,证明过程也是一样的。
3.1-7
<算法导论>练习3.1_第3张图片

你可能感兴趣的:(算法导论,算法)