計算量の理論で頻繁に登場するビッグオー記法を導入する。
ざっくりとした定義
まずはざっくりと定義を説明する。
以下、実数を入力して実数を出力する関数 f:R→R を考える。
ビッグオー記法
The big-O notation
関数の入力値 x が十分に大きい場合に、有限確定値 M が存在して
∣f(x)∣≤M∣g(x)∣
が成り立つことを
f(x)=f(x)≤f(x)∈O(g(x)) (x→∞),O(g(x)),O(g(x))
などと表す。
このような表現方法は x→∞ のみならず、定数 a に対して x→a であるような場合に対しても定義することができる。
The big-O notation
関数の入力値 x が限りなく定数 a に近づく際に、有限確定値 M が存在して
∣f(x)∣≤M∣g(x)∣
が成り立つことを
f(x)=O(g(x)) (x→a)
などと表す。
以上のような表記をビッグオー記法 (Big-O notation) という。
ビッグオメガ記法
The big-Ω notation
関数の入力値 x が十分に大きい場合に、有限確定値 m が存在して
∣f(x)∣≥m∣g(x)∣
が成り立つことを
f(x)=f(x)≥f(x)∈Ω(g(x)) (x→∞),Ω(g(x)),Ω(g(x))
などと表す。
ビッグオー記法とは不等号の向きが反対であることに注意しよう。ビッグオー記法と同様に、x→∞ のみならず定数 a に対して x→a であるような場合に対しても定義することができる。
The big-Ω notation
関数の入力値 x が限りなく定数 a に近づく際に、有限確定値 m が存在して
∣f(x)∣≥m∣g(x)∣
が成り立つことを
f(x)=Ω(g(x)) (x→a)
などと表す。
以上のような表記をビッグオメガ記法 (Big-Ω notation) という。
ビッグシータ記法
ビッグオー記法による g(x) と、ビッグオメガ記法による g(x) が一致する場合には、しばしば
f(x)=f(x)=Θ(g(x)) (x→∞)Θ(g(x)) (x→a)
などと表される。この表記をビッグシータ記法という。
注意
等号により表現されていることからしばしば混乱を招く。たとえば
x2=2x2=O(x2) (x→∞)O(x2) (x→∞)
ではあるが、
ではない。また、通常は x→∞ などは省略して
ex=O(2x)
などと表現されるため、それが x→∞ なのか x→0 なのかは状況に応じて判断する必要がある。
具体的な使い方の例
-
入力が大きくなった場合の関数値の振る舞いを記述する
2logn∈2logn∈2logn∈2logn∈2logn∈O(n2),O(logn),Θ(logn),Ω(logn),Ω(1)
以上のことから確認できるように、ビッグオー記法やビッグオメガ記法はそれぞれ関数の近似的な上界と下界を記すものであり、ビッグシータ記法に近いものほど意味を成す。
-
無限級数の振る舞いを記述する
指数関数を3次の項までマクローリン展開すると
exp(x)=1+1!1x+2!1x2+3!1x3+O(x4) (x→0)
-
アルゴリズムの性能の限界を理論的に記述する
多腕バンディット問題に対し、期待リグレット E[regret(n)] を最小化するというアプローチを取る場合、第 N 回目の試行における期待リグレット E[regret(N)] の下界は
E[regret(N)]=Ω(logN) (N→∞)
であることが知られている。
より厳密な定義
より厳密には、イプシロン-デルタ論法を用いて次のように定義する。
The big-O notation and the big-Ω notation
f(x)=O(g(x)) (x→∞)⟺def∀x0>0, ∃M>0, [x>x0⟹∣f(x)∣≤M∣g(x)∣]f(x)=O(g(x)) (x→a)⟺def∀x0>0, ∃M>0, [∣x−a∣<x0⟹∣f(x)∣≤M∣g(x)∣]f(x)=Ω(g(x)) (x→∞)⟺def∀x0>0, ∃m>0, [x>x0⟹∣f(x)∣≥m∣g(x)∣]f(x)=Ω(g(x)) (x→a)⟺def∀x0>0, ∃m>0, [∣x−a∣<x0⟹∣f(x)∣≥m∣g(x)∣]
別の理解
十分大きな x に対して g(x)>0 が成り立つ場合には、次のように書き換えることができる。
f(x)f(x)=O(g(x)) (x→∞)=Ω(g(x)) (x→∞)⟺⟺x→∞limsupg(x)∣f(x)∣x→∞liminfg(x)∣f(x)∣<∞>0