1 / 29

第二章 集合カバー(その2)

第二章 集合カバー(その2). 作: 牧山幸史. これまでのあらすじ. 現実で遭遇する最適化問題の多くは「NP困難」 厳密解を求めるのに、膨大な計算時間が必要 近似解ならば、求めることができるかも。 個々の問題に対する近似アルゴリズムを調査する(第 Ⅰ 部): 第 1 章: 個数版点カバー問題 (近似率 2 ) 第 2 章: 集合カバー問題. 第二章 集合カバー(目次). 集合カバー問題(グリーディアルゴリズム) 重み付き点カバー問題(層別化) 最短拡大ストリング問題. 重み付き点カバー問題.

Download Presentation

第二章 集合カバー(その2)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二章 集合カバー(その2) 作: 牧山幸史

  2. これまでのあらすじ • 現実で遭遇する最適化問題の多くは「NP困難」 • 厳密解を求めるのに、膨大な計算時間が必要 • 近似解ならば、求めることができるかも。 • 個々の問題に対する近似アルゴリズムを調査する(第Ⅰ部): 第1章: 個数版点カバー問題 (近似率2) 第2章: 集合カバー問題

  3. 第二章 集合カバー(目次) • 集合カバー問題(グリーディアルゴリズム) • 重み付き点カバー問題(層別化) • 最短拡大ストリング問題

  4. 重み付き点カバー問題 • ここでは、重み付き点カバー問題に対して、層別化を用いた2近似アルゴリズムを与える。 • 重み付き点カバー問題(p1): • 無向グラフ G=(V,E),各点へのコスト関数 w:V→Q+が入力として与えられて、最小コストの点カバーを求める問題。点カバーとは、 G=(V,E)のどの辺に対しても少なくとも一方の端点を含むような点集合 V’⊆Vのことをいう。

  5. 重み付き点カバー問題 2 2 点カバーとは、すべての 辺をカバーする頂点集合 のことである 3 4 4 3 2 2 コスト9の点カバーが 得られた 1 1 2

  6. 層別化によるアルゴリズム設計 • アイデア:与えられたグラフの点集合の重み関数を、次数重み付き関数に分割する。 • 次数重み付き関数: • w:V→Q+ を点集合上の重み関数とするとき、各点 v ∈ Vの重み w(v)が、ある定数 cを用いて w(v) = c・deg(v) と表されるとき、 wを次数重み付き関数という。

  7. 次数重み付き関数 • 次数重み付き関数は、次のようなよい性質を持つ。 • 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| であるので、証明された。

  8. 次数重み付き点カバー問題 2 2 次数重み付き関数ならば すべての点を選んでも、 コストは OPTの高々2倍 4 4 2 2 2 4 1 4 2

  9. 層別化アルゴリズム • 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.に戻る。

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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..

  16. 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..

  17. 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..

  18. 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..

  19. 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..

  20. 層別化アルゴリズム 出力として出されるのは アルゴリズムの途中で 重みが0になった頂点 2 2 3 4 4 3 2 2 1 1 2

  21. 層別化アルゴリズム 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

  22. 層別化アルゴリズムの解析 • 層別化アルゴリズムは重み付き点カバー問題に対して、近似保証 2 を達成する。 • 証明: • 出力 Cは G の点カバーである • w(C) ≦ 2・OPT の順で説明する。

  23. 層別化アルゴリズムの解析 • 出力 Cは G の点カバーである • もし、Cが Gの点カバーでないとすると、ある i, jに対して u∈Diかつ v∈Djとなる (u, v)が存在することになる。仮にi≦j とすると、(u, v) は Giに存在することになり、 uが次数0の点であることに反する。 j≦i のときも同様。したがって、Cは G の点カバーである。

  24. 層別化アルゴリズムの解析 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)が成り立つ。

  25. 層別化アルゴリズムの解析 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*)

  26. 重み付き点カバー問題の近似保証の改善 • 重み付き点カバー問題に対して、層別化アルゴリズムが 2 近似アルゴリズムであることを示した。 • 層別化アルゴリズムの近似保証は、よりよい解析を用いれば改善できるか? 答え: できない⇒タイトな例が存在する • 重み付き点カバー問題に対して、よりよい近似保証を持つアルゴリズムは存在するか?

  27. 層別化アルゴリズムの近似保証2に対するタイトな例層別化アルゴリズムの近似保証2に対するタイトな例 • すべての点の重みが1の完全二部グラフ Kn,n • アルゴリズムによる出力のコスト = 2n • 最適解のコスト OPT= n 1 1 1 1 1 1 n ・・・ ・・・ 1 1

  28. 重み付き点カバー問題の近似保証の改善 • 重み付き点カバー問題に対して、層別化アルゴリズムが 2 近似アルゴリズムであることを示した。 • 層別化アルゴリズムの近似保証は、よりよい解析を用いれば改善できるか? 答え: できない⇒タイトな例が存在する • 重み付き点カバー問題に対して、よりよい近似保証を持つアルゴリズムは存在するか? 答え: ????

  29. 第二章 集合カバー(目次) • 集合カバー問題(グリーディアルゴリズム) • 重み付き点カバー問題(層別化) • 最短拡大ストリング問題

More Related