用語集 最終更新 2026.05.28

アルゴリズム

アルゴリズム (algorithm) は、ある問題を解くための、明確で有限な手順の集まり です。 語源は 9 世紀の数学者アル・フワーリズミーの名前で、計算の手順 を意味するようになりました。

まず押さえたいポイント

  • 入力 → 手順 → 出力 が明確に定義されている
  • 有限のステップで必ず終わる (停止性)
  • 同じ入力には同じ出力を返す (決定的なものが基本)
  • レシピや料理の手順書がよく使われる比喩

アルゴリズムの良し悪しを測る指標

同じ問題を解くアルゴリズムでも、効率に大きな差が出ます。これを測るのが 計算量 です。

  • 時間計算量 — 入力サイズが増えたときに、処理時間がどれだけ増えるか
  • 空間計算量 — どれだけメモリを使うか
  • O 記法 (ビッグオー)O(n) O(log n) O(n^2) のように、おおまかな増え方を表す

例えば、ソートでも バブルソート (O(n^2)) より クイックソート / マージソート (O(n log n)) のほうが、大きなデータでは圧倒的に速くなります。

代表的なアルゴリズムの分類

  • 探索 — 線形探索 / 二分探索 / 幅優先探索 (BFS) / 深さ優先探索 (DFS)
  • 整列 (ソート) — バブルソート / クイックソート / マージソート / ヒープソート
  • グラフ — ダイクストラ法 / A* / クラスカル法
  • 動的計画法 (DP) — 部分問題の答えを再利用して効率化する
  • 分割統治 — 問題を小さく分けて解いて統合する

ヒューリスティックとの違い

アルゴリズム (厳密解法) と ヒューリスティック は、しばしば対比されます。

  • アルゴリズム — 正しい答えを必ず出すが、時間がかかることがある
  • ヒューリスティック — 最適とは限らないが、速く実用的な答えを出す

ただし両者は排他的ではありません。A* 探索のように アルゴリズムの枠組みの中でヒューリスティック関数を使う ハイブリッドも一般的です。

よくある誤解

アルゴリズム = プログラミング言語のコード ではありません。アルゴリズムは 考え方・手順そのもの であり、特定の言語に依存しません。同じ二分探索を Python でも Java でも書けます。 また、近年は SNS のアルゴリズム のように おすすめを決める仕組み の意味で使われることも増えましたが、これは 機械学習 を含む広義の用法です。古典的な意味の 明確な手順 とは少しニュアンスが違う点に注意してください。

詳しくは ヒューリスティックとは?経験則で近似解を得る考え方とアルゴリズムとの違い で、厳密解法と近似解法の使い分けを整理しています。