算法中的渐进记号

摘要:
O(g(n))={f(n):=cg(n)}那么它可以表示为f(n)=O(n2),=cg(n)具有c=9/2;f(n)=O(n2)的实际意义是f(n(n)∈O(n 2),f(n=O(n)大Ω符号定义,=cg(n)<F(n)=Ω(n)大Θ符号定义,Θ(g(n))={F(n):=c1g(n;则g(n)=Θ(n)
前言

在学习计算机算法时,知道插入排序的时间复杂度是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)。

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) }。大Ω记号给出函数的渐进下界。

假设有 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) }。大Θ记号给出函数的渐进确界。

假设有 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记号给出函数的非渐进紧确的上界。

假设有 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]记号给出函数的非渐进紧确的下界。

假设有 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]的极限就不存在而且不等于无穷大。

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

免责声明:文章转载自《算法中的渐进记号》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇中间件(1)分布式缓存前端传参时乱码解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Haar小波分析

一 尺度函数与小波函数     基本尺度函数定义为:,对其向右平移任意 k 个单位,构成函数族 , 该函数族在 空间中正交,证明如下:    1 ;    2 当 m 不等于 k 时,    函数族  构成一组正交基,并形成  子空间。在  子空间中,任意函数均可表示为  的线性组合,。    将函数族  构造宽度缩小一半,则可形成宽度为  的一组正交基...

C++语言体系设计哲学的一些随想(未完待续)

对于静态类型语言,其本质目标在于恰当地操作数据,得到期望的值。具体而言,需要: (1)定义数据类型 你定义的数据是什么,是整形还是浮点还是字符。该类型的数据可以包含的值的范围是什么。 (2)定义操作的含义 操作是严格数据类型相关的。操作表明了对了一个具有特定类型的数据,执行操作后产生什么样结果。  =============================...

Haskell学习笔记

…高阶函数 map :: (a->b) ->[a] ->[b],将函数f依次应用于序列[a],得到新的序列[b]。 filter :: (a->bool)->[a]->[a],利用函数f过滤序列[a]。 这两个函数都可用list comprehension来实现,不过在某些情况下更简洁。利用这两个函数和CF组合可以...

纯虚函数的使用汇总

一、抽象类 含有纯虚函数的类被称为抽象类。抽象类是一种特殊的类,它是为了抽象和设计的目的而建立的,它处于继承结构的上层。抽象类是不能定义对象的,在实际中为了强调一个类是抽象类,可将该类的构造函数说明为受保护的访问控制权限。 抽象类的主要作用就是描述一组相关子类的通用操作接口。一般而言,抽象类只描述这组子类共同的操作接口,而实现交给子类来完成。 抽象类只能作...

cocos2D-X从的源代码的分析cocos2D-X学习OpenGL(1)----cocos2D-X渲染架构

        个人原创。欢迎转载,转载请注明原文地址http://blog.csdn.net/bill_man         从本篇文章開始,将分析cocos2D-X 3.0源码,第一部分是从cocos2D-X学习OpenGL,也就是分析cocos2D-X 3.0的渲染代码,本篇首先介绍cocos2D-X 3.0的渲染结构。使用的是3.0正式版。...

__attribute__的一些相关属性

__attribute__((format()))  这个format有3个参数。 int my(NSString *str,NSString *str1,NSArray*str2,...) __attribute__((format(__NSString__,2,4)));   三个参数告诉编译器,第二个参数必须是NSString类型,且可变参数从第4位...