計算量詳細(Big-O・Ω・Θ)とは?データが増えたとき処理時間がどれくらい増えるかの目安

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

計算量とは(全体像)

計算量は、「入力データが増えると、処理時間がどんなふうに増えるか」を表す尺度。実際の秒数ではなく、増え方の形で評価するのがポイントだ。

なぜ秒数で測らないかというと、パソコンの速さや言語で実際の時間は変わってしまうから。「データが2倍になったら時間も2倍か、4倍か」という増え方なら、機械によらず比べられる。

評価には3つの記法がある。


詳しく:オーダーの順番と漸近評価だけ覚えれば戦える

ここが記事の心臓部。まずはオーダー(速さのクラス)の順番

オーダーの順番(左ほど速い)

オーダー速さ
O(1)一番速い配列の番号アクセス
O(log n)とても速い2分探索
O(n)ふつう線形探索
O(n log n)速いソートマージ・クイック
O(n²)遅いバブルソート
O(2^n)とても遅い全部の組合せを試す

この順番は最頻出。「O(1)<O(log n)<O(n)<O(n log n)<O(n²)<O(2^n)」を丸ごと覚える。右にいくほど、データが増えたときの遅くなり方が激しい。

次に、計算量の大事な性質(漸近評価)

計算量の性質

性質内容
定数倍は無視3nも100nも同じO(n)
低い項は無視n²+nは、いちばん大きいn²だけ見てO(n²)

計算量は「データがうんと多くなったときの増え方」を見るので、定数倍(3倍・100倍)や小さい項は無視する。だから3nも100nも同じO(n)。「O(2n)とO(n)は別もの」と思うのは誤りだ。

わかりやすく言い換えると

要するに、計算量は「データが増えたときの、時間の増え方のクセ」だ。

O(n) … データが10倍になると、時間も約10倍

O(n²) … データが10倍になると、時間は約100倍(一気に遅くなる)

O(log n) … データが10倍になっても、時間はほんの少ししか増えない(とても速い)

つまり、実際の秒数ではなく「増え方の形」で比べるから、機械が違っても公平に速さを比較できる、というわけだね。


試験のツボ

🔴 一番出る:オーダーの順番

①O(1)<O(log n)<O(n)<O(n log n)<O(n²)<O(2^n)

②右にいくほどデータ増加で激しく遅くなる

🔴 次に出る:3記法の意味

①Big-O=上限(最悪の目安)

②Ω=下限(最良)、Θ=上下一致のぴったりの目安

🟡 押さえると安定:漸近評価の性質

①定数倍は無視(3nも100nもO(n))

②低い項は無視(n²+nはO(n²))


よくある間違い

「O(2n)とO(n)は別のクラスである」→ ✗  定数倍は無視するので、O(2n)もO(n)も同じクラス。

「計算量は実際の実行秒数そのものを表す」→ ✗  秒数ではなく「データが増えたときの増え方」を表す(漸近評価)。

「Big-Oは最良の場合(下限)を表す」→ ✗  Big-Oは上限(最悪の目安)。下限はΩ。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(オーダーの順番)

📝 オリジナル問題 1 オーダーの順番

計算量のオーダーの大小に関する次の記述のうち、正しいものはどれか。

  1. O(n²)はO(log n)より速く、データが増えても遅くなりにくいオーダーである
  2. O(log n)はO(n)より速く、O(n²)はO(n log n)より遅い
  3. すべてのオーダーは同じ速さで、データが増えても遅くなり方は変わらない
  4. O(2^n)はO(1)より速く、最も効率の良いオーダーであるとされている
オーエスペン
オーエスペン 解答・解説

解答は 2 だよ。

オーダーはO(1)<O(log n)<O(n)<O(n log n)<O(n²)<O(2^n)の順で、右にいくほど遅くなるんだ。この順番を丸ごと覚えてね。

選択肢1はO(n²)を「速い」とする誤り。選択肢3は「同じ速さ」が誤り。選択肢4はO(2^n)を「最も速い」とする誤り(最も遅い側)だよ。

選択肢判定理由
1O(n²)はO(log n)より遅い
2log nはnより速く、n²はn log nより遅い
3オーダーで遅くなり方が違う
4O(2^n)は最も遅い側

オリジナル問題2(3記法)

📝 オリジナル問題 2 3記法の意味

計算量の記法に関する次の記述のうち、正しいものはどれか。

  1. Big-Oは下限(最良)、Ωは上限(最悪)を表し、ΘはBig-Oと同じ意味である
  2. Big-OもΩもΘもまったく同じ意味で、どれを使っても違いはないとされる
  3. Big-Oは実際の秒数を、Ωは使うメモリの量を直接表す記法のことである
  4. Big-Oは上限(最悪)、Ωは下限(最良)、Θは上下が一致するぴったりの目安だ
オーエスペン
オーエスペン 解答・解説

解答は 4 だよ。

Big-Oは上限(最悪)、Ωは下限(最良)、Θは上下が一致するぴったりの目安なんだ。ふだんいちばん使うのはBig-Oだよ。

選択肢1はBig-OとΩが逆。選択肢2は「同じ意味」が誤り。選択肢3は「秒数・メモリを直接表す」が誤りだよ。

選択肢判定理由
1Big-Oは上限・Ωは下限(逆)
23記法は意味が異なる
3秒数そのものではない
4Big-O上限・Ω下限・Θぴったり

オリジナル問題3(漸近評価)

📝 オリジナル問題 3 定数倍の無視

計算量の漸近評価に関する次の記述のうち、正しいものはどれか。

  1. 定数倍は無視するため、3nも100nも同じO(n)のクラスに分類される
  2. 定数倍は重要なので、3nはO(3n)、100nはO(100n)と区別して書く
  3. 低い項のほうを重視するため、n²+nはO(n)に分類されるものである
  4. 計算量はデータの個数とは無関係に、つねに一定の値になるものである
オーエスペン
オーエスペン 解答・解説

解答は 1 だよ。

計算量は定数倍を無視するから、3nも100nも同じO(n)なんだ。データがうんと多いときの増え方を見るので、何倍かは気にしないんだよ。

選択肢2は「定数倍を区別」が誤り。選択肢3は「低い項を重視」が誤り(大きいn²を見る)。選択肢4は「個数と無関係」が誤りだよ。

選択肢判定理由
1定数倍は無視で同じO(n)
2定数倍は区別しない
3大きいn²だけ見てO(n²)
4個数で増え方が変わる

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る