我正在学习算法分析。我无法理解 O、Ω 和 Θ 之间的区别。
它们的定义方式如下:
f(n) = O(g(n))
均值c · g(n)
是 的上界f(n)
。因此,存在一些常数c
,对于足够大 (即,对于某个常数) ,f(n)
总是 ≤ 。c · g(n)
n
n ≥ n0
n0
f(n) = Ω(g(n))
均值c · g(n)
是 的下界f(n)
。因此,存在一些常数,对于所有c
,f(n)
总是 ≥ 。c · g(n)
n ≥ n0
f(n) = Θ(g(n))
对于 all 来说,meansc1 · g(n)
是 的上界f(n)
,c2 · g(n)
也是 的下界。因此存在常数和 这样的和。这意味着 对.f(n)
n ≥ n0
c1
c2
f(n) ≤ c1 ·g(n)
f(n) ≥ c2 ·g(n)
g(n)
f(n)
我理解的方式是:
O(f(n))
给出给定函数/算法的最坏情况复杂度。Ω(f(n))
给出给定函数/算法的最佳情况复杂度。Θ(f(n))
给出给定函数/算法的平均案例复杂度.
如果我错了,请纠正我。如果是这种情况,每个算法的时间复杂度必须用所有三种符号表示。但我观察到它表示为 O、Ω 或 Θ;为什么不是全部三个?