ビッグO、ビッグオメガ、ビッグシータの表記法の違いに本当に戸惑っています。
私は大きなOが上限で、大きなOmegaが下限であることを理解していますが、大きなӨ(シータ)は正確には何を表していますか?
私はそれがタイトなバウンドを意味することを読みましたが、それはどういう意味ですか
ビッグO、ビッグオメガ、ビッグシータの表記法の違いに本当に戸惑っています。
私は大きなOが上限で、大きなOmegaが下限であることを理解していますが、大きなӨ(シータ)は正確には何を表していますか?
私はそれがタイトなバウンドを意味することを読みましたが、それはどういう意味ですか
回答:
これは、指定された関数でアルゴリズムがbig-Oとbig-Omegaの両方であることを意味します。
例えばそれがある場合、Ө(n)
は、いくつかの定数がありk
、あなたの関数となるよう(実行時、何でも)、より大きく、n*k
十分に大きいためn
、および他のいくつかの定数K
関数がより小さくなるようにn*K
十分に大きいためn
。
つまり、が十分に大きいn
場合、2つの線形関数の間に挟まれます。
用k < K
とn
十分に大きいです、n*k < f(n) < n*K
まず、大きなO、大きなシータ、大きなオメガが何であるかを理解しましょう。これらはすべて関数のセットです。
ビッグOは、上与えている境界漸近ビッグオメガは、下限与えている一方で、。ビッグシータは両方を提供します。
あるものすべてもですӨ(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)
。一方、big-Omegaは次のC2
ような定数があると言いますT(n) >= C2 * f(n))
)。
最悪、最高、平均のケース分析と混同しないでください。3つすべての(オメガ、O、シータ)表記は、アルゴリズムの最高、最悪、平均のケース分析とは関係ありません。これらのそれぞれを各分析に適用できます。
通常、これを使用して、アルゴリズムの複雑さを分析します(上記のマージソートの例のように)。「アルゴリズムAはO(f(n))
」と言うとき、私たちが実際に意味するのは、「最悪の1ケース分析におけるアルゴリズムの複雑さO(f(n))
」は「意味」です。つまり、「類似」(または正式には、それより悪くはない)にスケーリングされますf(n)
。
それには多くの理由がありますが、最も重要なものは次のとおりです。
この問題を実証するには、次のグラフをご覧ください。
それ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通常、常にではありません。分析クラス(最悪、平均、最高)が欠落している場合は、最悪のケースを意味します。
f(n) = n^2
より漸近的に強いn
ため、Omega(n)です。ただし、それはO(n)ではありません(すべてので、n
値が大きい場合はより大きいc*n
ためn
)。Theta(n)はO(n)とOmega(n)の共通部分であると述べたので、O(n)ではないので、Theta(n)にもなりません。
T_best(n), T_worst(n), T_average(n)
。それらは同一である必要はありません(ほとんどの場合、それらは同一ではありません)。O / Omega / Thetaは、それらのいずれにも個別に適用できます。
シータ(N):関数は、f(n)
に属しているTheta(g(n))
正の定数が存在する場合、c1
及びc2
そのようなf(n)
間に挟むことができるc1(g(n))
とはc2(g(n))
。つまり、上限と下限の両方が得られます。
Theta(g(n))= {f(n):0 <= c1(g(n))<= f(n)<= c2(g(n))となるような正の定数c1、c2およびn1が存在しますすべてのn> = n1}
私たちが言うとき、f(n)=c2(g(n))
またはf(n)=c1(g(n))
それが漸近的にタイトな境界を表すとき。
O(n):上限のみを提供します(タイトな場合とそうでない場合があります)
O(g(n))= {f(n):すべてのn> = n1に対して0 <= f(n)<= cg(n)となるような正の定数cおよびn1が存在します}
ex:境界2*(n^2) = O(n^2)
は漸近的にタイトですが、境界2*n = O(n^2)
は漸近的にタイトではありません。
o(n):それは上限のみを与えます(決してタイトな境界ではありません)
O(n)とo(n)の顕著な違いは、f(n)がすべてのn> = n1でcg(n)よりも小さいが、O(n)の場合とは異なります。
EX:2*n = o(n^2)
しかし、2*(n^2) != o(n^2)
バディを台無しにするものはありません!!
正の値の関数f(n)があり、g(n)が正の値の引数nを取る場合、ϴ(g(n))は{f(n)として定義されます:すべてのn>に定数c1、c2、n1が存在します> = 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)の成長率にできるだけ近いことを示しています。
まず最初に理論
大きなO =上限O(n)
シータ=順序関数-シータ(n)
オメガ= Q表記(下限)Q(n)
多くのブログや本でこの声明が強調される方法は
「これはBig 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の役割を果たすここので、
n4をx'soで置き換えると、Big O(x ')= 2x'になります。今、私たちは2人とも満足しています。一般的な概念は
したがって、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
これが説明されているといいのですが!