算法导论 3-5 O与Ω的一些变形

(O与Ω的一些变形)某些作者用一种与我们稍微不同的方式来定义Ω;假设我们使用\Omega \infty(读作“Ω无穷”)来表示这种可选的定义。若存在正常量c,使得对无穷个整数n,有f(n)\geq cg(n)\geq 0,则称f(n)=\Omega \infty (g(n))

a. 证明:对渐近非负的任意两个函数f(n)和g(n),或者f(n)=O(g(n))或者f(n)=\Omega \infty (g(n))或者二者均成立,然而,如果使用Ω来替代\Omega \infty,那么该命题并不为真。

b. 描述用\Omega \infty代替Ω来刻画程序运行时间的潜在优点和缺点。

    某些作者也用一种稍微不同的方式来定义O;假设使用O'来表示这种可选的定义。我们称f(n)=O'(g(n))当且仅当\left | f(n) \right |=O(g(n))

c. 如果使用O'代替O但仍然使用Ω,定理3.1中的“当且仅当”的每个方向将出现什么情况?有些作者定义\widetilde{O}(读作“软O”)来意指忽略对数因子的O:

\widetilde{O}(g(n))={ f(n): 存在正常量c,k和n_{0},使得对所有n\geq n_{0},有0\leq f(n)\leq cg(n)lg^{k}(n)}

d. 用一种类似的方式定义\widetilde{\Omega }\widetilde{\Theta }。证明与定理3.1相对应的类似结论。

解答:

a. 先证明命题:对渐近非负的任意两个函数f(n)和g(n),或者f(n)=O(g(n))或者f(n)=\Omega \infty (g(n))或者二者均成立。

我们分别来看O和“Ω无穷”的定义:

O(g(n)) = { f(n): 存在正常量c和n_{0},使得对所有n\geq n_{0},有0\leq f(n)\leq cg(n) }

\Omega \infty(g(n)) = { f(n): 存在正常量c,使得对无穷个整数n,有 f(n)\geq cg(n)\geq 0 }

根据命题,我们将 O(g(n)) 记为A,将  \Omega \infty(g(n)) 记为B,简化为A||B||(A&&B)始终为真,由此可以简化等价为 !(!A&&!B) 为真,也就是说,不可能存在A为假并且B为假的情况。

 由此我们分两步证明,假定A为假与假定B为假。

1. 假定A为假,那么按照定义,我们不管怎么取正常量c和n_{0},都无法满足定义。说明当n趋向无穷大时,必然出现整数满足f(n)\geq cg(n)\geq 0,且必须为无穷个,因为如果是有穷个,那么可以让最大的那个n作为n_{0}来满足A定义。可以得证当A为假时,B必为真。 

2. 假定B为假,即只能对有穷个整数n,有f(n)\geq cg(n)\geq 0,那么取有穷个整数n的最大值作为n_{0},有0\leq f(n)\leq cg(n),符合A的定义,可知当B为假时,A必为真。

于是命题成立。

接下来证明如果使用Ω来替代\Omega \infty,那么该命题并不为真。即用Ω用来指代B。以下是论证过程。

论证 !(!A&&!B)结果有可能为假。可以用反证法,我们列举一个函数,tan(n),该函数无法被O和Ω渐进函数表达。所以命题不成立。

得证。

b. 描述用\Omega \infty代替Ω来刻画程序运行时间的潜在优点和缺点。

解答 

\Omega \infty最大的有点是它和O结合使用,即可以覆盖所有的函数。缺点是它无法精确描述一个函数的渐进下界。 

c. “当且仅当”需要追加一个f(n)>=0 。

d. 定义如下:

软O(g(n)) = { f(n): 存在正常量c,k和n0,使得对所有n>=n0,有 0<=f(n)<=cg(n)lg^k(n) }

软Ω(g(n)) = { f(n): 存在正常量c,k和n0,使得对所有n>=n0,有 0<=cg(n)lg^k(n)<=f(n) }

软θ(g(n)) = { f(n): 存在正常量c1,c2,k1,k2,和n0,使得对所有n>=n0,有 0<=c1g(n)lg^k1(n)<=f(n)<=c2g(n)lg^k2(n) }

定理3.1类似结论:对任意两个函数f(n)和g(n),我们有f(n)=软θ(g(n))当且仅当f(n)=软O(g(n))且f(n)=软Ω(g(n))。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值