大Ө表示法到底代表什么?


Answers:


93

这意味着该算法在给定函数中既是big-O又是big-Omega。

例如,如果为Ө(n),则存在一个常数k,例如您的函数(运行时,无论什么)大于n*k要足够大的函数n,而存在另外一些常数,K例如您的函数要小于n*K足够大的函数n

换句话说,对于足够大的值n,它夹在两个线性函数之间:

对于k < Kn足够大,n*k < f(n) < n*K


并非如此,那些变量有点令人困惑,它们是无关的。
亚伦·罗伯逊

@committedandroider不,它们是小写字母和大写字母,因此是不同的,他使用的是典型的数学样式,其中两个“相似”(但此处没有任何关系)变量使用大小写。
Santropedro

329

首先让我们了解大O,大Theta和大Omega是什么。它们都是功能

大O给出渐近上限,而大欧米茄给出了下界。大Theta两者兼而有之。

一切Ө(f(n))也是O(f(n)),但并非相反。
T(n)据说Ө(f(n))既在O(f(n))又在内部Omega(f(n))
在套的术语,Ө(f(n))相交O(f(n))Omega(f(n))

例如,归并排序最坏的情况是O(n*log(n))Omega(n*log(n))-,因此也是Ө(n*log(n)),但是它也是O(n^2),因为n^2它渐近地“大于”。但是,不是 Ө(n^2),因为算法不是Omega(n^2)

较深的数学解释

O(n)是渐近上限。如果T(n)O(f(n)),则意味着从某个n0,有一个恒定的C,使得T(n) <= C * f(n)。在另一方面,大欧米茄说,有一个常数C2这样T(n) >= C2 * f(n))

不要混淆!

不要与最差,最好和平均情况分析混淆:所有三个(欧米茄,O,西塔)符号是相关的算法最好,最差,平均情况分析。这些中的每一个都可以应用于每个分析。

我们通常使用它来分析算法的复杂性(例如上面的合并排序示例)。当我们说“算法A是O(f(n)) ”时,我们真正的意思是“在最坏的1种情况下,算法的复杂度是O(f(n))--含义-它缩放该函数的”相似”(或形式上并不差)f(n)

为什么我们要关注算法的渐近边界?

好吧,有很多原因,但我认为其中最重要的是:

  1. 确定它的难度要大得多 确切的复杂度函数,因此我们“折衷”了big-O / big-Theta表示法,这些表示法在理论上足够有用。
  2. 确切的操作次数也取决于平台。例如,如果我们有一个由16个数字组成的向量(列表)。需要多少操作?答案是:这取决于。有些CPU允许矢量加法,而另一些则不允许,因此答案在不同的实现和不同的机器之间是不同的,这是不希望的。但是,在机器和实现之间,big-O表示法更加稳定。

为了演示此问题,请查看以下图形: 在此处输入图片说明

显然,这f(n) = 2*n比“更糟糕” f(n) = n。但是与其他功能相比,差异并不那么明显。我们可以看到,它f(n)=logn很快变得比其他功能低很多,并且f(n) = n^2也很快比其他功能高很多。
因此-由于上述原因,我们“忽略”了常数因子(在图形示例中为2 *),并且仅采用big-O表示法。

在上面的示例中,f(n)=n, f(n)=2*n将同时位于O(n)和中Omega(n),因此也将位于中Theta(n)
另一方面- f(n)=logn会在O(n)(比中“更好” f(n)=n),但不会在Omega(n)-中,因此也不会在Theta(n)
以对称方式,f(n)=n^2将位于Omega(n),但不在,O(n)因此-也不为Theta(n)


1通常,尽管并非总是如此。当缺少分析类(最差,平均和最好)时,我们的意思是最坏的情况。


4
@krishnaChandra:f(n) = n^2渐近于n,因此为Omega(n)。但是它不是O(n)(因为对于较大的nc*n,对于所有,它都大于然后n)。因为我们说Theta(n)是O(n)和Omega(n)的交集,所以由于它不是O(n),所以也不能是Theta(n)。
amit 2012年

8
很高兴看到有人解释big-O表示法与算法的最佳/最坏情况运行时间无关。当我在Google上搜索主题O(T(n))表示运行情况更糟时,出现了很多网站。
威尔·塞威尔

1
@almel这是2 * n(2n,n的两倍),而不是2 ^ n
2014年

5
@VishalK 1.大O是上限,因为n趋于无穷大。2.欧米茄是下界,因为n趋于无穷大。3. Theta既是上限又是下限,因为n趋于无穷大。请注意,所有边界仅在“因为n趋于无穷大” 时才有效,因为对于n的低值(小于n0),边界不成立。该范围适用于所有ñN0,但不低于N0其中低阶项成为主导。
贝恩

