函数的增长

1.Θ\Theta记号

Θ(g(n))={f(n):存在正常量c1c2n0,使得对所有nn0,0c1g(n)f(n)c2g(n)}\Theta(g(n))=\{f(n):存在正常量c_1、c_2和n_0,使得对所有n\ge n_0,有0\le c_1g(n)\le f(n) \le c_2g(n)\}

理解为当nn足够大时,f(n)f(n)能完全夹入g(n)g(n)的两个常数倍的函数值之间,因此g(n)g(n)f(n)f(n)的一个渐进紧确界。Θ(g(n))\Theta(g(n))表达的是一组函数的集合,f(n)f(n)是能归到集合里的某个具体函数。举个例子: f(n)=12n23nf(n)=\frac{1}{2}n^2-3n,寻找满足条件的c1,c2c_1,c_2,使对足够大的nnc1n212n23nc2n2c_1n^2\le\frac{1}{2}n^2-3n\le c_2n^2恒成立,即c1123nc2c_1 \le \frac{1}{2}-\frac{3}{n}\le c_2,取c11/14c_1\le1/14c21/2c_2\ge1/2即可。因此12n23n=Θ(n2)\frac{1}{2}n^2-3n=\Theta(n^2)。这个例子也告诉我们,函数的低阶项在确定渐进紧确界时可忽略。

2.OO记号

O(g(n))={f(n):存在正常量cn0,使得对所有nn0,0f(n)cg(n)}O(g(n))=\{f(n):存在正常量c和n_0,使得对所有n\ge n_0,有0\le f(n)\le cg(n)\}

因此g(n)g(n)某个常量倍数是f(n)f(n)的渐进上界,而不要求是紧确的上界。例如n=O(n2)n=O(n^2)。可能紧确也可能不紧确。

3.Ω\Omega记号

Ω(g(n))={f(n):存在正常量cn0,使得对所有的nn0,0cg(n)f(n)}\Omega(g(n))=\{f(n):存在正常量c和n_0,使得对所有的n\ge n_0,有0\le cg(n)\le f(n)\}

这个记号给出了f(n)f(n)的渐进下界。

f(n)f(n)的渐进上界和渐进下界相等,则它也是f(n)f(n)的渐进确界

4.oo记号

o(g(n))={f(n):对任意正常量c>0,存在常量n0>0,使得对所有nn0,0f(n)<cg(n)}o(g(n))=\{f(n):对任意正常量c>0,存在常量n_0>0,使得对所有n\ge n_0,有0 \le f(n) < cg(n)\}

由于cc的任意性,oo记号给出的是非渐进紧确的上界,而且一定不可能是紧确的。

5.ω\omega记号

ω(g(n))={f(n):对任意正常量c>0,存在常量n0>0,使得对所有nn0,0cg(n)<f(n)}\omega(g(n))=\{f(n):对任意正常量c>0,存在常量n_0>0,使得对所有n\ge n_0,有0 \le cg(n) < f(n)\}

ω\omega记号会给出非渐进紧确的下界。

6.性质

传递性f(n)=K(g(n)),g(n)=K(h(n))f(n)=K(g(n)),g(n)=K(h(n)),则f(n)=K(h(n)),K=Θ,O,Ω,o,ωf(n)=K(h(n)),K=\Theta,O,\Omega,o,\omega

自反性 f(n)=K(f(n)),K=Θ,O,Ωf(n)=K(f(n)),K=\Theta,O,\Omega

对称性 f(n)=Θ(g(n))g(n)=Θ(f(n))f(n)=\Theta(g(n))\leftrightarrow g(n)=\Theta(f(n))

转置对称性

f(n)=O(g(n))g(n)=Ω(f(n))f(n)=O(g(n))\leftrightarrow g(n)=\Omega(f(n))

f(n)=o(g(n))g(n)=ω(f(n))f(n)=o(g(n))\leftrightarrow g(n)=\omega(f(n))