第二章 集合カバー 作: 牧山幸史 これまでのあらすじ • • • • 現実で遭遇する最適化問題の多くは「NP困難」 厳密解を求めるのに、膨大な計算時間が必要 近似解ならば、求めることができるかも。 個々の問題に対する近似アルゴリズムを調査する (第Ⅰ部): 第1章: 個数版点カバー問題 (近似率2) 第2章: 集合カバー問題 第二章 集合カバー(目次) • 集合カバー問題(グリーディアルゴリズム) • 重み付き点カバー問題(層別化) • 最短拡大ストリング問題 集合カバー問題 • n 個の要素からなる台集合 U, U の部分集合の族 S={S1,…,Sℓ} およびコスト関数 c:S→Q+ が入力 として与えられたとき、 U の要素をすべてカバーす るコスト最小の S の部分族を求めよ。 集合カバー問題 コスト 5 U = { A, B, C, D, E, F } コスト S1 S2 S3 S4 2 3 4 1 集合カバー問題 コスト 4 U = { A, B, C, D, E, F } コスト S1 S2 S3 S4 2 3 4 1 グリーディアルゴリズム • グリーディアルゴリズム(貪欲アルゴリズム,欲張り アルゴリズムともいう)とは、現在の状況を改善させ る現時点で最善の方策を選ぶという方針で設計さ れたアルゴリズムの総称である。 • ここでは、最もコスト効果の良い集合を選び、その 集合でカバーされる要素を取り除いた集合で、再び 最もコスト効果の良い集合を選ぶ、というように繰り 返していき、すべての要素がカバーされたら終了す るというアルゴリズムを考える。 集合カバー問題に対する グリーディアルゴリズム • アルゴリズム2.2(グリーディ集合カバーアルゴリズ ム)p16 1. C ← 空集合; 2. While C ≠ U do: 現在の反復でもっともコスト効果 c(S)/|S-C| の 小さい集合を1つ見つけ S とする; S を集合カバーに選ぶ; (αを S のコスト効果、すなわちα= c(S)/|S-C| とする; 各 e ∈ S-C に対して price(e)=αとする;) C ← C ∪S; 3. 集合カバーに選ばれた集合を出力する; 集合カバー問題に対する グリーディアルゴリズム U={ A, B, C, D, E, F } コスト コスト 効果 S1 S2 S3 S4 2 3 4 1 0.5 0.75 1.0 0.5 集合カバー問題に対する グリーディアルゴリズム U={ A, B, C, D, E, F } コスト コスト 効果 S1 S2 S3 S4 2 3 1.5 4 2.0 1 ∞ 集合カバー問題に対する グリーディアルゴリズム アルゴリズム2.2は |U|=n の集合カバー問題に 対する Hn 近似アルゴリズムである。 ただし、Hn = 1 + 1/2 + ・・・ + 1/n. • 証明: 1. 出力された集合カバー全体のコストは ∑k=1nprice(ek) に等しい。 2. ∑k=1nprice(ek) ≦ (1 + 1/2 + ・・・ + 1/n)OPT という順に説明する。 • price(e) って? • アルゴリズム2.2(グリーディ集合カバーアルゴリズ ム)p16 1. C ← 空集合; 2. While C ≠ U do: 現在の反復でもっともコスト効果 c(S)/|S-C| の 小さい集合を1つ見つけ S とする; S を集合カバーに選ぶ; (αを S のコスト効果、すなわちα= c(S)/|S-C| とする; 各 e ∈ S-C に対して price(e)=αとする;) C ← C ∪S; 3. 集合カバーに選ばれた集合を出力する; price(e) って? • price(e) は グリーディアルゴリズムの近似保証 • ∑k=1nprice(ek) ≦ (1 + 1/2 + ・・・ + 1/n)OPT • 証明: – U の要素をアルゴリズムでカバーされた順に並 べ番号を付ける。ただし、同時にカバーされた要 素は勝手に並べてよい。この番号付けを e1, …, en とする。このとき、各k∈{1,…,n} に対して price(ek) ≦ OPT/(n-k+1) が成り立つ。したがって、成り立つ。 集合カバー問題に対する グリーディアルゴリズム アルゴリズム2.2は |U|=n の集合カバー問題に 対する Hn 近似アルゴリズムである。 ただし、Hn = 1 + 1/2 + ・・・ + 1/n. • 証明: 1. 出力された集合カバー全体のコストは ∑k=1nprice(ek) に等しい。 2. ∑k=1nprice(ek) ≦ (1 + 1/2 + ・・・ + 1/n)OPT という順に説明する。 • 集合カバー問題の近似保証の改善 • 集合カバー問題に対して、アルゴリズム2.2が Hn 近似アルゴリズムであることを示した。 1. アルゴリズム2.2の近似保証は、よりよい解析を 用いれば改善できるか? 答え: できない ⇒ タイトな例が存在する 2. 集合カバー問題に対して、よりよい近似保証を 持つアルゴリズムは存在するか? タイトな例 U={ A1, A2, … , An } コスト アルゴリズム2.2で得られる解(コスト Hn ) S1 S2 … Sn Sn+1 … 1/n 1/(n-1) … 1 1+ε 最適解(コスト 1+ε) εはいくらでも小さい値にできる 集合カバー問題の近似保証の改善 • 集合カバー問題に対して、アルゴリズム2.2が Hn 近似アルゴリズムであることを示した。 1. アルゴリズム2.2の近似保証は、よりよい解析を 用いれば改善できるか? 答え: できない ⇒ タイトな例が存在する 2. 集合カバー問題に対して、よりよい近似保証を 持つアルゴリズムは存在するか? 答え: 存在しない ⇒ 第29章 第二章 集合カバー(目次) • 集合カバー問題(グリーディアルゴリズム) • 重み付き点カバー問題(層別化) • 最短拡大ストリング問題
© Copyright 2025 ExpyDoc