参考这个answer,什么是Theta(紧束缚)?
Omega是下限,很明白,算法可能需要的最短时间。我们知道Big-O代表上限,意味着算法可能需要的最长时间。但我不知道Theta。
答案 0 :(得分:144)
Big O 是上限,而 Omega 是下限。 Theta 需要Big O和Omega,所以这就是为什么它被称为紧束缚(它必须是上限和下限)。
例如,采用Omega(n log n)
的算法至少需要n log n
次,但没有上限。采用Theta(n log n)
的算法是优先考虑的,因为至少 n log n
(Omega n log n)和不超过 n log n
(Big O n log n)。
答案 1 :(得分:106)
Θ-notation (theta notation)被称为紧束缚,因为它比 O-notation 和Ω-notation (omega)更精确符号)。
如果我很懒,我可以说在排序数组上的二进制搜索是O(n 2 ),O(n 3 )和O(2 < sup> n ),在每种情况下,我在技术上都是正确的。那是因为O符号只指定上限,并且二进制搜索在所有这些函数的高位上都是有限的,只是不是非常接近。这些懒惰的估计将是无用的。
Θ-notation通过组合 O符号和Ω符号解决了这个问题。如果我说二进制搜索是Θ(log n),那么可以为您提供更精确的信息。它告诉你算法在给定函数的两个边界上,所以它永远不会比声明的更快或更慢。
答案 2 :(得分:15)
如果您的某些内容是 O(f(n)),则意味着 k , g(n)这样 > f(n)≤ kg(n)。
如果你有Ω(f(n))的东西,那就意味着 k , g(n)这样 > f(n)≥ kg(n)。
如果你有 O(f(n)) 和 Ω(f(n))的东西,那么它是< EM>Θ(F(N)
如果有点密集,Wikipedia article是不错的。
答案 3 :(得分:5)
渐近上限表示给定算法在最长时间内执行,具体取决于输入的数量。
我们以排序算法为例。如果数组的所有元素都按降序排列,那么要对它们进行排序,它将需要O(n)
的运行时间,显示上限复杂度。如果数组已经排序,则值为O(1)
。
通常,O-notation
用于上限复杂度。
渐近紧束缚(c 1 g(n)≤f(n)≤c 2 g(n))显示平均值函数的约束复杂度,具有绑定限制(上限和下限)之间的值,其中c 1 和c 2 是常量。
答案 4 :(得分:3)
短语最短时间和最长时间在这里有点误导。当我们谈论大O符号时,并不是我们感兴趣的实际时间,而是当我们的输入大小变大时,时间会增加。它通常是我们谈论的平均或最坏情况时间,而不是最佳情况,这通常对解决我们的问题毫无意义。
在另一个问题的接受答案中使用数组搜索作为示例。在大小为n的列表中查找特定数字所花费的时间平均为n / 2 * some_constant。如果你将它视为一个函数f(n) = n/2*some_constant
,它的增长速度不会超过g(n) = n
,就像查理所给出的那样。此外,它也不会慢于g(n)
。因此,g(n)
实际上是Big-O表示法中f(n)
的上限和下限,因此线性搜索的复杂性正好 n ,意思是它是Theta(n)。
在这方面,对另一个问题的接受答案中的解释并不完全正确,它声称O(n)是上限,因为算法可以在一些输入的恒定时间内运行(这是最好的情况我上面提到过,这不是我们想知道的关于运行时间的事情)。
答案 5 :(得分:0)
如果我很懒,我可以说在排序数组上的二进制搜索是 O(n2),O(n3)和O(2n),我在技术上都是正确的 情况下。
我们可以使用o符号(“little-oh”)来表示不渐近紧的上界。大哦和小哦都很相似。但是,大哦很可能用来定义渐近紧的上界。
答案 6 :(得分:0)
恰好是下界或$ \ omega $ bfon f(n)表示渐近小于或等于f(n)的函数集,即U g(n)≤cf(n)$ \对于所有$`un≥n' 对于某些c,n'$ \ in $ $ \ Bbb {N} $
f(n)的上限或$ \ mathit {O} $表示渐近大于或等于数学上表明的f(n)的函数集,
$ g(n)\ ge cf(n)\对于所有n \ ge n'$,对于某些c,n'$ \ in $ $ \ Bbb {N} $。
现在$ \ Theta $是上面写的两个的交点
$\theta $
就像算法就像“恰好$ \ Omega \ left(f(n)\ right $“)一样,最好说它是$ \ Theta \ left(f(n)\ right)$。
或者,我们也可以说$
\omega $
给了我们最低速度的实际速度。
答案 7 :(得分:-2)
之间的基本区别
块引用
渐近上界和渐近紧 Asym.upperbound意味着一个给定的算法,它可以根据输入的数量以最大的时间量执行,例如在排序算法中,如果所有的数组(n)元素都按降序排列,那么升序它们将需要一个运行时间O(n)显示了上限复杂度,但是如果它们已经排序则需要欧姆(1)。因此我们通常使用“O”符号表示上限复杂度。
ASYM。紧束缚显示for例如(c1g(n)&lt; = f(n)&lt; = c2g(n))显示紧束缚限制,使得函数具有两个界限(上界和下界)之间的值,给出了平均情况。