アルゴリズム

アルゴリズムは、問題を解くための手順を順序立てて定めた「解き方のレシピ」です。

アルゴリズム のアイキャッチ図解
まずは、こう考えるとつかみやすいです。

アルゴリズムは、料理のレシピです。同じ食材でも手順が違えば出来上がりが変わるように、同じ問題でも解き方の手順で結果や速さが変わります。

ひとことで言うと

アルゴリズムは、ある問題を解くための手順を、明確に順序立てて定めたものです。

「Aをする、次にBをする、Cの条件なら繰り返す」のように、誰が実行しても同じ結果になるよう具体的に定義された解き方のことです。 コンピューターはアルゴリズムを命令として受け取り、その通りに処理を進めます。

たとえ話でもう少し詳しく

アルゴリズムは、料理のレシピに近いです。

  • 「玉ねぎを炒める→肉を加える→調味料を入れる→10分煮る」という手順がある
  • 手順が正しければ、料理が得意でなくても同じ料理が作れる
  • 手順を変えると、味が変わったり時間がかかったりする

コンピューターへの指示も同じです。 「リストを先頭から順に調べて一致するものを探す」も「あらかじめ並べ替えておき半分ずつ絞り込む」も、どちらも「探す」問題を解くアルゴリズムですが、速さがまったく違います。 良いアルゴリズムを選ぶことが、システムの性能に直結します。

よく出る場面・使いどころ

  • データを素早く探す(検索アルゴリズム)
  • データを決まった順に並べる(ソートアルゴリズム)
  • 最短経路を計算する(カーナビや地図アプリ)
  • 数値の規則性を見つけて予測する(機械学習の基礎)

似た言葉との違い

  • プログラム
    • アルゴリズムをコンピューターが実行できる言語で書き表したもの
    • アルゴリズムは「手順の考え方」、プログラムはその「実装」
  • データベース
    • データを保存・管理する仕組み
    • データベースへの効率的な検索・更新にもアルゴリズムが使われている
  • オーバーヘッド
    • 処理に伴う余分なコスト
    • アルゴリズムの選び方でオーバーヘッドの大きさが変わる

実務で気にするポイント

  • 同じ結果が出ても、遅いアルゴリズムは大量データで破綻する
  • アルゴリズムの効率は「計算量(O記法)」で表されることが多い
  • 車輪の再発明を避けるため、標準ライブラリに含まれるアルゴリズムをまず使う
  • パフォーマンス問題が起きたとき、アルゴリズムの選択が原因であることが多い

注意: アルゴリズムはプログラム言語に依存しません。どの言語で書いても「手順の考え方」は同じです。「どうやって解くか」を言葉で説明できるレベルで理解しておくと、実装のミスを防ぎやすくなります。