最近「アルゴリズム」という言葉をとても身近に感じるようになりました。おそらく多くの方が、アルゴリズム取引、機械学習アルゴリズム、ビッグデータ解析アルゴリズム、といったキーワードをニュースなどで見聞きしていることでしょう。十数年前、遺伝的アルゴリズムを卒業研究としていた筆者からすれば、ずいぶんと一般的な用語になったものだと思うのです。

 ところが用語こそ身近になりましたが、アルゴリズムは数学に似ていてプログラマにとってすんなり理解できるものではありません。数式が数多く登場し、正面から挑むと挫折してしまうかもしれません。

 そもそもアルゴリズムは、問題を解くための計算手法や処理手順を意味します。世の中には定番と呼ばれるアルゴリズムが数多くあり、それらのアルゴリズムには一長一短があります。どんな問題に対しても最適な万能のアルゴリズムは存在しません。

 プログラマならば、扱う問題に対して適切なアルゴリズムを選択できなければなりません。アルゴリズムの選択を誤ってしまうと、あるアルゴリズムでは1分で済む処理が別のアルゴリズムだと10分もかかってしまうということがあるからです。