悉野小楼

导航

算法复杂性表示

算法复杂性可以用O,Ω, o, ω, θ 5个字母表示.

O表示算法复杂性的上限.  Ω表示算法复杂性下限.

o表示算法函数比o中的函数低阶. o与O对应, 是下限了.

如复杂度为f(n), o(g(n))表示f(n)比g(n)低阶. 像f(n)=n, g(n)=n^2, f(n)就比g(n)低一阶.如果g(n)=2n, f(n)与g(n)为同阶.

ω与Ω对应, ω中的函数比f(n)高阶.

θ表示f(n), g(n)同阶.

=======================

以下设f(N)和g(N)是定义在正数集上的正函数。

O: 

如果存在正的常数C和自然数N0,使得当NN0时有f(N)≤Cg(N)。则称函数f(N)当N充分大时上有界,且g(N)是它的一个上界,记为f(N)=Ο(g(N))。这时我们还说f(N)的阶不高于g(N)的阶。 

 Ω:

 关于记号Ω,定义如下:如果存在正的常数C和自然数N0,使得当NN0时有f(N)≥Cg(N),则称函数f(N)当N充分大时下有界,且g(N)是它的一个下界,记为f(N)=Ω(g(N))。这时我们还说f(N)的阶不低于g(N)的阶。

θ:

记号θ将随之清楚,因为我们定义f(N)=θ(g(N))则f(N)=Ο(g(N)) 且f(N)=Ω(g(N))。这时,我们说f(N)与g(N)同阶。比如,对于算法Search在最坏情况下的时间复杂性Tmax(m)。已有Tmax(m)=Ο(m)和Tmax(m)=Ω(m),所以有Tmax(m)(m),这是对Tmax(m)的阶的精确估计。

 o:

如果对于任意给定的ε≥0,都存在非负整数N0,使得当NN0时有f(N)≤εg(N),则称函数f(N)当N充分大时比g(N)低阶,记为f(N)= o(g(N)),例如:4NlogN +7=o(3N 2+4NlogN+7)

 ω:

f(N)=ω(g(N))定义为g(N)=o(f(N))。即当N充分大时f(N)的阶比g(N)高。

 

按照大Ο的定义,容易证明它有如下运算规则:

  1. Ο(f)+Ο(g)=Ο(max(f,g));
  2. Ο(f)+ Ο(g)=Ο(+g);
  3. Ο(fΟ(g)= Ο(f·g);
  4. 如果g(N)= Ο(f(N)),则Ο(f)+ Ο(g)= Ο(f);
  5. Ο(Cf(N))= Ο(f(N)),其中C是一个正的常数;
  6. f =Ο(f);

 

posted on 2012-01-12 10:46  悉野  阅读(557)  评论(0编辑  收藏  举报