算法复杂性可以用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,使得当N≥N0时有f(N)≤Cg(N)。则称函数f(N)当N充分大时上有界,且g(N)是它的一个上界,记为f(N)=Ο(g(N))。这时我们还说f(N)的阶不高于g(N)的阶。
Ω:
关于记号Ω,定义如下:如果存在正的常数C和自然数N0,使得当N≥N0时有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,使得当N≥N0时有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)高。
按照大Ο的定义,容易证明它有如下运算规则:
- Ο(f)+Ο(g)=Ο(max(f,g));
- Ο(f)+ Ο(g)=Ο(f +g);
- Ο(f)·Ο(g)= Ο(f·g);
- 如果g(N)= Ο(f(N)),则Ο(f)+ Ο(g)= Ο(f);
- Ο(Cf(N))= Ο(f(N)),其中C是一个正的常数;
- f =Ο(f);