計算量(ビッグオー記法)とは?オーダーの順と、具体例

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

30秒で結論

計算量とは(全体像)

計算量とは、アルゴリズムが、どれくらいの「時間」や「メモリ」を使うかを、データの数(n)を使って表した指標のことだ。これをビッグオー記法(O記法)で、O(n)やO(n²)のように書く。

なぜ大事かというと、データが多くなると、アルゴリズムのやり方(オーダー)の違いが、大きく効いてくるから。速いやり方を選べば、同じ仕事でも、ずっと短い時間で終わる。

代表的なオーダーを、速い順に並べると、こうなる。

O(1) < O(log n) < O(n) < O(n log n) < O(n²)

右にいくほど、データが増えたときに遅くなる。


詳しく:オーダーの順と、具体例

ここが心臓部。代表的なオーダーを表で押さえよう。

主なオーダー(速い順)

オーダー速さ
O(1)いちばん速い(一定)配列の番号アクセス
O(log n)速い2分探索
O(n)ふつう線形探索
O(n log n)やや遅いクイック/マージソート
O(n²)遅いバブルソート

このように、O(1)がいちばん速く、右にいくほど遅くなる。たとえば、2分探索はO(log n)で速く、バブルソートはO(n²)で遅い。

ここで一番のポイント。データが多いほど、この差が大きく効いてくる。少ないデータなら、どのやり方でも大差ないが、データが何百万件にもなると、O(n²)のやり方は、現実的でないほど時間がかかる。「データが多くても、やり方による差は小さい」と思い込むと誤りになる。なお、O記法では、定数倍(2倍など)は無視して、おおまかな増え方で比べる。

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

身近なたとえで整理しよう。

計算量は、「データが増えたとき、どれくらい時間が増えるかの目安」のイメージ。O(n²)なら、データが10倍で、時間は約100倍だ。

オーダーの順は、「O(1)がいちばん速く、O(n²)は遅い」こと。要するに、右にいくほど、データが増えたときに苦しくなる。つまり、速いやり方を選ぶほど有利だ。

「データが多いと差が効く」というのは、少しのデータなら大差ないが、大量になると、速いやり方が圧倒的に有利だということだ。


試験のツボ

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

①速い順は、O(1)<O(log n)<O(n)<O(n log n)<O(n²)

②右にいくほど、データが増えたときに遅くなる

🔴 次に出る:具体例

①2分探索=O(log n)、線形探索=O(n)

②ソート(クイック/マージ)=O(n log n)、バブルソート=O(n²)

🟡 押さえると安定:データが多いと差が効く

①データが多いほど、オーダーの差が大きく効く

②定数倍(2倍など)は無視して、おおまかに比べる


よくある間違い

「データが多くても、アルゴリズムのやり方による差は小さい」→ ✗  データが多いほど、オーダーの差が大きく効く。O(n²)は現実的でないほど遅くなることも。

「O(1)よりO(n²)のほうが速い」→ ✗  O(1)がいちばん速く、O(n²)は遅い。右にいくほど遅くなる。

「O(2n)とO(n)は、まったく別のオーダーだ」→ ✗  定数倍(2倍など)は無視するので、O(2n)もO(n)も同じオーダー。


試験での出題パターン

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

オリジナル問題1(計算量の正体)

📝 オリジナル問題 1 計算量の正体

計算量(ビッグオー記法)に関する次の記述のうち、最も適切なものはどれか。

  1. 社員の出退勤を記録して、毎月の給与を計算するためのしくみである
  2. アルゴリズムの時間やメモリを、データの数nで表した指標である
  3. 取引先へ毎月の請求書を郵送する、決まった事務作業のことを指す
  4. 完成したシステムを宣伝して、より多く売るための広告活動である
データパン
データパン 解答・解説

解答は 2 だぱん。

計算量は、アルゴリズムの時間やメモリを、データの数nで表した指標なんだぱん。ビッグオー記法で、O(n)のように書くんだぱん。

選択肢1は給与計算、選択肢3は請求書の事務、選択肢4は広告で、どれも違うぱん。

選択肢判定理由
1給与計算のしくみではない
2時間やメモリをnで表す指標で正しい
3請求書の事務の話
4広告活動ではない

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

📝 オリジナル問題 2 オーダーの速さの順

オーダーの速さの順として、最も適切なものはどれか。

  1. O(n²)がいちばん速く、O(1)がいちばん遅いとされているものだ
  2. 社員の給与の計算しだいで、速さの順が決まるとされているものだ
  3. 取引先への請求書の枚数しだいで、速さの順が決まるとされている
  4. O(1)がいちばん速く、O(n²)は遅い(右にいくほど遅くなる)
データパン
データパン 解答・解説

解答は 4 だぱん。

速さの順は、O(1)がいちばん速く、O(n²)は遅い(右にいくほど遅くなる)んだぱん。O(1)<O(log n)<O(n)<O(n²)の順だぱん。

選択肢1は順が逆、選択肢2は給与、選択肢3は請求書で誤りだぱん。

選択肢判定理由
1O(1)が速く、順が逆
2給与計算で決まるのではない
3請求書の枚数で決まるのではない
4O(1)が速くO(n²)は遅いで正しい

オリジナル問題3(データが多いと差が効く)

📝 オリジナル問題 3 データ量とオーダーの差

データの量とオーダーの関係に関する次の記述のうち、最も適切なものはどれか。

  1. 社員の給与を計算するときだけ、オーダーの差が出るとされている
  2. 取引先へ請求書を郵送するときだけ、オーダーの差が出るとされる
  3. データが多いほど、オーダーの差が大きく効いてくるものである
  4. データが多くても、オーダーによる差はほとんど出ないとされる
データパン
データパン 解答・解説

解答は 3 だぱん。

データが多いほど、オーダーの差が大きく効いてくるんだぱん。データが大量だと、O(n²)は現実的でないほど遅くなることもあるんだぱん。

選択肢1の給与、選択肢2の請求書、選択肢4の「差はほとんど出ない」は、いずれも違うぱん。

選択肢判定理由
1給与計算のときだけではない
2請求書のときだけではない
3データが多いほど差が効くで正しい
4データが多いと差は大きくなる

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

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

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

App Storeで見る