Feedback Vertex Set

Download Report

Transcript Feedback Vertex Set

2011/10/27 今井研輪読
Feedback Vertex Set
Approximation Algorithms, Ch. 6.
Vijay V. Vazirani
発表: 秋葉 (M1)
フィードバック点集合
(Feedback Vertex Set)
与えられる物:
• 無向グラフ 𝐺 = 𝑉, 𝐸
• 頂点 𝑣 の重み 𝑤(𝑣)
問題:
• フィードバック点集合: 頂点集合 𝐹 であって,それを削
除するとグラフが無閉路 (森)
• 最小フィードバック点集合: そのうち重みの和が最小
別の解釈: すべての閉路が𝐹の1つ以上の点を通るような𝐹
話の流れ
1. 閉路階数
2. 重み 𝑤(𝑣) が閉路階数的 (cyclomatic) である場合
の近似アルゴリズム
3. 一般の場合の近似アルゴリズム
閉路階数
閉路階数 𝑐𝑦𝑐(𝐺)
• 前提
– 無向グラフ𝐺 = (𝑉, 𝐸)
– 辺には 1 から𝑚 の番号つき (𝑚 = |𝐸|)
• 定義
– 閉路𝑪の特性ベクトル: 𝐺𝐹 2 𝑚 におけるベクトル
で,𝐶の辺に対応する要素は1
– グラフ 𝑮 の閉路空間: 全てのの単純な閉路の特性
ベクトルで生成される空間
– 𝒄𝒚𝒄(𝑮) = グラフ𝑮の閉路階数: 閉路空間のランク
定理6.2: 𝑐𝑦𝑐 𝐺 = 𝐸 − 𝑉 + 𝑐𝑜𝑚𝑝𝑠(𝐺)
• 別解釈: c𝑦𝑐 𝐺 =
グラフ𝐺を無閉路 (森) にするために
取り除かなければならない辺の最小本数
• 定理 6.2
𝑐𝑦𝑐 𝐺 = 𝐸 − 𝑉 + 𝑐𝑜𝑚𝑝𝑠(𝐺)
(𝑐𝑜𝑚𝑝𝑠 𝐺 = 𝐺の連結成分数)
• 以降,𝑐𝑦𝑐(𝐺)は
「グラフがどのぐらい閉路を持っているか」
の指標として使われる.
(閉路の個数を数えるのは難しいためだと思われる.)
𝛿𝐺 (𝑣)
• 定義 𝛿𝐺 𝑣 ≔
グラフ𝐺から頂点𝑣を取り除いた際の閉路階数の減少分
つまり
𝛿𝐺 𝑣 = 𝑐𝑦𝑐 𝐺 − 𝑐𝑦𝑐(𝐺 − 𝑣)
• 主張 6.3
連結グラフ𝐺に対し𝛿𝐺 𝑣 = deg 𝐺 𝑣 − 𝑐𝑜𝑚𝑝𝑠(𝐺 − 𝑣)
これは定理 6.2 を上の式に代入すれば得られる
重みが閉路階数的な場合の
近似アルゴリズム
重みが閉路階数的な
最小フィードバック点集合問題
与えられる物:
• 無向グラフ 𝐺 = 𝑉, 𝐸
• 頂点 𝑣 の重み 𝑤 𝑣 = 𝑐 × 𝛿𝐺 (𝑣)
(c: 定数)
問題:
• フィードバック点集合: 頂点集合 𝐹 であって,それを
削除するとグラフが無閉路 (森)
• 最小フィードバック点集合: そのうち重みの和が最小
近似アルゴリズム
• 𝐺の極小フィードバック点集合𝐹を答える
• これが近似率 2 であることを示そう
アルゴリズムの近似保証
近似率 𝐾 の場合
最適解
の
下界
最適解
の
下界
≦
最適解
≦
近似解
証明すべき不等式
≦
×
𝐾
アルゴリズムの近似保証
近似率 𝐾 の場合
最適解
の
下界
最適解
の
下界
≦
最適解
↑
補題 6.4
より言う
≦
近似解
≦
↑
補題 6.5
より言う
×
𝐾
補題 6.4: 𝛿𝐻 𝑣 ≤ 𝛿𝐺 (𝑣)
(𝐻は𝐺の部分グラフ)
• 補題 6.4
𝐻が𝐺の部分グラフならば,𝛿𝐻 𝑣 ≤ 𝛿𝐺 𝑣
𝐺を𝑣を含む連結成分としてよく,𝐺連結.
主張 6.3 より代入して
deg 𝐻 (𝑣) − 𝑐𝑜𝑚𝑝𝑠 𝐻 − 𝑣
≤ deg 𝐺 𝑣 − 𝑐𝑜𝑚𝑝𝑠(𝐺 − 𝑣)
を示したい.移行して,以下を示そう.
𝑐𝑜𝑚𝑝𝑠 𝐺 − 𝑣 − 𝑐𝑜𝑚𝑝𝑠 𝐻 − 𝑣
≤ deg 𝐺 𝑣 −deg 𝐻 (𝑣)
今示したいもの:
𝑐𝑜𝑚𝑝𝑠 𝐺 − 𝑣 − 𝑐𝑜𝑚𝑝𝑠 𝐻 − 𝑣
≤ deg 𝐺 𝑣 −deg 𝐻 𝑣
𝐻 − 𝑣 から 𝐺 − 𝑣 にすることを考えよう (頂点・辺を足す)
𝐺のみに含まれる辺𝑒 ∈ 𝐸 𝐺 − 𝐸(𝐻)について:
1. 𝑒の端点が𝑣を含む場合
この辺は足せない.もしかしたらその先に新しい連結成分が?
2. 𝑒の端点が𝑣を含まない場合
この辺は足せる.これは連結成分を増やしはせず,減らすだけ.
よって,
(左辺) = 連結成分が増える数
≤(1の辺の数) = deg 𝐺 (𝑣) − deg 𝐻 (𝑣)
= (右辺)
系 𝑐 × 𝑐𝑦𝑐 𝐺 ≤ 𝑂𝑃𝑇
(最適解の下界)
• 𝐹 = {𝑣1 , … } をフィードバック点集合とする.
• 𝐺から𝐹の頂点を除去してゆくと閉路階数が 0 になるので,
𝐺0 = 𝐺, 𝐺𝑖 = 𝐺 − 𝑣1 , … , 𝑣𝑖 として,
𝑐𝑦𝑐 𝐺 =
𝛿𝐺𝑖−1 (𝑣𝑖 )
𝑖
• 補題 6.4 より.𝐺𝑖 は𝐺0 の部分グラフですので,
𝑐𝑦𝑐 𝐺 ≤
•
𝛿𝐺 (𝑣𝑖 )
𝑖
∗
𝐹 を最小フィードバック点集合とする.
重みが閉路階数的(𝑤 𝑣 = 𝑐 × 𝛿𝐺 (𝑣))に注意して,
𝛿𝐺 𝑣𝑖 = 𝑤 𝐹 ∗ = 𝑂𝑃𝑇
𝑐 × 𝑐𝑦𝑐 𝐺 ≤ 𝑐
𝑖
補題 6.5:
𝑣∈𝐹 𝛿𝐺 (𝑣) ≤ 2 × 𝑐𝑦𝑐(𝐺)
(𝐹は極小フィードバック点集合)
• 連結成分ごとに足すと考えればよく,𝐺は連結とする.
• 𝑓= 𝐹
• 𝐺は𝐹により𝑘個の連結成分に分かれるとする
𝑘個の連結成分を 2 つのタイプに分ける:
• タイプ①: 𝐹 の1点とのみ結ばれている連結成分
• タイプ②: 𝐹 の2点以上と結ばれている連結成分
タイプ①を𝑡個とする(→タイプ②は𝑘 − 𝑡個)
定理 6.2,主張 6.3 より,以下の囲われた部分を示せば良い
𝛿𝐺 (𝑣) =
𝑣∈𝐹
(deg 𝐺 𝑣 − 𝑐𝑜𝑚𝑝𝑠 𝐺 − 𝑣 ) ≤ 2 𝐸 − 𝑉
𝑣∈𝐹
≤ 2 ∙ 𝑐𝑦𝑐(𝐺)
示したいもの:
(deg 𝐺 𝑣 − 𝑐𝑜𝑚𝑝𝑠 𝐺 − 𝑣 ) ≤ 2 𝐸 − 𝑉
𝑣∈𝐹
𝑐𝑜𝑚𝑝𝑠 𝐺 − 𝑣 は,𝑣と結ばれるタイプ①の連結成分数 + 1なので
𝑐𝑜𝑚𝑝𝑠(𝐺 − 𝑣) = 𝑓 + 𝑡
𝑣∈𝐹
よって,示したいものは:
deg 𝐺 𝑣 ≤ 2 𝐸 − 𝑉 + 𝑓 + 𝑡
𝑣∈𝐹
𝑮 − 𝑭 内の辺: 𝑘 個の木からなる森.辺の総数 |𝑉| − 𝑓 − 𝑘
カット (𝑭, 𝑽 − 𝑭) に含まれる辺: 2 ステップに分けて解析.
1. 𝐹は極小なので各𝑣 ∈ 𝐹に対しそれ以外の𝐹内の点を含まない
閉路が存在,よってある連結成分と 2 本以上の辺が接続.そ
のうちの1本を削除したと考える (𝑓本)
2. 削除した後のグラフで,タイプ①の連結成分は少なくとも1
本,タイプ②の連結成分は少なくとも 2 本,辺が𝐹の点に接
続している (𝑡 + 2 𝑘 − 𝑡 = 2𝑘 − 𝑡本)
よって,カットには少なくとも 𝑓 + 2𝑘 − 𝑡本の枝.
以上より,
deg 𝐺 𝑣 =
𝑣∈𝐹
deg 𝐺 𝑣 −
𝑣∈𝑉
deg 𝐺 𝑣
𝑣∈𝑉−𝐹
≤ 2 𝐸 − 2 𝑉 − 𝑓 − 𝑘 − 𝑓 + 2𝑘 + 𝑡
=2 𝐸 − 𝑉 +𝑓+𝑡
系 6.6: 𝑤 𝐹 ≤ 2 ∙ 𝑂𝑃𝑇
(𝐹は極小フィードバック点集合)
• 下界: 系 𝑐 ∙ 𝑐𝑦𝑐 𝐺 ≤ 𝑂𝑃𝑇
(前にやった)
• 上界: 補題 6.5 より
𝑤 𝐹 =𝑐
𝛿𝐺 (𝑣) ≤ 2 𝑐 ∙ 𝑐𝑦𝑐 𝐺
𝑣∈𝐹
よって,極小フィードバック点集合を
答えるアルゴリズムは近似率2!
一般の場合の
近似アルゴリズム
階層化 (layering) 再び
• 重み𝑤が閉路階数的である場合はできたが,一般の場合はど
うするか?
• 階層化のテクニックにより問題を閉路階数的な問題に分解し
よう
階層化: 点カバーでも出てきたやつです
𝑤(𝑣)
c = min{
}
𝑣∈𝑉 𝛿𝐺 (𝑣)
として,𝑤に対し,以下を定義
• 最大閉路階数的重み関数 𝑡 𝑣 ≔ 𝑐 ∙ 𝛿𝐺 𝑣
• 残余重み関数 𝑤 ′ 𝑣 ≔ 𝑤 𝑣 − 𝑡(𝑣)
つまり,𝑤(𝑣)を𝑡 𝑣 + 𝑤′(𝑣)に分解した.𝑡(𝑣)は閉路階数的.
一般の近似率 2 のアルゴリズム
𝐺0 = 𝐺としてスタート
1.
分解フェーズ (𝑖 = 0, 1, …)
1.
2.
3.
2.
𝐺𝑖 に閉路がなければ終わり
𝑤(𝑣)を𝑡𝑖 (𝑣) + 𝑤′(𝑣)に分解.
𝑡(𝑣) が正のものによる誘導部分グラフ 𝐺𝑖+1 を作る.
𝑤 𝑣 ← 𝑤′(𝑣)として繰り返す.
拡張フェーズ (𝑖 = 𝑘, … , 2, 1 , 𝐹𝑘 = 𝜙)
1.
2.
𝐹𝑖′ ∈ 𝑉𝑖−1 − 𝑉𝑖 であって𝐹𝑖 ∪ 𝐹𝑖 ′が𝐺𝑖 のフィードバック点集合になる
ような極小な𝐹𝑖 ′を求める
𝐹𝑖−1 = 𝐹𝑖 ∪ 𝐹𝑖 ′ (これは 𝐺𝑖−1 のフィードバック点集合)
𝐹0 が答え.
補題 6.7
補題 6.7
• 𝐺 = 𝑉, 𝐸 :グラフ
• 𝑉 ′ ⊂ 𝑉:頂点の部分集合
• 𝐻:𝐺の𝑉′による部分誘導グラフ
• 𝐹 ⊂ 𝑉′:𝐻における極小フィードバック点集合
• 𝐹 ′ ⊂ 𝑉 − 𝑉 ′ :𝐹 ∪ 𝐹′が𝐺のフィードバック点集合になる
ような極小集合
このとき,𝐹 ′ ∪ 𝐹は𝐺の極小フィードバック点集合
• 𝐹は𝐻の極小フィードバック点集合なので,𝑣
以外の𝐹の頂点を含まないような閉路𝐶が𝐻に
存在
• 𝐹’は𝑉’と頂点を共通して持たないので,閉路
𝐶は𝐹 ∪ 𝐹’の点として𝑣のみを持つ
定理 6.9: 近似率 2 であること
𝐹 ∗ :𝐺の最適フィードバック点集合.
𝐹0 :アルゴリズムの出力
𝑂𝑃𝑇 = 𝑤(𝐹 ∗ ):𝐺での最適解の重み
𝑂𝑃𝑇𝑖 :重み関数𝑡𝑖 に対する 𝐺𝑖 での最適解の重み
𝐺𝑖 は𝐺の部分誘導グラフなので,𝐹 ∗ ∩ 𝑉𝑖 は𝐺𝑖 のフィード
バック点集合.重みを分解して.
𝑘
𝑂𝑃𝑇 = 𝑤 𝐹 ∗ =
𝑘
𝑡𝑖 (𝐹 ∗ ∩ 𝑉𝑖 ) ≥
𝑖=0
𝑂𝑃𝑇𝑖
𝑖=0
𝑘
𝑂𝑃𝑇 = 𝑤 𝐹 ∗ =
𝑘
𝑡𝑖 (𝐹 ∗ ∩ 𝑉𝑖 ) ≥
𝑖=0
同様に,𝐹0 に対しても分解して,
𝑘
𝑤 𝐹0 =
𝑖=0
𝑘
𝑡𝑖 (𝐹0 ∩ 𝑉𝑖 ) =
𝑖=0
𝑂𝑃𝑇𝑖
𝑡𝑖 (𝐹𝑖 )
𝑖=0
• 補題 6.7 より 𝐹𝑖 は𝐺𝑖 の極小フィードバック点集合
• 𝑡𝑖 は閉路回数的重み関数
よって補題 6.5 より 𝑡𝑖 𝐹𝑖 ≤ 2 ∙ 𝑂𝑃𝑇𝑖 !
よって,
𝑤 𝐹0 ≤ 2 ∙ 𝑂𝑃𝑇
タイトな例
2𝑛 頂点の完全2部グラフから
• 完全マッチングを1つ除き
• 各辺を二重化
2𝑛 − 2 個の頂点を選びかねない
正解は 𝑛 個