算法导论 — 思考题3-4 渐近记号的性质

渐近记号的性质)假设 f ( n ) f(n) f(n) g ( n ) g(n) g(n)为渐近正函数。证明或反驳下面的每个猜测。
  a. f ( n ) = O ( g ( n ) ) f(n) = O(g(n)) f(n)=O(g(n))蕴含 g ( n ) = O ( f ( n ) ) g(n) = O(f(n)) g(n)=O(f(n))
  b. f ( n ) + g ( n ) = Θ ( m i n ( f ( n ) , g ( n ) ) ) f(n) + g(n) = Θ({\rm min}(f(n), g(n))) f(n)+g(n)=Θ(min(f(n),g(n)))
  c. f ( n ) = O ( g ( n ) ) f(n) = O(g(n)) f(n)=O(g(n))蕴含 l g ( f ( n ) ) = O ( l g ( g ( n ) ) ) {\rm lg}(f(n)) = O({\rm lg}(g(n))) lg(f(n))=O(lg(g(n))),其中对所有足够大的 n n n,有 l g ( g ( n ) ) ≥ 1 {\rm lg}(g(n)) ≥ 1 lg(g(n))1 f ( n ) ≥ 1 f(n) ≥ 1 f(n)1
  d. f ( n ) = O ( g ( n ) ) f(n) = O(g(n)) f(n)=O(g(n))蕴含 2 f ( n ) = O ( 2 g ( n ) ) 2^{f(n)} = O(2^{g(n)}) 2f(n)=O(2g(n))
  e. f ( n ) = O ( ( f ( n ) ) 2 ) f(n) = O((f(n))^2) f(n)=O((f(n))2)
  f. f ( n ) = O ( g ( n ) ) f(n) = O(g(n)) f(n)=O(g(n))蕴含 g ( n ) = Ω ( f ( n ) ) g(n) = Ω(f(n)) g(n)=Ω(f(n))
  g. f ( n ) = Θ ( f ( n / 2 ) ) f(n) = Θ(f(n/2)) f(n)=Θ(f(n/2))
  h. f ( n ) + o ( f ( n ) ) = Θ ( f ( n ) ) f(n) + o(f(n)) = Θ(f(n)) f(n)+o(f(n))=Θ(f(n))
  
  
  a. 错误
  例如, n = O ( n 2 ) n = O(n^2) n=O(n2),然而 n 2 ≠ O ( n ) n^2 ≠ O(n) n2̸=O(n)
  
  b. 错误
  例如, n + n 2 ≠ Θ ( n ) n + n^2 ≠ Θ(n) n+n2̸=Θ(n)
  
  c. 正确
   f ( n ) = O ( g ( n ) ) f(n) = O(g(n)) f(n)=O(g(n)),意味着存在正常量 c c c n 0 n_0 n0,使得对所有 n ≥ n 0 n ≥ n_0 nn0,有 f ( n ) ≤ c g ( n ) f(n) ≤ cg(n) f(n)cg(n)。对这个不等式两边取对数,得到 l g ( f ( n ) ) ≤ l g c + l g ( g ( n ) ) {\rm lg}(f(n)) ≤ {\rm lg}c + {\rm lg}(g(n)) lg(f(n))lgc+lg(g(n))。由于 l g c {\rm lg}c lgc是常数,可以取足够大的正常量 c ′ c' c,使得对所有 n ≥ n 0 n ≥ n_0 nn0,有 l g c + l g ( g ( n ) ) ≤ c ′ l g ( g ( n ) ) {\rm lg}c + {\rm lg}(g(n)) ≤ c'{\rm lg}(g(n)) lgc+lg(g(n))clg(g(n)),即 l g ( f ( n ) ) ≤ c ′ l g ( g ( n ) ) {\rm lg}(f(n)) ≤ c'{\rm lg}(g(n)) lg(f(n))clg(g(n))。所以 l g ( f ( n ) ) = O ( l g ( g ( n ) ) ) {\rm lg}(f(n)) = O({\rm lg}(g(n))) lg(f(n))=O(lg(g(n)))成立。
  
  d. 错误
  例如, n = O ( n / 2 ) n = O(n/2) n=O(n/2),然而, 2 n ≠ O ( 2 n / 2 ) 2^n ≠ O(2^{n/2}) 2n̸=O(2n/2)
  
  e. 错误
  我们可以构造一个函数,该函数是渐近小于 1 1 1的,例如, f ( n ) = 1 / n f(n)=1/n f(n)=1/n ( f ( n ) ) 2 = 1 / n 2 (f(n))^2=1/n^2 (f(n))2=1/n2。显然有
     l i m n → ∞ ⁡ ( f ( n ) ) 2 f ( n ) = l i m n → ∞ f ( n ) = l i m n → ∞ 1 n = 0 lim_{n→∞}⁡\frac{(f(n))^2}{f(n)}=lim_{n→∞}f(n)=lim_{n→∞}\frac{1}{n}=0 limnf(n)(f(n))2=limnf(n)=limnn1=0
  这说明 ( f ( n ) ) 2 = o ( f ( n ) ) (f(n))^2=o(f(n)) (f(n))2=o(f(n)),因此 f ( n ) ≠ O ( ( f ( n ) ) 2 ) f(n)≠O((f(n))^2) f(n)̸=O((f(n))2)
  
  f. 正确
  3.1节已给出了这一结论。
  
  g. 错误
  例如, 2 n ≠ Θ ( 2 n / 2 ) 2^n ≠ Θ(2^{n/2}) 2n̸=Θ(2n/2)
  
  h. 正确
  对任意一个函数 g ( n ) = o ( f ( n ) ) g(n) = o(f(n)) g(n)=o(f(n)),当 n n n足够大时,必有 0 ≤ g ( n ) &lt; f ( n ) 0 ≤ g(n) &lt; f(n) 0g(n)<f(n)。于是当 n n n足够大时,有 f ( n ) ≤ f ( n ) + g ( n ) &lt; 2 f ( n ) f(n) ≤ f(n) + g(n) &lt; 2f(n) f(n)f(n)+g(n)<2f(n),这说明 f ( n ) + g ( n ) = Θ ( f ( n ) ) f(n) + g(n) = Θ(f(n)) f(n)+g(n)=Θ(f(n)),即 f ( n ) + o ( f ( n ) ) = Θ ( f ( n ) ) f(n) + o(f(n)) = Θ(f(n)) f(n)+o(f(n))=Θ(f(n))

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值