
■
37
3
章
アルゴリズムの
構成要素
ソフトウェアを作成するのは問題を解くためだ。しかし、往々にして、プログラ
マは、あまりに問題解決に身を入れすぎて、その問題の解が既に存在するかどうか
について考えない。そして、たとえプログラマが同様の事例で問題が既に解決され
ていることを知っていたとしても、既存のコードが実際にプログラマの直面してい
る問題を解くのにそのまま使えるかどうかは明らかでない。結局、与えられたプロ
グラミング言語で書かれていて、ちょっと手を加えたら抱えている問題に適用でき
るようなコードなんてすぐに見つからないのだ。
アルゴリズムはさまざまに考えることができる。多くのプログラマが本の中で、
あるいはどこかの
Web
サイトでアルゴリズムを見つけて、コードの一部をコピーし
て実行し、テストもして、そこで満足して、次の仕事に移っていく。我々の意見では、
この方法では、アルゴリズムに対する理解が深まることは望めな
い。実際、このア
プローチでは、アルゴリズムのある特定の実装を選ぶだけという間違った道に迷い
込んでしまう。
問題は、仕事に使う正しいアルゴリズムをどのようにして迅速に見つけ、正しい
選択をしたと確信を持てるほど、そのアルゴリズムを理解できているかということ
なのだ。そして、いったんアルゴリズムを選んだとして、効率的な実装にはどうす
るかなのだ。本書の各章は、(整列や探索のような)標準的な問題や(経路探索のよ
うな)関連問題を解く一群のアルゴリズムをグループにまとめている。本章では、
本書でアルゴリ ...