【算法导论】【第三章】掌握渐进符号O和Ω

来源:互联网 发布:怎样举报淘宝店铺 编辑:程序博客网 时间:2024/05/18 01:10

本篇文章基于麻省理工学院的公开课第二讲。

首先从纯数学的角度上来理解。


exam1:

f(n)=O(g(n)),代表存在常数c和n0,使得n>=n0时,满足0<=f(n)<=c*g(n)。

比如2*n^2=O(n^3),这里n^2代表n的平方,n^3代表n的三次方,用过matlab的应该很好理解。

这里套用O的定义可知,即存在常数c=1和n0=2,使得n>=n0=2时,满足0<=2*n^2<=n^3。

这个例子应该很好理解。O可以理解成小于等于。

但实际上的意义是f(n)属于g(n)构成的函数集,不过我们可以用等号来表示。


exam2:

f(n)=n^3+O(n^2),代表存在h(n)属于O(n^2),使得f(n)=n^3+h(n).

也就是f(n)的主要部分是n^3,但还包括了低阶项O(n^2)。


exam3:

n^2+O(n)=O(n^2),代表对于任意的f(n)属于O(n^2),都存在h(n)属于O(n^2),使得n^2+f(n)=h(n)。


由以上三个例子我们可以看出,O很好的表示了上界,可以理解成小于等于。


我们还需要符号来表示下界,那就是Ω

exam1:

Ω(g(n))=f(n),从定义上来看,存在常数c>0,n0>0,使得当n>=n0时,满足0<=c*g(n)<=f(n).


exam2:

n^0.5=Ω(lgn),这里n^0.5代表n的平方根,lgn代表log2(n),即以2为底。

根据定义,我们可以理解成:对于足够大的n,n^0.5至少是lg(n)的常数倍。

Ω基本上对应于大于等于。


综上,O和Ω很好的表示了上界和下界。O对应于小于等于,Ω对应于大于等于。

0 0
原创粉丝点击