これで完全理解!ランダウの記号(Big-O記法)を基礎から丁寧に解説

これで完全理解!ランダウの記号(Big-O記法)を基礎から丁寧に解説

目次

ランダウの記号とは

ランダウの記号(Landau’s symbols)は、関数の漸近的な振る舞いを記述するための記法で、主に計算機科学や数学において、アルゴリズムの計算量や関数の極限挙動を簡潔に表現するために使われます。

もっとも有名な記号は Big-O記法(オー記法)で、これは「ある関数が別の関数と同じオーダーで増加するか、より遅く増加する」ことを示します。

Big-O記法(O記法)

Big-O記法は、関数 \( f(n) \) が別の関数 \( g(n) \) によって上から抑えられることを示します。形式的には以下のように定義されます:

ある定数 \( c > 0 \) および \( n_0 \in \mathbb{N} \) が存在して、

$$ \forall n \geq n_0, \quad |f(n)| \leq c \cdot |g(n)| $$

が成り立つとき、次のように書きます:

$$ f(n) = O(g(n)) $$

例1:

\( f(n) = 3n^2 + 2n + 1 \) のとき、

$$ f(n) = O(n^2) $$

これは、3次項や対数項などよりも「最大の項(この場合は \( n^2 \))」が支配的であるためです。

例2:

\( f(n) = 5n \log n + 20 \) は、

$$ f(n) = O(n \log n) $$

Big-Ω記法(Ω記法)

Big-Ω記法は、関数がある下限を持つことを示します。すなわち、ある程度大きな入力に対して、関数 \( f(n) \) が少なくとも \( g(n) \) のオーダーで成長することを意味します。

形式的には以下のように定義されます:

ある定数 \( c > 0 \)、および \( n_0 \in \mathbb{N} \) が存在して、

$$ \forall n \geq n_0, \quad |f(n)| \geq c \cdot |g(n)| $$

のとき、

$$ f(n) = \Omega(g(n)) $$

例:

\( f(n) = n^3 + n \) は、

$$ f(n) = \Omega(n^3) $$

Big-Θ記法(Θ記法)

Big-Θ記法は、関数が上限・下限の両方を持ち、ある関数 \( g(n) \) と同じオーダーであることを示します。

定義は次の通りです:

定数 \( c_1, c_2 > 0 \)、および \( n_0 \in \mathbb{N} \) が存在して、

$$ \forall n \geq n_0, \quad c_1 \cdot |g(n)| \leq |f(n)| \leq c_2 \cdot |g(n)| $$

のとき、

$$ f(n) = \Theta(g(n)) $$

例:

\( f(n) = 7n^2 + 4n \) のとき、

$$ f(n) = \Theta(n^2) $$

Little-o記法

Little-o記法は、関数 \( f(n) \) が \( g(n) \) よりもはるかに遅く増加する(または減少する)ことを示します。

定義は以下の通りです:

任意の定数 \( \varepsilon > 0 \) に対して、ある \( n_0 \in \mathbb{N} \) が存在して、

$$ \forall n \geq n_0, \quad |f(n)| \leq \varepsilon \cdot |g(n)| $$

のとき、

$$ f(n) = o(g(n)) $$

例:

\( f(n) = n \)、\( g(n) = n^2 \) のとき、

$$ n = o(n^2) $$

Little-ω記法

Little-ω記法は、関数が別の関数よりもずっと早く成長することを示します。

形式的には:

任意の定数 \( c > 0 \) に対して、ある \( n_0 \in \mathbb{N} \) が存在して、

$$ \forall n \geq n_0, \quad |f(n)| \geq c \cdot |g(n)| $$

かつ、

$$ \lim_{n \to \infty} \frac{g(n)}{f(n)} = 0 $$

のとき、

$$ f(n) = \omega(g(n)) $$

例:

\( f(n) = n^2 \), \( g(n) = n \) のとき、

$$ n^2 = \omega(n) $$

各記法の比較とまとめ

記法意味関係性
O上限増加速度は高くても良い
Ω下限増加速度はそれ以上
Θ上下限一致ちょうど同じオーダー
o真の下限より遅く増加
ω真の上限より速く増加

実際の応用例

アルゴリズムの計算量

ソートアルゴリズムの比較:

  • バブルソート:\( O(n^2) \)
  • クイックソート(平均):\( O(n \log n) \)
  • マージソート:\( O(n \log n) \)

関数の極限評価

例えば、

$$ \lim_{n \to \infty} \frac{\log n}{n} = 0 \Rightarrow \log n = o(n) $$

解析学における漸近展開

テイラー展開の余項評価などで、

$$ \sin x = x – \frac{x^3}{6} + o(x^3) $$

のように使われます。

コメントは受け付けていません。