[計算量をざっくり理解] Big Ω Big Θ

ランダウの記号 ランダウの記号(ランダウのきごう、英:Landau symbol)は、関数の極限における値の変化度合いに、おおよその評価を与えるための記法である。 出典: フリー百科事典『ウィキペディア(Wikipedia)』 "Big O ...

Big Ω 記法

Big O 記法では、\(f(x) = O(g(x)) \)は,関数\( g(x) \)が関数\( f(x) \)の上界であることを表しました。

Big Ω 記法では、 \(f(x) = \Omega (g(x)) \)は,関数\( g(x) \)が関数\( f(x) \)の下界であることを表します。

定義

$$ \exists x_0 , \exists C \gt 0 \mbox{ s.t. } x \gt x_0 \Rightarrow |f(x)| \geq C|g(x)| $$

Big Θ 記法

\(f(x) = O(g(x)) \) であり \(f(x) = \Omega (g(x)) \) である場合、つまり関数の上界と下界が一致する場合は、Big Θ 記法を用いて、 \(f(x) = \Theta (g(x)) \) と表します。

定義

$$ \exists x_0 , \exists C_1, C_2 \gt 0 \mbox{ s.t. } x \gt x_0 \Rightarrow C_1|g(x)| \leq |f(x)| \leq C_2|g(x)| $$

具体例

例1

$$ f(n) = 10 n^2 – 100 n + 10 $$

\( f(n) = O(n^2) \) を示す

\( |f(n)| \leq C|g(n)| \) を考える。

\( n \geq 10\) の時\( 10 n^2 \geq 100 n \) なので、絶対値を取って \( |f(n)| = f(n) \)

\( 10 n^2 – 100 n + 10 \leq C \times n^2 \)

\( C = 10 \) で \( n \geq 10\) であれば、 \( 10 n^2 – 100 n + 10 \leq 10 \times n^2 \)

よって、 \( |f(n)| \leq 10 \times n^2 \) であり、\( f(n) = O(n^2) \) \( ∎ \)

\( f(n) = O(n^3) \) を示す

\( |f(n)| \leq C|g(n)| \) を考える。

\(n\) が十分に大きいとき、上と同様に絶対値の記号を取って \( |f(n)| = f(n) \)

\( C = 1 \) で \( n \geq 10\) であれば、\( 10 n^2 – 100 n + 10 \leq 10 \times n^2 \leq n^3\)

よって、 \( f(n) = O(n^3) \) \( ∎ \)

Big O記法は、関数の上界をあらわすので、\( f(n) = O(n^k) \) の時、 \( f(n) = O(n^{k+i}) \) 、ただし\( i \gt 1\) 。

例えば、\(O(n^2)\) であれば、 \(O(n^3)\) 、 \(O(n^4)\)、 \(O(n^5)\)… も OK 。

\( f(n) \neq O(n) \) を示す

\( |f(n)| \leq C|g(n)| \) を考える。

\(n\) が十分に大きいとき、上と同様に絶対値の記号を取って \( |f(n)| = f(n) \)

\( 10 n^2 – 100 n + 10 \leq C \times n \) を示せばよい。

しかし、\(n\)が十分に大きければ、 \( 10 n^2 – 100 n + 10 \geq n^2 \) である。

\(n\)が十分に大きければ、 \( C \times n \lt n^2 \) なので、 \( 10 n^2 – 100 n + 10 \leq C \times n \) は不適。

よって、\( f(n) \neq O(n) \) \( ∎ \)

\( f(n) = \Omega (n^2) \) を示す

\( |f(n)| \geq C|g(n)| \) を考える。

\(n\) が十分に大きいとき、上と同様に絶対値の記号を取って \( |f(n)| = f(n) \)

\( f(n) \geq C \times n^2 \) を示せばよいので、\( 10 n^2 – 100 n + 10 \geq C \times n^2 = 1 \times n^2 \)

\( C = 1\)で、\(n \geq 11.01… \)の時 \( 10 n^2 – 100 n + 10 \geq 1 \times n^2 \)

よって、 \( f(n) = \Omega (n^2) \) \( ∎ \)

\( f(n) = \Theta (n^2) \) を示す

ここまでで、 \( f(n) = O(n^2) \) であり \( f(n) = \Omega (n^2) \) なので、\( f(n) = \Theta (n^2) \) \( ∎ \)

アルゴリズムの計算量を考える時、主なオーダーのグラフは以下のようになります。 wikipedia より \( O(1) \) 定数 Constant、\( O ( \log n) \) 対数 Logarithmic、\( O (n) \) 線形 ...