近似アルゴリズム
近似度
入力

に対する近似アルゴリズム

のコストを

、
また(計算時間を無視すれば求めることのできる)厳密解のコストを

とする。
任意の

に対して、ある定数

が存在して、
が成り立つとき、

の近似度は

であるという。
ここで、コストは計算量を表すのではない。(それだと「近似度」というネーミングが不適切だし)。
例えばビン詰問題においては、ビンの本数をコストとする。
代表的な問題
ビン詰問題 (Bin-Packing Problem)
入力が

個の数(アイテムと呼ばれる)

で与えられ、
ビンの容量を1.0とする。できるだけ少ないビンを使って、全てのアイテムを詰め込むには?
- 初適合アルゴリズムの近似度に関する定理
- 初適合アルゴリズムとは、各アイテムについて、途中までしか詰まってない全てのビンを順に見ていって、
- 最初に適合した(そのアイテムを詰められる容量が空いている)ビンに詰める方法である。
- 初適合アルゴリズムの近似度は7/4(=1.75)以下である。(実は、近似度=1.7の証明があるらしい。)
集合被覆問題(Set Cover Problem)
イメージとしては、
複数種類の部品を全て調達するために、最低何社の部品メーカーと契約すればよいか?という問題である。
正確に書くと、入力は集合

と

個の

の部分集合

で、

となる最小個数の

を求めよ、という問題である。
集合被覆問題に対しては、まだカバーできていない

の要素を一番多くカバーする

から
順に選んでいくという典型的な貪欲アルゴリズムが非常に有効であり、
これよりも本質的に良いアルゴリズムは知られていない。
- 定理
- 上述の貪欲アルゴリズムの近似度は
以下である。
分割問題
整数の集合が与えられたとき、その要素の和が等しくなるように集合を2つに分割せよ、という問題。
形式的に書くと、整数の集合

が与えられたとき、
その部分集合

に対してその中の整数の和を

、
つまり、

とおき、
であるような

を求めよという問題である。解がない場合も当然起こりうる。
- 分割問題の多項式時間アルゴリズムに関する存在定理
- 分割問題に対しては、近似度が1にいくらでも近くなる多項式時間アルゴリズムが存在する。
ちなみに、近似度を1にいくらでも近づけられる近似アルゴリズムは、
PTAS(多項式時間近似図式、 Polynominal-Time Approximation Scheme)と呼ばれる。
近似アルゴリズムの考え方の基本は、
分割の仕方の組み合わせ自体の場合の数は非常に多いのであるが、
その多くの組み合わせについて、要素の和は同じ値を取るので1つにまとめてしまえる、
というところにある。
最終更新:2012年02月07日 11:47