大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思


1 O、Ω、Θ 的定义

在数学、算法分析里,\(O\)、\(\Omega\)、\(\Theta\) 都是在描述两个函数的渐近增长速度,通常讨论 \(n\to\infty\) 时的关系。

最核心的区别是:

\[\boxed{O=\text{渐近上界},\qquad \Omega=\text{渐近下界},\qquad \Theta=\text{同阶/紧确渐近界}} \]

更严格地说,给定两个非负函数 \(f(n)\) 和 \(g(n)\)。

  • \(f(n)=O(g(n))\):存在常数 \(c>0,n_0\),使得对所有 \(n\ge n_0\),

    \[f(n)\le c\,g(n). \]

    意思是:\(f\) 最终不会比 \(g\) 快超过一个常数倍。

  • \(f(n)=\Omega(g(n))\):存在常数 \(c>0,n_0\),使得对所有 \(n\ge n_0\),

    \[f(n)\ge c\,g(n). \]

    意思是:\(f\) 最终至少有 \(g\) 这么快的增长量级。

  • \(f(n)=\Theta(g(n))\):存在常数 \(c_1,c_2>0,n_0\),使得对所有 \(n\ge n_0\),

    \[c_1g(n)\le f(n)\le c_2g(n). \]

    也就是:

    \[f(n)=O(g(n)) \quad\text{且}\quad f(n)=\Omega(g(n)). \]

    意思是:\(f\) 和 \(g\) 的增长速度是同一个数量级。

可以这样记:

符号 含义 直觉
\(O(g(n))\) 上界 “最多这么快”
\(\Omega(g(n))\) 下界 “至少这么快”
\(\Theta(g(n))\) 上下界一致 “就是这个量级”

如果画成一种直观的“夹住”关系:

\[\begin{aligned} f(n)=O(g(n)) &\quad\Longrightarrow\quad f(n)\ \text{在上面被 } g(n)\text{ 的常数倍压住},\\ f(n)=\Omega(g(n)) &\quad\Longrightarrow\quad f(n)\ \text{在下面被 } g(n)\text{ 的常数倍托住},\\ f(n)=\Theta(g(n)) &\quad\Longrightarrow\quad f(n)\ \text{被 } g(n)\text{ 的两个常数倍夹住}. \end{aligned} \]

2 举例

比如 \(f(n)=3n^2+10n+100\),那么:

\[f(n)=O(n^2), \]

因为它最终不会超过某个常数倍的 \(n^2\)。

同时:

\[f(n)=\Omega(n^2), \]

因为它最终也至少是某个常数倍的 \(n^2\)。

因此,我们有:

\[\boxed{f(n)=\Theta(n^2)}. \]

注意,这里有一个容易混淆的点:我们常用的大 \(O\) 不等于“精确复杂度”。例如,上面的函数不仅有 \(f(n)=O(n^2)\),也完全可以说

\[f(n)=O(n^3),\qquad f(n)=O(n^4),\qquad f(n)=O(2^n). \]

这些都没错,因为它们都是上界,只是比较松。

相反,\(f(n)=\Theta(n^2)\) 表达的信息更强:它明确告诉你真正的渐近数量级就是 \(n^2\)。

再举一个例子,例如:

\[n = O(n^2), \]

是对的,因为

\[n\le n^2 \]

在 \(n\ge1\) 时成立。

但是

\[n\ne\Theta(n^2), \]

因为 \(n\) 和 \(n^2\) 并不是同一个增长量级。

反过来:

\[n^2=\Omega(n), \]

也是正确的。

3 另外一个判断方式:看 n → ∞ 的极限

另外一个很有用的判断方式是看极限。如果

\[\lim_{n\to\infty}\frac{f(n)}{g(n)}=L, \qquad 0<L<\infty, \]

那么通常可以直接得到

\[\boxed{f(n)=\Theta(g(n))}. \]

例如:

\[\lim_{n\to\infty} \frac{3n^2+10n+100}{n^2} = 3, \]

所以

\[3n^2+10n+100=\Theta(n^2). \]

在算法里,如果一个程序运行时间是

\[T(n)=5n^2+3n+10, \]

最准确的渐近描述通常是

\[T(n)=\Theta(n^2), \]

而说 \(T(n)=O(n^2)\) 只是给出了它的上界。



posted @ 2026-09-24 20:23  MoonOut  阅读(34)  评论(0)    收藏  举报