
10
■
2
章 アルゴリズムの数学
まるなら、インスタンスのサイズは、定数分の変化だけで済む。したがって、
64
ビッ
トに格納された整数を使った計算アルゴリズムは、
32
ビットに格納された整数を
使った同様のアルゴリズムに比較して
2
倍の時間がかかるくらいで済む。
アルゴリズム研究者は、実装における個別の符号化を使った場合のコストを正確
に細かく計算できないことを認めている。したがって、定数分を掛けた性能コスト
の違いはいずれも漸近的に等しいとする。言い換えると、問題サイズが増大してい
くならあまり問題にならないと断言するのだ。例えば、
64
ビット整数は、
32
ビッ
ト整数より余計に時間がかかると予期できるが、その違いを無視して、百万個の
32
ビット整数のための優れたアルゴリズムは、百万個の
64
ビット整数のためにもよい
とする。これは、実世界の状況では受け入れがたい定義ではある(予想していたよ
り
1,000
倍高価な請求額を見て、誰が満足するものか)が、アルゴリズムを比較す
る普遍的な手段としての役目を果たすことができる。
本書のすべてのアルゴリズムにおいて、定数分は事実上すべてのプラットフォー
ムで小さいものとする。しかし、プロダクションコードでのアルゴリズムの実装で
は、定数がもたらす詳細な相違に注意を払わなければならない。この漸近的アプ
ローチは、小さな問題インスタンスでの性能に基づいて大規模問題インスタンスの
性能を予測できるので有用だ。それによって特定アルゴリズムで扱える最大問題イ
ンスタンスを決定できる(