我对大O,大欧米茄和大Theta符号之间的差异感到困惑。
我知道大O是上界,大欧米茄是下界,但大Ө(theta)到底代表什么?
我读过它意味着 紧束缚 ,但这意味着什么?
答案 0 :(得分:306)
首先让我们了解大O,大Theta和大欧米茄是什么。它们都是sets个函数。
大O正在给予asymptotic bound上限,而大欧米茄正在给出下限。 Big Theta给出了两者。
Ө(f(n))
的所有内容也是O(f(n))
,但不是相反。
如果T(n)
位于Ө(f(n))
和O(f(n))
,则Omega(f(n))
被称为Ө(f(n))
。
在术语集中, O(f(n))
是Omega(f(n))
的{{3}}和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(f(n))
。
不要与最差,最佳和平均病例分析混淆:所有三种(Omega,O,Theta)符号 与算法的最佳,最差和平均病例分析相关。这些中的每一个都可以应用于每个分析。
我们通常用它来分析算法的复杂性(就像上面的合并排序示例一样)。当我们说“算法A是O(f(n))
”时,我们真正的意思是“最差 1 案例分析下的算法复杂度是f(n)
” - 意思是 - 它缩放“类似“(或者正式,不是更糟)函数f(n) = 2*n
。
嗯,这有很多原因,但我相信其中最重要的是:
要演示此问题,请查看以下图表:
很明显f(n) = n
比f(n)=logn
“更差”。但差异并不像其他功能那么激烈。我们可以看到f(n) = n^2
很快就会比其他函数低得多,f(n)=n, f(n)=2*n
很快就会比其他函数高得多。
因此 - 由于上述原因,我们“忽略”常数因子(图中的2 *),并且只采用big-O表示法。
在上面的示例中,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}}。
1 通常,虽然并非总是如此。当分析类(最差,平均和最佳)缺失时,我们的意思是最坏的情况。
答案 1 :(得分:85)
这意味着该算法在给定函数中都是big-O和big-Omega。
例如,如果它是Ө(n)
,那么有一些常量k
,这样你的函数(运行时,无论如何)大于n*k
足够大n
{1}}和其他一些常量K
,使得您的函数小于n*K
,足够大n
。
换句话说,对于足够大的n
,它夹在两个线性函数之间:
对于k < K
和n
足够大,n*k < f(n) < n*K
答案 2 :(得分:13)
Theta(n):函数f(n)
属于Theta(g(n))
,如果存在正常量c1
和c2
,则f(n)
1}}可以夹在c1(g(n))
和c2(g(n))
之间。即它既给出上限也有下限。
Theta(g(n))= {f(n):存在正常数c1,c2和n1,使得 0 <= c1(g(n))&lt; = f(n)&lt; = 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&gt; = n1} 0 <= f(n)<= cg(n)
ex :绑定的2*(n^2) = O(n^2)
渐近紧,而绑定的2*n = O(n^2)
并非渐近紧。
o(n):它只给出上限(绝不是紧束缚)
O(n)&amp;之间的显着差异o(n)是f(n)小于cg(n) 对于所有n> = n1但不等于O(n)。
前:2*n = o(n^2)
,但2*(n^2) != o(n^2)
答案 3 :(得分:1)
没什么可惹的哥们!
如果我们有一个正值函数f(n)并且g(n)接受一个正值参数n,则ϴ(g(n))定义为{f(n):存在常数c1,c2和n1全部n> = n1}
其中c1 g(n)<= f(n)<= c2 g(n)
c1 = 5和c2 = 8且n1 = 1
在所有表示法中,ϴ表示法提供了函数增长率的最佳直觉,因为它给了我们与big-oh和big-omega不同的紧密界限 分别给出上限和下限。
ϴ告诉我们g(n)与f(n)接近,g(n)的增长率尽可能接近f(n)的增长率。 p>
答案 4 :(得分:1)
我希望您可能会在经典的CLRS(第66页)中找到以下内容:
答案 5 :(得分:0)
首先是理论
大O =上限O(n)
Theta =阶函数-theta(n)
Omega = 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(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(n4)= cg(n)= 2n4,因为2n4≤我们的示例f(n)
2n4是Theta(n4)的值
所以,0≤cg(n)≤f(n)
0≤2n4≤2n4 + 100n2 + 10n + 50
2n4是我们的下界
计算得出的结果是天气下界类似于上限,
情况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
希望这个解释!