计算机算法分析之渐进记号

前言

在学习计算机算法时,知道插入排序的时间复杂度是O(n2),那O记号到底是什么意思呢?本文主要介绍几个算法分析时用到的记号。

大O记号

定义:O(g(n)) = { f(n) : 存在正常数c和n0 ,使对所有的n >= n0,都有 0 <= f(n) <= cg(n) }。大O记号给出函数的渐进上界。

clip_image002[10], 则可以表示为 f(n) = O(n2)。证明:

要使得 0 <= f(n) <= cg(n)     

clip_image002[12]

clip_image004

clip_image006

存在c = 9/2 ,n0 = 1,使得对所有的n >= n0都有 0 <= f(n) <= cg(n)。

f(n)不高于g(n)的阶

O(g(n) 以及后面讲到的记号表示的都是集合,而f(n) = O(n2)的实际意义 是 f(n) ∈ O(n2)。

假设有 clip_image002[14] , clip_image002[10]

则 g(n) = O(n2) , f(n) = O(n2)

clip_image002[21]

大Ω记号

定义:Ω(g(n)) = { f(n) : 存在正常数c和n0 ,使对所有的n >= n0,都有 0 <= cg(n) <= f(n) }。大Ω记号给出函数的渐进下界。

f(n)不低于g(n)的阶

假设有 clip_image002[14] ,  clip_image002[10]

则 g(n) = Ω(n) , f(n) = Ω(n)

clip_image002[23]

大Θ记号

定义:Θ(g(n)) = { f(n) : 存在正常数c1和c2和n0 ,使对所有的n >= n0,都有 0 <= c1g(n) <= f(n) <= c2g(n) }。大Θ记号给出函数的渐进确界。

f(n)与g(n)的阶数相同

假设有 clip_image002[14] , clip_image002[10]

则 g(n) = Θ(n) , f(n) =Θ(n2)

clip_image002[27]

小O记号

定义:o(g(n)) = { f(n) : 对任意正常数c,存在n0 ,使对所有的n >= n0,都有 0 <= f(n) <= cg(n) }。小o记号给出函数的非渐进紧确的上界。

f(n)小于g(n)的阶

假设有 clip_image002[14] , clip_image002[10]

则 g(n) = o(n2) , f(n) clip_image002[33]O(n2)

clip_image002[35]

clip_image002[50]记号

定义:clip_image002[52](g(n)) = { f(n) : 对任意正常数c,存在n0 ,使对所有的n >= n0,都有 0 <= cg(n) <= f(n) }。小clip_image002[54]记号给出函数的非渐进紧确的下界。

f(n)高于g(n)的阶

假设有 clip_image002[14] , clip_image002[10]

则 g(n) clip_image002[33] clip_image002[58](n) , f(n) = clip_image002[56](n)

clip_image002[40]

总结

并不是所有的函数都可以渐进比较的,如果clip_image002[46] 的极限值不存在(不等于0,常数以及无穷大)。比如

clip_image002[48]的极限就不存在而且不等于无穷大。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值