下限とタイトバウンドの違いは何ですか?


99

この答えを参考にして、シータとは何ですか?

オメガは下限であり、十分に理解されており、アルゴリズムにかかる最小時間です。Big-Oは上限を意味します。つまり、アルゴリズムにかかる最大時間です。しかし、シータについては私にはわかりません。

回答:


154

ビッグOは上限ですが、オメガは下限です。シータには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
ああ..今、「タイトバウンド」という言葉は私にはかなり自明のように見えます。クリス、ありがとう。ばかげた、おそらく私はいくつかの複雑なアイデアを期待していました。:)
Adeel Ansari、

6
ええ、たくさんの派手な表記法が使われていますが、ベルトの下に置いてしまえばそれほど複雑ではありません。
Chris Bunch、

4
バージニア工科大学からのこの自由に利用できる文書は例と異なる複雑さと簡潔のアルゴリズム間のパフォーマンスの違いを説明して漸近解析について説明します。people.cs.vt.edu/shaffer/Book/C++3e20120102.pdf
アラン・

「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 2018年

113

Θ表記(シータ表記)は、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 2016年

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誰かがこれと混同されている場合:漸近的にタイトでないsmall-o表記が使用されているそのような関数には、使用されます。例:-範囲2n ^ 2 = O(n ^ 2)は漸近的にタイトですが、範囲2n = O(n ^ 2)はそうではありません。もっと読む:stackoverflow.com/questions/1364444/...
ドラゴスStrugar

18

あなたは何かがある場合は O(F(n)を)手段があるのは、あること、KG(n)のように、F(n)はキロ(N)

あなたは何かがある場合は Ω(F(n)を)手段があるのは、あること、KG(n)のように、F(n)はキロ(N)

そして、あなたがO(f(n)) Ω(f(n))で何かを持っているなら、それはΘ(f(n)ですです。

Wikipediaの記事は少し密な場合には、まともです。


今、バックマン・ランダウ記法のファミリーを読んでいます。チャーリーのおかげで、以前そこに行きましたが、その長さまで進むことなく戻りました。
Adeel Ansari、

ねえ、博士のコンプを時々リフレッシュするのはいいことです。
チャーリーマーティン

ランダウのビッグO表記は、アルゴリズムの複雑さに限定されないことに注意してください。
チャーリーマーティン

これは間違っているようです。最初の行では、「O(g(n))であるものがある場合」、つまり、g代わりに表示されf、残りはそのままにすることができます。同じことが2行目にもあてはまります。「Ω(g(n))のものがあれば」です。再確認していただけますか?
Fabioは、モニカ

トピック全体がめちゃくちゃに混乱しているので、そのクレジットを持っている人も間違っているかもしれません: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

2
@ArunAravind理由を説明できますか?
nbro 2015

3

ここでは、最小時間最大時間というフレーズは少し誤解を招きます。大きなO表記について話すとき、それは私たちが興味を持っている実際の時間ではなく、入力サイズが大きくなると時間が増加する方法です。そしてそれは通常、私たちが話している平均または最悪のケースの時間であり、最良のケースではありませんではありません。これは通常、問題の解決に意味がありません。

例として、他の質問に対する受け入れられた回答の配列検索を使用します。サイズnのリストで特定の数値を見つけるのにかかる時間は、平均でn / 2 * some_constantです。これを関数として扱うと、チャーリーによって与えられた意味ではf(n) = n/2*some_constantそれよりも速く増加しませんg(n) = n。また、g(n)どちらよりもゆっくりと増加します。したがって、g(n)は実際にf(n)はBig-O表記の上限と下限の両方なので、線形検索の複雑さは正確に nです。であり、これはTheta(n)であることを意味します。

これに関して、他の質問に対する受け入れられた回答の説明は完全には正しくありません。アルゴリズムは一部の入力に対して一定の時間で実行できるため、O(n)が上限であると主張します(これは私が上記で述べた最良のケースです。これは、実際に実行時間について知りたいことではありません)。


したがって、Ωが最良のケースであり、Oが最悪のケースであると言えるでしょうか。。..そして、それぞれ、最良の場合と最悪の場合の用語を置き換える必要がありますか?
Adeel Ansari、

どんな問題でもO(1)が最良のケースですか?
Zach Langley、

1
@Adeel、いや、シータとOはどちらも平均的なケースと最悪のケースのどちらを指すこともあります。@Zach、まあ、正確ではありません。ご指摘いただきありがとうございます。
PolyThinker 2009年

0

私が怠惰だったら、ソートされた配列のバイナリ検索はO(n2)、O(n3)、O(2n)であると言えるでしょう。

o表記( "little-oh")を使用して、漸近的にタイトでない上限を表すことができます。big-ohとlittle-ohは似ています。しかし、big-ohは、漸近的に厳しい上限を定義するために使用される可能性があります。


0

正確には、下限または$ \ 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 $が私たちに私たちに最低限を与える実際の速度を与えると言うこともできます。


-2

の基本的な違い

ブロッククォート

漸近的に上限があり漸近的にタイトなAsym.upperboundは、入力の数に応じて最大時間で実行できる特定のアルゴリズムを意味します。上限の複雑さを示すO(n)の実行時間がかかりますが、それらがすでにソートされている場合はohm(1)が必要になるため、通常、上限の複雑さには「O」表記を使用しました。

非対称。タイトバウンドバウンドは、eg(c1g(n)<= f(n)<= c2g(n))がタイトバウンドリミットを示し、関数が2つのバウンド(上限と下限)の間に値を持つようにします。平均的なケース。


2
あなたの答えがすでに受け入れられた答えに何も追加しない場合は、古い質問に答えるべきではありません。
alestanis 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.