近似アルゴリズム

近似アルゴリズム
――集合被覆問題を中心として
慶應義塾大学理工学部数理科学科4年
田村 明久研究室 山崎 康史
今日の内容
 近似アルゴリズムの必要性
 OPTの下界法(頂点被覆問題)
 集合被覆問題
 欲張り法
 層別化法
 ベンチマーク問題に対する結果
 今後の課題
クラスNPとNP最適化問題




判定問題 答えが“yes”か“no”の問題
クラスNP “yes”の検証を多項式時間で出来る判定問題
NPであるどの問題からも多項式時間で変換できる問題
NP困難
NP最適化問題
 実行可能解の中で、目的関数の値を最小(または
最大)にするものを見つける問題
(例)巡回セールスマン問題、ナップザック問題 など
NP困難な問題は多項式時間
で解けないと考えられている
近似解を効率よく求める必要が
ある
近似アルゴリズムの定義
 近似解を効率よく求める: 近似アルゴリズム
 近似アルゴリズムの定義(最小化問題)




最適解の目的関数値(最適値)をOPTで表す
δ:Z+→Q+ 入力のサイズに関する関数(δ≧1)
多項式時間で近似解を出力
得られた任意の近似解sに対して
(sの目的関数値)≦δ(入力のサイズ)・OPT
が成り立つとき、δ-近似アルゴリズムという。
この範囲の近似解を多項式時間で出力
0
OPT
δ・OPT
目的関数値
OPTの下界法
 近似保証を得るには、近似解とOPTを比較
 NP困難だとOPTを得ることも多項式時間では
難しい
近似保証が得られない?
 OPTの下界法
 よい下界を用いることで、近似保証を得る
この範囲の近似解を出力すれば、
δ・OPT以下の近似解になっている
0
下界
δ・下界
OPTはどこにあるか分からない
目的関数値
δ・OPT
頂点被覆問題(1)
問題の定義
 頂点被覆
 (個数版)頂点被覆問題
 頂点数が最小になるような頂点被覆を求めよ。
頂点被覆問題(2)
マッチングとの関係
 マッチングと極大マッチング
 頂点被覆と極大マッチングの関係
 極大マッチングの辺の、少なくとも一方の端点は、
頂点被覆に含まれる |極大マッチング|≦|頂点被覆|
頂点被覆問題(3)
アルゴリズム
 アルゴリズム1
 端点を共有しないように、辺を取れるだけ取ってく
ることで、極大マッチングを得る
 極大マッチングの両端点の集合を答えとして出力
する。
頂点被覆問題(4)
近似保証
 アルゴリズム1は2-近似アルゴリズムである
(証明)
|極大マッチング|≦|頂点被覆|だから、
|極大マッチング|≦OPT
(1)
アルゴリズムの動きから、
|得られた近似解|=2・|極大マッチング|
≦2・OPT
(∵(1))
よって、2-近似アルゴリズム
集合被覆問題
 集合被覆
 台集合U、集合族S(⊆2U)
 Uの全ての要素を覆うような
Sの部分族を集合被覆という。
①
②
④
⑤
⑥
⑦
③
⑧
 集合被覆問題
 台集合U、集合族S、コスト関数c:S→Q+
 コストの和が最小になるような集合被覆を求めよ。
欲張り法(1)
アルゴリズム
 効果対費用
 すでにカバーされている集合をCとする
 集合S∈Sに対して、c(S)/|S-C|を集合Sの効果
対費用という
 効果対費用は、まだカバーしていない要素を集合
Sでカバーするのにかかる平均のコストといえる
 アルゴリズム2
 効果対費用の最も小さい集合を答えに加える
 すべてカバーされたら終了。そうでなかったら繰り
返す。
欲張り法(2)
①
②
④
⑤
⑥
⑦
①
②
④
⑤
⑥
⑦
③
動作例
■1÷2=0.5
■1÷1=1
■空集合
■1÷2=0.5
■1÷1=1
■空集合
⑧
③
■1÷3=1/3
■すでに選ばれた
選ばれる
■1÷2=0.5
■すでに選ばれた
選ばれる
■1÷2=0.5
■1÷1=1
■空集合
■1÷3=1/3
■すでに選ばれた
⑧
■1÷3=1/3
■1÷1=1
■空集合
選ばれる
終了
欲張り法(3)
近似保証について
 アルゴリズム2はHn-近似アルゴリズムである。
