[計算量をざっくり理解] Big O 記法

計算複雑性理論 計算複雑性理論(けいさんふくざつせいりろん、computational complexity theory)とは、計算機科学における計算理論の一分野であり、アルゴリズムのスケーラビリティや、特定の計算問題の解法の複雑性(計算問題の困難さ)などを数学...

ランダウの記号

ランダウの記号(ランダウのきごう、: Landau symbol)は、関数極限における値の変化度合いに、おおよその評価を与えるための記法である。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

“Big O notation” とも呼ばれます。

入力サイズの変化による計算量の変化を用いて、アルゴリズムを分類するために使われます。

無限大での関数のふるまいを以下の二つの考え方に従いざっくりと考えます。

1.影響力の一番強い項だけを考える。
2.係数は無視する。

例えば,\(n^2+2n\)であれば、ルール1により\(n^2\)となり\(O(n^2)\)と書かれ、「\(n^2\)のオーダーである」と言われます。

また、\(2n \log n\) は、ルール2により\(n \log n \) となり\(O(n \log n) \)と書かれ、「\(n \log n\)のオーダーである」と言われます。

定義

厳密には以下のように定義されます。

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

下の図がざっくりと理解しやすいです。

f(x) ∈ O(g(x)) as there exists c > 0 (e.g., c = 1) and x0 (e.g., x0 = 5) such that f(x) ≤ cg(x) whenever x ≥ x0.

「\( f(x) \) は漸近的に \( g(x) \) によって上からおさえられる」ことを意味します。

また、このことは、「上界 (upper bound) 」という言葉を用いることで、「 関数\( g(x) \)が関数\( f(x) \)の上界である 」と表現されます。

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