Big O,Big Theta,Big Omega,little o,little omega notation的定义

来源:互联网 发布:linux查看物理cpu个数 编辑:程序博客网 时间:2024/06/11 11:18

最近在看MTI关于算法导论的公开课,对于一个超级门外汉,一听到这些记法瞬间就懵了,于是只能求助于谷哥。

(1)Big O

如果存在正数c和N,对于所有的n>=N,有f(n)<=c*g(n),则f(n)=O(g(n))

是不是很抽象?其实这玩意儿说通俗一点就是求一个算法的worst-case,即是一个最坏情况的度量,求的是上界。

(2)Big Omega

如果存在正数c和N,对于所有的n>=N,有f(n)>=c*g(n),则f(n)=Omega(g(n))

和Big O相反,这个玩意儿是很乐观的,求得是一个算法的最好情况,即下界,即best-case。不过这玩意儿基本上没什么用,因为你总不能跟用户说我这个算法最快的执行时间是3秒吧?万一一不小心执行了三年,用户岂不要气得吐血?

(3)Big Theta

如果存在正数c1,c2和N,对于所有的n>=N,有c1*g(n)<=f(n)<=c2*g(n),则f(n)=Theta(g(n))

这个记法表示一个算法不会好于XX,也不会坏于XX,太中庸了,没有激情啊。所以也就是求average-case。

(4)little o

对于任意正数c,均存在正数N,对于所有的n>=N,有f(n)<c*g(n),则f(n)=o(g(n))

(5)little omega

对于任意正数c,均存在正数N,对于所有的n>=N,有f(n)>c*g(n),则f(n)=omega(g(n))

好了,就简单介绍到这儿吧,以后有什么再做补充。

0 0
原创粉丝点击