第2章算法分析:其他渐进复杂度符号
2.4.4 拓展:其他渐进复杂度符号
1. 大 Ω\OmegaΩ 符号
算法复杂度的最好情况,即算法运行时间的下界。
如果存在正的常数 ccc 和函数 g(n)g(n)g(n) ,使得对于任何 n≫2n\gg2n≫2 都有 T(n)≥c⋅g(n)T(n)\ge c\cdot g(n)T(n)≥c⋅g(n) ,就可以认为,在 nnn 足够大之后,g(n)g(n)g(n) 是 T(n)T(n)T(n) 的一个下界。此时,记之为:
T(n)=Ω(g(n)) T(n)=\Omega(g(n)) T(n)=Ω(g(n))
这里的 Ω\OmegaΩ 称作大 Ω\OmegaΩ 符号。
与大 OOO 符号相反,大 Ω\OmegaΩ 符号是对算法执行效率的乐观估计——对于规模为 nnn 的任意输入,算法的运行时间都不低于 Ω(g(n))\Omega(g(n))Ω(g(n)) 。
2. 大 Θ\ThetaΘ 符号
T(n)=O(f(n))T(n)=O(f(n))T(n)=O(f(n)) 说明 O(f(n))O(f(n))O(f(n)) 是时间复杂度的上界;T(n)=Ω(g(n))T(n)=\Omega(g(n))T(n)=Ω(g(n)) 说明 Ω(g(n))\Omega(g(n))Ω(g(n)) 是时间复杂度的下界,即 T(n)T(n)T(n) 介于二者之间。
如果存在正的常数 c1<c2c_1\lt c_2c1<c2 和函数 h(n)h(n)h(n) ,使得对于任何 n≫2n\gg2n≫2 都有 c1⋅h(n)≤T(n)≤c2⋅h(n)c_1\cdot h(n)\le T(n)\le c_2\cdot h(n)c1⋅h(n)≤T(n)≤c2⋅h(n) ,就可以认为在 nnn 足够大之后,h(n)h(n)h(n) 给出了 T(n)T(n)T(n) 的一个确界,记作:
T(n)=Θ(h(n)) T(n)=\Theta(h(n)) T(n)=Θ(h(n))
这里的 Θ\ThetaΘ 称作大 Θ\ThetaΘ 符号。它是对算法复杂度的准确估计——对于规模为 nnn 的任何输入,算法的运行时间 T(n)T(n)T(n) 都与 Θ(h(n))\Theta(h(n))Θ(h(n)) 同阶。
此外,还有“小 o 符号”,表示严格上界;“小 ω\omegaω 符号”,表示严格下界。