下界和紧密界有什么区别?


99

以此为参考 答案,Theta(紧束缚)是什么?

Omega是下限,很容易理解,算法可能需要最少的时间。我们知道Big-O是上限,这意味着算法可能花费的最长时间。但是我对Theta一无所知。

Answers:


154

大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)。


7
哦。现在,“紧束缚”一词对我来说似乎很不解。谢谢克里斯。愚蠢的我,也许我期待着一个复杂的想法。:)
阿黛尔·安萨里

6
是的,周围有很多花哨的符号,但是一旦掌握了它就不会太复杂。
克里斯·邦奇

4
这个来自Virginia Tech的可免费获得的文档通过示例解释了不同复杂度算法之间在性能上的差异,并简要说明了渐近分析:people.cs.vt.edu/shaffer/Book/C++3e20120102.pdf
Alan

您的意思是“采用Theta(n log n)的算法是非常优先的,因为它至少需要n log n(Omega n log n)且不超过n log n(Big O n log n)。”在其中,至少如Omega(nlogn)和最大BigO(nlogn)所说的那样,算法的确切复杂度吗?
Nikhil Verma

1
简单来说,我们可以称呼:最坏情况为上限(Big(O))?像一般情况一样严格吗?下限(欧米茄)是最好的情况?
Revanth '18

113

Θ表示法(theta表示法)称为紧密绑定法,因为它比O表示法Ω表示法更精确(Ω表示法)。

如果我很懒,我可以说在排序数组上的二进制搜索为O(n 2),O(n 3)和O(2 n),并且在每种情况下我在技术上都是正确的。这是因为O表示法仅指定了一个上限,而二进制搜索在所有这些函数的高端都受到了限制,但并不是非常紧密。这些懒惰的估计将毫无用处

Θ表示法通过组合 O表示法和Ω表示法解决了这个问题。如果我说二进制搜索为Θ(log n),那将为您提供更精确的信息。它会告诉你,该算法是上界通过给定函数两侧,所以它永远不会是显著比规定快或慢。


11
If I were lazy, I could say that binary search on a sorted array is O(n2), O(n3), and O(2n), and I would be technically correct in every case-似乎计算机世界中的大多数人都是懒惰的,因为每个人都只谈论Big O的复杂性。
RBT

If I were lazy, I could say that binary search on a sorted array is O(n2), O(n3), and O(2n), and I would be technically correct in every case如果有人对此感到困惑:对于那种不是渐近严格的小o表示法的函数。示例:-边界2n ^ 2 = O(n ^ 2)渐近紧,但边界2n = O(n ^ 2)并非渐近。了解更多:stackoverflow.com/questions/1364444/...
德拉戈什斯特鲁加尔

18

如果您有 O(f(n))表示存在kg(n)使得f(n) ≤kg (n)

如果您有 Ω(f(n))表示存在kg(n)使得f(n) ≥kg (n)

并且如果您有一个O(f(n)) Ω(f(n))的东西,那就是Θ(f(n)

维基百科的文章是体面的,如果有点密集。


现在阅读巴赫曼-朗道符号族。谢谢查理,我以前去过那里,但没有继续前进就返回了。
阿德·安萨里

嘿,每隔一段时间刷新一下博士论文就很好了。
查理·马丁

注意,Landau的big-O表示法不仅限于算法复杂性。
查理·马丁

这看起来不对。在第一行中,它应显示为“如果您有O(g(n))”,也就是说,g而不是f,其余的都可以保留。第二行也是如此:应该是“如果您有Ω(g(n))”。你能再检查一遍吗?
法比奥称莫妮卡(Monica)恢复职权

整个话题都弄得一团糟,以至于那个贷方的人也可能会弄错:D开个玩笑,有人需要解决这个问题。这使人们感到困惑(这确实使我很困惑)。
Rad

5

渐近上限意味着给定算法在最大时间内执行,具体取决于输入的数量。

让我们以排序算法为例。如果数组的所有元素都按降序排列,则要对其进行排序,将需要运行时间为O(n),这显示出上限的复杂性。如果数组已经排序,则值为O(1)

通常,O-notation用于上限复杂度。


渐近紧边界(c 1 g(n)≤f(n)≤c 2 g(n))显示函数的平均边界复杂度,其值在边界限制(上限和下限)之间,其中c 1和c 2是常数。


1
如果数组已排序,则边界仍将为O(n)
Arun Aravind 2013年

2
@ArunAravind你能解释为什么吗?
nbro

3

这里的最小时间最大时间这两个短语有点误导。当我们谈论大的O表示法时,这不是我们感兴趣的实际时间,而是当我们的输入大小变大时,时间如何增加。通常是我们所说的平均时间或最坏情况,而不是最佳情况,这是,这通常对解决我们的问题没有意义。

以在另一个问题的可接受答案中的数组搜索为例。在大小为n的列表中找到特定数字所需的时间平均为n / 2 * some_constant。如果将其视为函数f(n) = n/2*some_constantg(n) = n则按Charlie给出的意义,它的增加不会比快。而且,它的增加不会比g(n)这两者都要慢。因此,g(n)实际上f(n)在Big-O表示法中它既是上限又是下限,因此线性搜索的复杂度正好是 n,意味着它是Theta(n)。

在这方面,对另一个问题的公认答案中的解释并不完全正确,它声称O(n)是上限,因为对于某些输入该算法可以在恒定时间内运行(这是我上面提到的最佳情况,这并不是我们真正想知道的运行时间)。


那么,我们可以说Ω是最好的情况,O是最坏的情况吗?。..并且我们应该分别将术语替换为最佳情况和最坏情况吗?
Adeel Ansari

最好的情况是O(1)是否有任何问题?
扎克·兰利

1
@Adeel,不,Theta和O都可以指平均情况或最坏情况。@Zach,嗯,不完全是。感谢您指出了这一点。
PolyThinker,2009年

0

如果我很懒,我可以说排序数组上的二进制搜索为O(n2),O(n3)和O(2n),并且在每种情况下从技术上讲我都是正确的。

我们可以使用O标记(“ little-oh”)来表示一个不是渐近紧的上限。大哦和小哦都相似。但是,big-oh可能用于定义渐近严格的上限。


0

确切地说,下界或$ \ omega $ bfon f(n)表示渐近小于或等于f(n)的函数集,即对于所有$`un≥n,U g(n)≤cf(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 $给了我们最低限度。


-2

之间的基本区别

块引用

渐近上限和渐近紧密Asym.upperbound表示一个给定的算法,可以根据输入的数量以最大的时间执行该算法,例如,在对算法进行排序时,如果所有数组(n)个元素都按降序排列,则对其进行升序将花费O(n)的运行时间来显示上限复杂度,但是如果已对它们进行排序,则将花费ohm(1)。因此,对于上限复杂度,我们通常使用“ O”符号。

不对称 紧边界显示for,例如(c1g(n)<= f(n)<= c2g(n))显示紧边界限制,以使函数的值介于两个边界之间(上限和下限),从而给出一般情况。


2
如果您的答案未对已接受的答案添加任何内容,则不应回答旧的问题。
alestanis 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.