1
@hey_you再次阅读答案。big O,Theta,Omega是功能而不是算法。合并排序是Omega(n)最坏的情况。这也是O(n ^ 2)的最佳情况。这也是Theta(nlogn)最坏的情况。基本上,对于每个分析(最差/最佳/平均/ ...),您都有一个复杂度函数T_best(n), T_worst(n), T_average(n)。它们不必完全相同(而且大多数情况下不是一样)。O / Omega / Theta可以独立应用于其中任何一个。
amit

14

Theta(n):函数f(n)属于Theta(g(n)),如果存在正常数c1c2并且f(n)可以将其夹在c1(g(n))和之间c2(g(n))。即它给出了上限和下限。

Theta(g(n))= {f(n):存在正常数c1,c2和n1使得0 <= c1(g(n))<= f(n)<= c2(g(n))对于所有n> = n1}

当我们说f(n)=c2(g(n))f(n)=c1(g(n))代表渐近紧边界时。

O(n):仅给出上限(可能会紧,也可能不会紧)

O(g(n))= {f(n):存在正常数c和n1,使得所有n> = n1的0 <= f(n)<= cg(n)}

ex:边界2*(n^2) = O(n^2)是渐近严格的,而边界2*n = O(n^2)不是渐近严格的。

o(n):仅给出上限(从不严格)

对于所有n> = n1,O(n)和o(n)之间的显着差异是f(n)小于cg(n),但不等于O(n)。

例如2*n = o(n^2),但2*(n^2) != o(n^2)


1
您没有提到大欧米茄,它是指较低的价格。否则,非常好的第一答案,欢迎您!
bohney 2012年

1
我喜欢他对Theta(n)定义的方式。已投票!
user720694 2013年


1

大Theta表示法:

没什么可搞砸的哥们!

如果我们有一个正值函数f(n)并且g(n)接受一个正值参数n,则ϴ(g(n))定义为{f(n):对于所有n>,都有常数c1,c2和n1 = n1}

其中c1 g(n)<= f(n)<= c2 g(n)

让我们举个例子:

令f(n)=

g(n)=

c1 = 5和c2 = 8且n1 = 1

在所有符号中,符号提供了函数增长率的最佳直觉,因为它给了我们一个紧密的界限,而big-oh和big-omega分别给出了上限和下限。

ϴ告诉我们g(n)尽可能接近f(n),g(n)的增长率尽可能接近f(n)的增长率。

看到图像以获得更好的直觉


0

首先理论

  1. 大O =上限O(n)

  2. Theta =阶函数-theta(n)

  3. Ω= Q表示法(下限)Q(n)

为什么人们如此困惑?

在许多博客和书籍中,如何强调此声明就像

“这是大O(n ^ 3)”等。

人们常常像天气一样迷惑

O(n)== theta(n)== Q(n)

但是需要记住的是它们只是具有O,Theta和Omega名称的数学函数

因此它们具有相同的多项式一般公式,

让,

f(n)= 2n4 + 100n2 + 10n + 50然后,

g(n)= n4,所以g(n)是将函数作为输入并以更大的幂返回变量的函数,

以下所有说明的f(n)和g(n)相同

大O-功能(提供上限)

大O(n4)= 3n4,因为3n4> 2n4

3n4是Big O(n4)的值,就像f(x)= 3x

n4在这里扮演x的角色

用x'so代替n4,大O(x')= 2x',现在我们都很高兴一般概念是

所以0≤f(n)≤O (x')

O(x')= cg(n)= 3n4

投入价值

0≤2n4 + 100n2 + 10n + 50≤3n4

3n4是我们的上限

Theta(n)提供下界

Theta(n4)= cg(n)= 2n4因为2n4≤我们的示例f(n)

2n4是Theta(n4)的值

所以0≤cg(n)≤f(n)

0≤2n4≤2n4 + 100n2 + 10n + 50

2n4是我们的下界

Ωn阶函数

计算得出,天气下界与上限相似,

情况1)。上界与下界相似

if Upper Bound is Similar to Lower Bound, The Average Case is Similar

Example, 2n4 ≤ f(x) ≤ 2n4,
Then Omega(n) = 2n4

情况2)。如果上界与下界不相似

in this case, Omega(n) is Not fixed but Omega(n) is the set of functions with the same order of growth as g(n).

Example 2n4 ≤ f(x) ≤ 3n4, This is Our Default Case,
Then, Omega(n) = c'n4, is a set of functions with 2 ≤ c' ≤ 3

希望这个解释!

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.