アルゴリズムは、問題を解くための明確な手順です。同じ答えにたどり着く方法でも、必要な作業量は変わります。カード探しの例から、プログラムやAIとの違いを考えます。
定義の参考:NIST Dictionary of Algorithms and Data Structures: algorithm。以下の身近な例は説明用に作成したものです。
「うまく探す」を、実行できる指示にする
番号の書かれたカードから「37」を探す場面を考えます。「頑張って探す」では、次に何をするかが決まりません。「左から1枚ずつ見て、37なら終了。最後までなければ『なし』と答える」なら、別の人も同じ規則に従えます。
このように、入力を受け取り、判断や処理を進め、結果を返す手順がアルゴリズムです。どの入力を扱えるのか、見つからなかった場合はどうするのかも、手順の一部です。コンピュータ用のコードで書かれている必要はなく、文章やフローチャートでも表せます。
同じ問題にも、別の解き方がある
カードが番号順に並んでいるなら、中央のカードと37を比べ、37があり得る側だけを残せます。これを繰り返すのが二分探索の基本です。100枚から探すなら、順番に調べる方法は最悪100枚を確認しますが、二分探索では候補を半分ずつ減らせます。
ただし、ばらばらのカードに同じ方法を使うと、答えのある側を捨てるおそれがあります。「速い手順」というだけでは不十分で、並べ替え済みという前提や、途中のカードをすぐ見られることが必要です。並べ替えの手間も含めるかで、全体として得かどうかは変わります。
プログラムは手順を動かすための具体的な実装
アルゴリズムが考え方なら、プログラムはそれを特定の言語で実行できる形にしたものです。同じ探索方法でも、画面の作り方、入力ミスへの対応、データの置き方は異なります。逆に、一つのプログラムが検索・並べ替え・保存など複数のアルゴリズムを使うこともあります。
AIも手順と無関係な魔法ではありません。機械学習では、データからモデルを調整する学習の手順や、学習したモデルで予測する処理を使います。ただし、「すべてのアルゴリズムがAI」というわけではなく、単純な足し算の手順もアルゴリズムです。
正しさと速さを分けて確かめる
探し物の例なら、①見つけた番号は本当に37か、②存在しないときに正しく終了するか、③カードが増えたら何回調べるかを別々に確認します。速く間違える方法は、問題の解決になりません。空の入力や同じ番号が複数ある場合も、仕様に合わせて扱いを決めます。
処理の増え方を比較する言葉が計算量です。まず小さな入力を手作業で追い、そのあと入力が大きくなったときの作業量を見ると、抽象的な手順を理解しやすくなります。
関連する言葉から理解を広げる
AI・コンピュータの用語8選では、関連する概念を具体例と一緒に比較できます。