ただし、 Hn =1+1/2+・・・+1/n
(証明のアイディア)
要素をカバーされた順にe1,・・・,enとする。
カバーされたときの効果対費用をprice(ek)と
すると、price(ek)≦OPT/(n-k+1)
コストの総和はprice(ek)の総和に等しく、
(1+1/2+・・・+1/n)・OPTになる。
層別化法(1)
準備
 頻度
 要素が集合族Sに現れる回数
 個数定倍コスト
 t(S)=k|S|で表される関数t:S→Q+
 個数定倍最大コスト
 c(S)≧t(S)を満たす最大の個数定倍コスト
 残余コスト
 コスト関数から個数定倍最大コストを引いた残り
層別化法(2)
アルゴリズム
 アルゴリズム3
 集合族から空集合を取り除く。
集合族が空なら答えを出力して終了。
 残余コストを計算して、残余コストが0の集合を答
えに加え、集合族から取り除く。
 コスト関数を残余コストで更新。
 集合族の各集合から、答えでカバーされた要素を
取り除き、最初に戻る。
層別化法(3)
アルゴリズムのイメージ
空集合
残余コスト
0の集合
答えとして
出力
残余コスト
0の集合
残余コスト
0の集合
空集合
・
・
・
・
・
・
空集合
空集合
層別化法(4)
①
④
②
③
動作例
個数定倍最大コスト:|S|/3
個数定倍最大コスト:|S|/6
個数定倍最大コスト:なし
■コスト:1、残余コスト:1/3
■コスト:1/3、残余コスト:1/6
■コスト:1/6、空集合
⑤
■コスト:1、残余コスト:1/3
■コスト:1/3、残余コスト:1/6
■コスト:1/6、空集合
⑥
⑦
⑧
①
②
③
④
⑥
選ばれる
■コスト:1、残余コスト:1/3
■コスト:1/3、残余コスト:0
■すでに選ばれた
選ばれる
■コスト:1、残余コスト:1/3
■コスト:1/3、空集合
⑤
⑦
■コスト:1、残余コスト:0
■すでに選ばれた
⑧
■コスト:1、残余コスト:0
■すでに選ばれた
選ばれる
■コスト:1、残余コスト:0
■すでに選ばれた
終了
選ばれる
層別化法(5)
近似保証について
 アルゴリズム3はf-近似アルゴリズムである。
ただし、fは最大頻度。
(証明のアイディア)
Tを得られた近似解、T*を最適解とする。
各i層において、ti(Si)≦f・ti(Si∩T*)
c(T)≦∑ti(Si)
≦f・∑ti(Si∩T*)
≦f・OPT
よって、f-近似アルゴリズム
ベンチマーク問題を用いた検証
CPU: PentiumM 1GHz
メモリ: 1GB
Cコンパイラ: gcc-4.1.1-r1
台集合のサイズ
17800
58600
126000
集合族のサイズ
450
945
1534
最適値
420
900
1475
欲
張
り
法
コスト
430
915
1496
精度
1.024
1.017
1.014
時間
8 sec
91 sec
427 sec
層
別
化
法
コスト
438
930
1515
精度
1.043
1.033
1.027
時間
9 sec
91 sec
424 sec
※各数字は平均に近い値
※精度は(コスト)÷(最適値)
まとめ・今後の課題
 集合被覆問題に対して、Hn-近似アルゴリズ
ムである欲張り法と、f-近似アルゴリズムであ
る層別化法が得られた。
 何を下界として近似保証を得たのかが曖昧。
 線型計画問題(LP)の双対性の理論から眺め
ていくことで、欲張り法・層別化法がそれぞれ
何を下界としているのかをハッキリさせていく
ことが、今後の課題。
参考文献
 「近似アルゴリズム」 V.V.ヴァジラーニ 著
 ベンチマーク問題(Web)
http://www.nlsde.buaa.edu.cn/~kexu/benchm
arks/set-benchmarks.htm