PR

 アルゴリズムは,与えられた問題を解決するための手順のことを指します。手順に含まれる操作の一つひとつはコンピュータによって実行可能で,手順を最後まで実行すると必ず問題が解けるというものでなければなりません。逆に,最後まで実行しても問題を解けない場合があったり,有限の時間内に問題が解けない可能性がある手順はアルゴリズムとは呼びません。

 プログラムは,アルゴリズムをコンピュータが理解できる形で記述したもの,と考えることができます。その際には,問題に含まれる様々な情報をプログラムの中に表現する必要があります。そのためにアルゴリズムと並んで重要なのが情報を表現するための手法である「データ構造」です。プログラミングのスキルを上げるには,アルゴリズムをデータ構造とともにプログラムに落とし込んだり,アルゴリズムそのものを考え出したりする経験が不可欠です。アルゴリズムとデータ構造を題材にした参考書は世の中にたくさんありますから,これらを勉強した経験がない人は手に取って,じっくりと取り組んでみることをお勧めします。

 ある問題を解くためのアルゴリズムは,複数作れる場合もあります。一方,どのようなアルゴリズムで解決できるかがわかっていない問題もたくさんあります。解決できる場合でも,解けるまでに必要な計算の量はアルゴリズムによって異なります。効率の良い(速い)アルゴリズムならすぐに解ける問題が,効率の悪いアルゴリズムではいつになっても,それこそ10年,20年かかっても終わらない,ということもあり得ます。

 選択肢が複数ある場合にはできる限り高速なアルゴリズムを使うのが原則です。しかし一般に,高速なアルゴリズムは“巧みな”処理を必要とするため,コーディングに手間がかかり,出来上がったコードも読みづらいものになる場合があります。遅くても実用上は問題ないというケースもあるので,実装の手間や保守性を考慮すると単純なアルゴリズムを使うほうが現実的なことがあります。