首页 > 编程语言 > 详细

算法中的渐进记号

时间:2016-07-13 01:27:41      阅读:190      评论:0      收藏:0      [点我收藏+]

前言

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

大O记号

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

技术分享, 则可以表示为 f(n) = O(n2)。证明:

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

技术分享

技术分享

技术分享

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

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

假设有 技术分享 , 技术分享

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

技术分享

大Ω记号

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

假设有 技术分享 ,  技术分享

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

技术分享

 

大Θ记号

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

假设有 技术分享 , 技术分享

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

技术分享

 

小O记号

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

假设有 技术分享 , 技术分享

则 g(n) = o(n2) , f(n) 技术分享O(n2)

技术分享

 

技术分享记号

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

假设有 技术分享 , 技术分享

则 g(n) 技术分享 技术分享(n) , f(n) = 技术分享(n)

技术分享

总结

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

技术分享的极限就不存在而且不等于无穷大。

转自:http://www.cnblogs.com/zabery/archive/2011/07/19/2110994.html

算法中的渐进记号

原文:http://www.cnblogs.com/yuxiuyan/p/5665421.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!