これを参照して answer 、シータ(タイトバウンド)とは何ですか?
オメガは下限であり、非常に理解されており、アルゴリズムにかかる最小時間です。また、Big-Oは上限を意味します。つまり、アルゴリズムにかかる最大時間を意味します。しかし、シータに関してはわかりません。
Big Oは上限、Omegaは下限です。ThetaはBig OとOmegaの両方を必要とするため、tight bound(上限と下限の両方でなければなりません)と呼ばれる理由です。
たとえば、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)。
Θ-記法(シータ記法)はO-記法およびΩ-記法(オメガ記法)よりも正確であるため、タイトバウンドと呼ばれます。
私が怠け者であれば、ソートされた配列のバイナリ検索はO(n2)、 オン3)、およびO(2n)、そして私はすべてのケースで技術的に正しいでしょう。これは、O表記が上限のみを指定しているためであり、バイナリ検索はこれらのすべての関数によって非常に厳密ではなく、高い側で制限されているためです。これらの遅延推定値は役に立たないになります。
Θ表記法は組み合わせ O表記法とΩ表記法によってこの問題を解決します。バイナリ検索がΘ(log n)であると言えば、より正確な情報が得られます。アルゴリズムは、与えられた関数によってboth側に制限されているため、指定されたものより大幅に速くも遅くもなりません。
O(f(n))の何かがある場合、それはk、g(n)f(n) ≤kg(n).
Ω(f(n))の何かがある場合、それはk、g(n)f(n) ≥kg(n)。
そして、O(f(n))andΩ(f(n))、それはΘ(f(n)。
ウィキペディアの記事 は、少し濃い場合はまともです。
漸近的上限は、入力数に応じて、指定されたアルゴリズムが最大時間の間に実行されることを意味します。
ソートアルゴリズムを例に取りましょう。配列のすべての要素が降順になっている場合、それらをソートするには、O(n)
の実行時間がかかり、上限の複雑さが示されます。配列が既にソートされている場合、値はO(1)
になります。
通常、O-notation
は、複雑度の上限に使用されます。
漸近的にタイトな境界(c1g(n)≤f(n)≤c2g(n))は、範囲の上限(上限と下限)の間の値を持つ、関数の平均の複雑さを示します。ここで、c1 およびc2 定数です。
フレーズminimum timeおよびmaximum timeはここでは少し誤解を招きます。大きなO表記について話すときは、実際の時間ではなく、入力サイズが大きくなると時間はどのように長くなるかです。そして、それは通常、私たちが話している平均または最悪のケース時間であり、ベストケースではなく、通常、問題を解決するのに意味がありません。
例として、他の質問に対する受け入れられた回答で配列検索を使用します。サイズnのリストで特定の数値を見つけるのにかかる時間は、平均でn/2 * some_constantです。これを関数f(n) = n/2*some_constant
として扱う場合、Charlieによって与えられた意味で、g(n) = n
より速く増加することはありません。また、g(n)
よりも遅くなることもありません。したがって、g(n)
は実際にはBig-O表記のf(n)
の上限と下限の両方であるため、線形検索の複雑さはexactlyですn、つまり、Theta(n)であることを意味します。
これに関して、他の質問に対する受け入れられた答えの説明は完全に正しいわけではありません。アルゴリズムはいくつかの入力に対して一定の時間で実行できるため、O(n)は上限ですこれはベストケースです上記で述べましたが、実際に実行時間について知りたいことではありません)。
私が怠け者であれば、ソートされた配列のバイナリ検索はO(n2)、O(n3)、およびO(2n)であると言えます。
O表記(「little-oh」)を使用して、漸近的に厳密ではない上限を示すことができます。 big-ohとlittle-ohは似ています。しかし、big-ohは、漸近的にタイトな上限を定義するために使用される可能性があります。
正確に下限または$\omega $ bfon f(n)は、漸近的にf(n)すなわちU g(n)≤cf(n)$\for all $ `un≥n '一部のcでは、n' $\in $ $\Bbb {N} $
そして、f(n)の上限または$\mathit {O} $は、漸近的にf(n)以上の関数のセットを意味します=数学的に言うと、
$ g(n)\ ge cf(n)\ for all n\ge n '$、一部のc、n' $\in $ $\Bbb {N} $に対して。
ここで、$\Theta $は、上記の2つの交差点です。
$\theta $
アルゴリズムが「正確に$\Omega\left(f(n)\ right $」のような場合、$\Theta\left(f(n)\ right)$であると言う方が良い.
または、実際の速度を与えると言うこともできます。$ \omega $
は私たちに最低の制限を与えます。