290 likes | 382 Views
第二章 集合カバー(その2). 作: 牧山幸史. これまでのあらすじ. 現実で遭遇する最適化問題の多くは「NP困難」 厳密解を求めるのに、膨大な計算時間が必要 近似解ならば、求めることができるかも。 個々の問題に対する近似アルゴリズムを調査する(第 Ⅰ 部): 第 1 章: 個数版点カバー問題 (近似率 2 ) 第 2 章: 集合カバー問題. 第二章 集合カバー(目次). 集合カバー問題(グリーディアルゴリズム) 重み付き点カバー問題(層別化) 最短拡大ストリング問題. 重み付き点カバー問題.
E N D
第二章 集合カバー(その2) 作: 牧山幸史
これまでのあらすじ • 現実で遭遇する最適化問題の多くは「NP困難」 • 厳密解を求めるのに、膨大な計算時間が必要 • 近似解ならば、求めることができるかも。 • 個々の問題に対する近似アルゴリズムを調査する(第Ⅰ部): 第1章: 個数版点カバー問題 (近似率2) 第2章: 集合カバー問題
第二章 集合カバー(目次) • 集合カバー問題(グリーディアルゴリズム) • 重み付き点カバー問題(層別化) • 最短拡大ストリング問題
重み付き点カバー問題 • ここでは、重み付き点カバー問題に対して、層別化を用いた2近似アルゴリズムを与える。 • 重み付き点カバー問題(p1): • 無向グラフ G=(V,E),各点へのコスト関数 w:V→Q+が入力として与えられて、最小コストの点カバーを求める問題。点カバーとは、 G=(V,E)のどの辺に対しても少なくとも一方の端点を含むような点集合 V’⊆Vのことをいう。
重み付き点カバー問題 2 2 点カバーとは、すべての 辺をカバーする頂点集合 のことである 3 4 4 3 2 2 コスト9の点カバーが 得られた 1 1 2
層別化によるアルゴリズム設計 • アイデア:与えられたグラフの点集合の重み関数を、次数重み付き関数に分割する。 • 次数重み付き関数: • w:V→Q+ を点集合上の重み関数とするとき、各点 v ∈ Vの重み w(v)が、ある定数 cを用いて w(v) = c・deg(v) と表されるとき、 wを次数重み付き関数という。
次数重み付き関数 • 次数重み付き関数は、次のようなよい性質を持つ。 • w:V→Q+ が次数重み付き関数ならば、 w(V) ≦ 2・OPT が成り立つ。 • 証明: • cを w(v) = c・deg(v)を満たす定数とし、Uを Gの最適点カバーとする。 Uはすべての辺をカバーするので、∑v∈U deg(v) ≧ |E| が成り立ち、したがって、 OPT = w(U) ≧ c|E|となる。一方、 ∑v∈V deg(v) = 2|E| であり、 w(V)=2c|E| であるので、証明された。
次数重み付き点カバー問題 2 2 次数重み付き関数ならば すべての点を選んでも、 コストは OPTの高々2倍 4 4 2 2 2 4 1 4 2
層別化アルゴリズム • c = min{w(v)/deg(v)} • t(v) = c・deg(v)(最大次数重み付き関数) • w’(v) = w(v) – t(v)(残余重み付き関数) • i=0, G0=G, w0=w • Di = { v∈Gi| deg(v)=0 } とおく。 • Gi– Di, w0に対してc, t, w’を計算する。 • Wi = { v∈Gi– Di | w’(v)=0} • Gi+1= Gi – (Wi∪Di), wi+1=w’, i=i+1 • Gi の点がすべて次数 0になったら終了。出力は C=W0∪・・・∪Wi-1, そうでなければ2.に戻る。
1.0 0.75 0.5 2.0 1.5 1.0 層別化アルゴリズム 2 2 c = min{w(v)/deg(v)} t(v) = c・deg(v) 3 4 4 3 2 2 1 1 2 0.25
0.5 1.0 1.0 0.5 0.5 0.5 層別化アルゴリズム 2 2 c = min{w(v)/deg(v)} t(v) = c・deg(v) w’(v) = w(v) – t(v) 3 4 4 3 2 2 1 1 2 1.0
0 層別化アルゴリズム 1.5 2 c = min{w(v)/deg(v)} t(v) = c・deg(v) w’(v) = w(v) – t(v) 2.0 4 3.5 2.5 2 1.0 G1 1.5
0.75 0.75 0.33.. 3.5 1.25 1.5 層別化アルゴリズム 1.5 2 c = min{w(v)/deg(v)} t(v) = c・deg(v) w’(v) = w(v) – t(v) 2.0 4 3.5 2.5 2 1.0 G1 c = 0.33.. 1.5
0.66.. 1.0 1.0 0.33.. 0.66.. 0.33.. 層別化アルゴリズム 1.5 2 c = min{w(v)/deg(v)} t(v) = c・deg(v) w’(v) = w(v) – t(v) 2.0 4 3.5 2.5 2 1.0 G1 c = 0.33.. 1.5
0 層別化アルゴリズム 0.833.. 2 c = min{w(v)/deg(v)} t(v) = c・deg(v) w’(v) = w(v) – t(v) 1.0 4 3.166.. 1.833.. G2 c = 0.33.. 1.166..
0.4266.. 0.5 3.166.. 1.833.. 層別化アルゴリズム 0.833.. 2 c = min{w(v)/deg(v)} t(v) = c・deg(v) w’(v) = w(v) – t(v) 1.0 4 3.166.. 1.833.. G2 c = 0.4266.. 次数0になったので 切り捨て 1.166..
0.833.. 0.833.. 0.4266.. 0.4266.. 層別化アルゴリズム 0.833.. 2 c = min{w(v)/deg(v)} t(v) = c・deg(v) w’(v) = w(v) – t(v) 1.0 4 3.166.. 1.833.. G2 c = 0.4266..
0 層別化アルゴリズム c = min{w(v)/deg(v)} t(v) = c・deg(v) w’(v) = w(v) – t(v) 0.166.. 4 2.74 1.4066.. G3 c = 0.4266..
0.166 0.166.. 2.74 0.166 層別化アルゴリズム c = min{w(v)/deg(v)} t(v) = c・deg(v) w’(v) = w(v) – t(v) 0.166.. 0.166.. 4 2.74 1.4066.. 2.74 0 c = 0.166.. 点がすべて次数0に なったので終了 2.5733..
層別化アルゴリズム 出力として出されるのは アルゴリズムの途中で 重みが0になった頂点 2 2 3 4 4 3 2 2 1 1 2
層別化アルゴリズム Di: 次数が0になった頂点 Wi: 重みが0になった頂点 Gk Dk Gk-1 Wk-1 Dk-1 ・・・ G1 W1 D1 G0 (=G) W0 D0 出力 C = W0∪・・・∪Wk-1 G – C = D0∪・・・∪Dk
層別化アルゴリズムの解析 • 層別化アルゴリズムは重み付き点カバー問題に対して、近似保証 2 を達成する。 • 証明: • 出力 Cは G の点カバーである • w(C) ≦ 2・OPT の順で説明する。
層別化アルゴリズムの解析 • 出力 Cは G の点カバーである • もし、Cが Gの点カバーでないとすると、ある i, jに対して u∈Diかつ v∈Djとなる (u, v)が存在することになる。仮にi≦j とすると、(u, v) は Giに存在することになり、 uが次数0の点であることに反する。 j≦i のときも同様。したがって、Cは G の点カバーである。
層別化アルゴリズムの解析 2. w(C) ≦ 2・OPTの証明(前半) • C* を最適な点カバーとし、 w(C) ≦ 2・w(C*) となることを証明する。 • アルゴリズムの各繰り返しで得られる tを順番に t0, t1, ..., tk-1と表すことにする。 • 点 v∈Cに対して、v∈Wjとすると、w(v)=∑i≦jti(v)が成り立つ。 • 点 v∈G–C に対して、v∈Djとすると、w(v)>∑i<jti(v)が成り立つ。
層別化アルゴリズムの解析 2. w(C) ≦ 2・OPTの証明(後半) • ところで、各 iに対して、C∩Gi=Wi∪・・・∪Wk-1および C*∩Giは点カバーである。 • よって、tが次数重み付き関数であることから、ti(C∩Gi) ≦ ti(Gi) ≦ 2・OPT ≦ 2・ti(C*∩Gi) が成り立つ。 • したがって、 w(C) = ∑i=0k-1ti(C∩Gi) ≦ 2・∑i=0k-1ti(C*∩Gi) ≦ 2・w(C*)
重み付き点カバー問題の近似保証の改善 • 重み付き点カバー問題に対して、層別化アルゴリズムが 2 近似アルゴリズムであることを示した。 • 層別化アルゴリズムの近似保証は、よりよい解析を用いれば改善できるか? 答え: できない⇒タイトな例が存在する • 重み付き点カバー問題に対して、よりよい近似保証を持つアルゴリズムは存在するか?
層別化アルゴリズムの近似保証2に対するタイトな例層別化アルゴリズムの近似保証2に対するタイトな例 • すべての点の重みが1の完全二部グラフ Kn,n • アルゴリズムによる出力のコスト = 2n • 最適解のコスト OPT= n 1 1 1 1 1 1 n ・・・ ・・・ 1 1
重み付き点カバー問題の近似保証の改善 • 重み付き点カバー問題に対して、層別化アルゴリズムが 2 近似アルゴリズムであることを示した。 • 層別化アルゴリズムの近似保証は、よりよい解析を用いれば改善できるか? 答え: できない⇒タイトな例が存在する • 重み付き点カバー問題に対して、よりよい近似保証を持つアルゴリズムは存在するか? 答え: ????
第二章 集合カバー(目次) • 集合カバー問題(グリーディアルゴリズム) • 重み付き点カバー問題(層別化) • 最短拡大ストリング問題