
38
■
3
章 アルゴリズムの構成要素
3.1
アルゴリズムテンプレートの形式
テンプレートを使って各アルゴリズムを記述することの本当の利点は、異なるア
ルゴリズムを迅速に比較対照し、見かけが異なるアルゴリズム間の共通点を見つけ
られることだ。各アルゴリズムは、次のようなテンプレートに沿った節で提示され
る。アルゴリズムの記述に有益な情報をもたらさない場合はその節を省くこともあ
る。特に説明が必要な箇所には節を新たに追加することもある。
名前(Name)
アルゴリズムを表す名前。この名前を使えば余計な説明が不要で誤解を
防げる。例えば、
逐次探索
(
Sequential Search
)という名前を使えば、ど
の探索アルゴリズムについて話しているかが正確に伝わる。本書では、
アルゴリズム名を太字で示す。
入出力(Input/Output)
アルゴリズムへの入力データと計算された結果の値の形式を記述する。
文脈(Context)
いつアルゴリズムが役に立ち、いつ最
高の性能を発揮するかについての
記述。実装がうまくいくために注意して保守されなければならない問題
/
解の特性についての記述。これらが、特にこのアルゴリズムを選択した
理由になる。
解(Solution)
実際に動くコードと文書によるアルゴリズムの記述。本書のコードは
コードリポジトリにある。
分析(Analysis)
読者にアルゴリズムの振る舞いの理解を促す、性能データなどの情報を
含んだアルゴリズム分析の概要。この分析の説明は、アルゴリズム性能
を「証明」するための