Big-O表記とLittle-O表記の違い


回答:


442

f∈O(g)は、本質的に

以下のために少なくとも一つの定数の選択K > 0、あなたは定数見つけることができ不平等0、A <= f(x)が<=キロ(x)は、Xのすべてのために保持している>ようにします。

O(g)は、この条件が満たされるすべての関数のセットであることに注意してください。

f∈o(g)は、本質的に言う

以下のために、すべての定数の選択K > 0、あなたは定数見つけることができ不平等0、A <= f(x)が<キログラム(x)は、Xのすべてのために保持している>ようにします。

ここでも、o(g)がセットであることに注意してください。

Big-Oでは、不等式が何らかの最小値xを超えて保持される特定の乗数kを見つける必要があるだけです。

Little-oでは、kをどのように小さくしても、それが負またはゼロでない限り、不等式が成り立つ最小xがある必要があります。

これらはどちらも上限を説明していますが、多少直感に反しますが、Little-oの方が強力な声明です。f g O(g)の場合よりもf∈o(g)の場合の方が、fとgの成長率のギャップははるかに大きくなります。

視差の1つの例は次のとおりです。f∈O(f)は真ですが、f∈o(f)は偽です。したがって、Big-Oは「f∈O(g)はfの漸近的成長がgの成長よりも速くないことを意味する」と読むことができます。<=対のようなもの<です。

より具体的には、g(x)の値がf(x)の値の定数倍である場合、f∈O(g)は真です。これが、big-O表記で作業するときに定数をドロップできる理由です。

ただし、f∈o(g)がtrueになるためには、gの式にxのより高い累乗が含まれている必要があるため、xが大きくなるにつれて、f(x)とg(x)の間の相対的な間隔が実際に大きくなる必要があります。

(アルゴリズムを参照するのではなく)純粋に数学の例を使用するには:

以下はBig-Oに当てはまりますが、little-oを使用した場合は当てはまりません。

  • x²∈O(x²)
  • x²∈O(x²+ x)
  • x²∈O(200 *x²)

以下はlittle-oに当てはまります。

  • x²∈o(x³)
  • x²∈o(x!)
  • ln(x)∈o(x)

f∈o(g)の場合、これはf∈O(g)を意味することに注意してください。たとえばx²∈o(x³)なので、x²∈O(x³)であることも真実です(ここでも、O <=をoとして、oをとして考えます<


146
はい。違いは、2つの関数が漸近的に同じであるかどうかです。直感的には、big-Oは「より速く成長しない」(つまり、同じ速度またはより遅い速度で成長する)ことを意味し、little-oは「厳密に遅いよりも成長する」ことを意味します。
Phil

12
これをウィキペディアにコピーしますか?これは、そこにあるものよりもはるかに優れています。
cloudsurfin 2014年

1
@SAはい。これは、「xの高次のべき乗」について私が与えたより単純な規則が明らかに適用できない場合のトリッキーなケースです。しかし、以下のStrilancの回答で与えられているより厳密な制限の定義を見る場合、知りたいのはlim n-> inf(2 ^ n / 3 ^ n)= 0かどうかです。(2 ^ n / 3 ^ n)以降=(2/3)^ nであり、0 <= x <1の場合、lim n-> inf(x ^ n)= 0であるため、2 ^ n = o(3 ^ n)となるのは事実です。
タイラーマクヘンリー2016年

1
「Little-oでは、kをどのように小さくしても、それが負またはゼロでない限り、不等式が成立する最小のxが存在する必要があります。」に注意してください。それは「aそこにあるすべてのためにk...」ではなく、「すべてにkそれがあるためにa...」
GA1

1
「Little-oでは、kがどんなに小さくても、それが負またはゼロでない限り、不等式が成り立つ最小xがある必要があります。」いいえ、これは正しくありません。
フィリッポコスタ

196

Big-Oは、Little-Oと同じです<。Big-Oは包括的上限であり、Little-Oは厳密な上限です。

たとえば、関数f(n) = 3nは次のとおりです。

  • O(n²)o(n²)O(n)
  • ない中O(lg n)o(lg n)またはo(n)

同様に、数1は次のとおりです。

  • ≤ 2、、< 2および≤ 1
  • いない≤ 0< 0または< 1

以下は、一般的なアイデアを示す表です。

ビッグオーテーブル

(注:この表は適切なガイドですが、その制限の定義は通常の制限ではなく上位制限の観点から行う必要があります。たとえば、3 + (n mod 2) 3と4の間で永続的に変動します。O(1)通常の制限がないにもかかわらず、 a lim sup:4.)

Big-O表記を漸近比較に変換する方法を覚えておくことをお勧めします。比較は覚えやすくなりますが、n O(1) = Pのようなことは言えないため、柔軟性が低くなります。


1つ質問があります。3行目と4行目(制限定義列)の違いは何ですか?4は保持する(lim> 0)が、3は保持しない1つの例を示してください。
マスクされた男

3
ああ、わかった。Big Omegaはlim> 0の場合、Big Ohはlim <無限大の場合、Big Thetaは両方の条件が成立する場合、つまり0 <lim <無限大の場合です。
マスクされた男

f∈Ω(g)の場合、無限大での制限が> = 1に評価されるべきではありませんか?同様にf∈O(g)の場合、1 = <c <∞?
user2963623 2015

1
@ user2963623いいえ。0から1までの値を含む、厳密に0を超える有限値は、「漸近的な複雑さは同じだが定数定数が異なる」ことに相当します。1未満の値を省略すると、漸近複雑度空間ではなく、定数因子空間でカットオフが発生します。
Craig Gidney、2015

1
@ubadubセットで指数演算をブロードキャストします。ゆるい表記です。
クレイグギドニー

45

概念的に何かを理解できない場合、なぜXを使用するのかを考えることは、Xを理解するのに役立ちます(これを試したことがないのは言うまでもありませんが、私はただステージを設定しています)。

[知っていること]アルゴリズムを分類する一般的な方法は実行時であり、アルゴリズムのBig-Ohの複雑さを引用することで、どれが「より良い」か、「最も小さい」機能を持つ方のかなり良い見積もりを得ることができます。 Oで!現実の世界でさえ、O(N)はO(N²)より「良い」ので、超大規模定数などのようなばかげたものを除外します。[/知っていること]

O(N)で実行されるいくつかのアルゴリズムがあるとしましょう。かなりいいですね しかし、あなた(あなたは素晴らしい人です)がO(NloglogloglogN)で実行されるアルゴリズムを考え出したとしましょう。わーい!その速い!しかし、あなたが論文を書いているとき、あなたはそれを何度も何度も何度も書いているように感じるでしょう。つまり、一度書けば、「この論文では、以前に時間O(N)で計算可能であったアルゴリズムXが実際にo(n)で計算可能であることを証明しました。」

したがって、誰もがあなたのアルゴリズムがより高速であることを知っています---どのくらい不明確であるかによって、彼らはそれがより速いことを知っています。理論的には。:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.