More Related Content Similar to 指数時間アルゴリズム入門 (20) 指数時間アルゴリズム入門2. 自己紹介
TopCoder: ◎wata
TCO2010Marathon優勝など Twitter: @wata_orz
東京大学情報理工学系研究科コンピュータ科学専攻
理論計算機科学 (アルゴリズムの理論的な解析とか)
プログラミングコンテスト
チャレンジブック
2
4. 効率的な指数時間アルゴリズム
何の指数?
頂点数? 辺の数? それとも…
• 2 𝐸 のアルゴリズムはまず役に立たないが,2 𝑉 のアル
ゴリズムならコンテストでもよく出題されている
• 入力サイズとは別のパラメータに関してのみ指数である
ような場合もある (FPTアルゴリズム)
指数の底は?
𝑛
2
𝑛 と2 では解けるサイズが倍違う
2
100
1.2 < 1004
コンテストに出うるものに絞って解説
4
5. 内容一覧
何の指数?
動的計画法,準指数時間,グラフの「幅」
指数の底は?
半分全列挙,探索アルゴリズム
FPTアルゴリズム
FPTとは,有界探索木,カーネル
包除原理
数え上げ,畳込み
余談&おまけ
Theoretical part
5
9. 何の指数? 巡回セールスマン問題
ナイーブな解法
全ての方法を試して最小を求める
𝑂(𝑛!)
𝑛 𝑛
• 𝑛! ≈ 𝑒
= 𝑒 𝑛 log 𝑛−𝑛
• 𝑛 ≤ 10 程度までなら解ける
動的計画法
すでに訪れた頂点の訪問順は無視できる
𝑛 2
𝑂 2 𝑛
• 𝑛 ≤ 20 程度までなら解ける
9
11. 余談
2010年,特殊ケースである無向ハミルトン閉路問題
3
を𝑂 2 𝑛 時間で解くアルゴリズム[1]が開発された
∗ 4
ただし,多項式部分が大きく実用的ではない
一方,巡回セールスマン問題に対しては,先の動的
計画法よりも計算量的に優れたアルゴリズムは知ら
れていない
[1] Andreas Björklund: Determinant Sums for Undirected Hamiltonicity. FOCS 2010
11
14. 何の指数? 最大クリーク問題
ナイーブな解法
全ての頂点の部分集合を試す
𝑛
𝑂 2 𝑛
• 𝑛 ≤ 20 くらいまで解ける
辺の数に対しては?
実は𝑂 2 2𝑚 𝑛 で解ける
• 𝑛, 𝑚 ≤ 200 くらいまで解ける
14
15. 何の指数? 最大クリーク問題
𝑂 2 2𝑚 𝑛 のアルゴリズム
全ての頂点の次数が2𝑚以上ならば,𝑛 ≤ 2𝑚
なので全通り試せば良い
次数 2𝑚未満の点𝑣を一つ選ぶ
• 𝑣を含むクリークは𝑣の隣接点の部分集合を全て試せば
𝑂 2 2𝑚 で求まる
• 𝑣を含まないクリークは𝑣を除去して再帰的に求めれば
良い
このアルゴリズムは全てのクリークを調べている
クリークの個数は高々2
2𝑚 個
15
16. 余談
最大クリーク問題は辺の数に関して準指数時間で解
けたが,他のグラフ最適化問題も解けるのか?
実は解けないであろうと信じられている
ETH (Exponential Time Hypothesis)
3-SATを2
𝑜 𝑛 時間で解くアルゴリズムは存在しない
• 𝑃 ≠ 𝑁𝑃予想の強い版
ETHの元で,様々なグラフ最適化問題が辺の数𝑚
𝑜(𝑚)
について2 時間で解けないことが証明可能
16
19. 何の指数? グラフの「幅」
ナイーブな解法
石の置き方を全通り試す
• 𝑂 2 𝑤ℎ
幅を活用した動的計画法
一番上の行から順番に決めていったとき,残りを
決めるために必要な情報は最後の𝑤 + 1マスのみ
• 𝑂 2 𝑤 𝑤ℎ
19
21. 余談
グラフの「幅」とは?
様々な幅が存在する
• pathwidth, treewidth, branchwidth, cliquewidth, etc
• それぞれの厳密な定義はここでは行わない
様々なグラフ最適化問題が,幅に関する指数時間
で解ける (FPT)
コンテストで登場するのは主にグリッドグラフ
• pathwidthが小さい
21
22. 幅が定数のグラフ
外平面グラフ
平面グラフで,全ての頂点が一つの面(外面)上に
載っている
幅が定数ならば多項式時間
3 5
1
9
7
0 4
8
2 6
22
24. 指数の底は? 部分和問題
𝑛個の数{𝑎 𝑖 }が与えられる.ここから幾つか選んで,
その総和を𝑠にすることが出来るか?
{𝑎 𝑖 } = {11, 8, 5, 13, 16, 9}
s = 26
Yes (8+5+13)
s = 23
No
24
25. 指数の底は? 部分和問題
ナイーブな解法
全ての部分集合を試す
• 𝑂 2𝑛
動的計画法
• 𝑂 𝑛𝑠 , 擬多項式時間アルゴリズム
– Sが小さければ効率的
半分全列挙
二つに分けてそれぞれ全通り列挙し併合
𝑛
• 𝑂 2 2
• 𝑠が非常に大きくても,𝑛 ≤ 40 くらいまで解ける
25
26. 半分全列挙
𝑛
前半分で作れる和と後半分で作れる和をそれぞれ2 2
時間かけて求め,ソートする
{𝑎 𝑖 } = {11, 8, 5, 13, 16, 9}
前半分: {0, 5, 8, 11, 13, 16, 19, 24}
後半分: {0, 9, 13, 16, 22, 25, 29, 38}
二つの列から足して𝑠になるペアが存在するかしゃく
とり法で求める
s = 26 → Yes (13+13)
s = 23 → No
26
29. 指数の底は? 最大独立集合問題
ナイーブな解法
全ての頂点の部分集合を試す
• 𝑂 2 𝑛 𝑛
• 𝑛 ≤ 20 くらいまで解ける
探索アルゴリズム
ある頂点を使うか使わないかで分岐していく
辺で結ばれている二点を同時には選べないため,
𝑛
2 通り全てを試す必要はない
計算量の解析が非常に難しい
29
33. 探索アルゴリズムの計算量解析
計算量は?
𝑛
𝑛頂点の時の探索木の大きさが𝑐 で抑えられると
する
𝑣を使わない場合1点減る
𝑐 𝑛 ≥ 𝑐 𝑛−1 + 𝑐 𝑛−3 が満たされれば良い
𝑣を使う場合,少なくとも3点減る
𝑂 1.466 𝑛 𝑛 が示せる
40頂点くらいあっても大丈夫
33
34. 探索アルゴリズムの計算量解析
もっと頑張ると…
次数最大の頂点で分岐することにすれば,最大次
数が2以下のグラフ(閉路orパス)は多項式時間で
解けるので, 𝑐 𝑛 ≥ 𝑐 𝑛−1 + 𝑐 𝑛−4
𝑛
𝑂 1.381 𝑛 が示せる
最悪ケースは・・・?
よく分からない
34
35. 余談
現在計算量的に最もよい最大独立集合のアルゴリズ
ムは𝑂∗ (1.212 𝑛 )[2],次数3以下に制限したグラフで
は𝑂∗ 1.089 𝑛 [3]が示されている
解析が非常に複雑
ある種の最適化問題をコンピュータを用いて解くこ
とで行なっている
一般に探索アルゴリズムの実際の計算量と証明でき
る計算量の間には大きな開きがあり,証明できなくて
も実際には非常に高速であることが多い
[2] Nicolas Bourgeois et al.: Fast Algorithms for max independent set. Algorithmica 62(1-2) (2012)
[3] Mingyu Xiao: A Simple and Fast Algorithm for Maximum Independent Set in 3-Degree Graphs.
WALCOM 2010
35
36. 余談
SETH (Strong Exponential Time Hypothesis)
SATを𝑂 2− 𝜖 𝑛 時間で解くアルゴリズムは存在
しない
• ETHの更に強い版
SETHの仮定のもので,様々な問題に対して計算量の
下界を証明できる
下界と上界が一致する問題はあまりない
• 帰着により問題サイズが大きくなるため
36
38. FPTアルゴリズム
FPTアルゴリズムとは?
FPT: Fixed Parameter Tractable
入力サイズとは独立なパラメータ𝑘に関してのみ指
数時間のアルゴリズム
• 計算量の例: 𝑂 2 𝑘 𝑛 など
• パラメータの例: グラフの幅,解の大きさ,など
38
41. FPT: 最小頂点被覆問題
最大独立集合に帰着
𝑆が頂点被覆⇔𝑉 ∖ 𝑆が独立集合
𝑛
探索アルゴリズムを用いて𝑂 𝑐 で解ける
𝑆 ≤ 𝑘の頂点被覆が存在するか判定
ナイーブな解法
• 全ての選び方を試す
• 𝑂 𝑛 𝑘+1
有界探索木
• 𝑂 2 𝑘 𝑛 で解ける (FPT)
• グラフが大きくてもあまり問題無い
41
42. 有界探索木
辺𝑒 = 𝑢, 𝑣 を一つ選び,𝑢を使うケースと𝑣を使う
ケースに分岐する
𝑒を被覆するためには,必ずどちらかは使う必要が
ある
𝑢を使う場合,𝑢と隣接する辺を取り除き,𝑘を1減ら
す
𝑢 𝑢 𝑢
𝑣 𝑣 𝑣
42
46. FPT: カーネル
最大独立集合の探索アルゴリズムに加え,サイズ𝑘
以下の解が欲しいので,以下のルールを追加できる
分岐不要なケース
次数𝑘 + 1以上の点: 必ず使うとしてよい
• 使わない場合,隣接する𝑘 + 1点を使う必要がある
このルールを繰り返し適用した後,全ての頂点の次
数は𝑘以下となり,もし辺数が𝑘 2 より多ければ,その
時点で解が存在しないことがわかる
46
47. FPT: カーネル
つまり,𝑂(𝑘𝑛) 時間の前処理で,𝑛′ ≤ 2𝑘 2 , 𝑘 ′ ≤ 𝑘の
問題に変換することが出来る
この前処理を行った後で,有界探索木法を用いれ
𝑘 2
ば,全体の計算量は 𝑂 1.466 𝑘 + 𝑘𝑛
100万頂点のグラフから,サイズ30以下の頂点被
覆を求めることが可能!
このように,多項式時間の前処理を行うことで,問題
サイズを𝑘の関数𝑓(𝑘)以下にまで小さくする手法を
カーネライズと呼び,小さくなった問題をカーネルと呼
ぶ
47
48. 余談
ある問題がFPTであることと,カーネライズできること
は同値
⇒: 𝑓 𝑘 𝑝 𝑛 で解けるとき,𝑛 ≤ 𝑓 𝑘 ならばサイズ
𝑓(𝑘)のカーネルが存在し,𝑛 > 𝑓(𝑘)ならば
𝑓 𝑘 𝑝 𝑛 は𝑛に関する多項式時間なので前処理
の中で完全に解くことが出来る
⇐: カーネルを愚直に解けばよい
ただし,指数サイズのカーネルなので実用上は役に
立たず,多項式サイズのカーネルがあるかはまた別
の問題
48
49. 余談
現在計算量的に最も優れた最小頂点被覆のFPTアル
ゴリズムは,𝑂 1.2738 𝑘 + 𝑘𝑛 ,カーネルサイズは2𝑘
のものが得られている[4]
大きさ𝑘の独立集合やクリークを求める問題は𝑘に対
してFPTでないと考えられている
W[1]-complete
[4] Jianer Chen et al.: Improved upper bounds for vertex cover. Theor. Comput. Sci. 411(40-42)
(2010)
49
53. 動的計画法
𝑑𝑝 𝑆 𝑣 : ターミナル集合𝑆と頂点𝑣を連結にする
最小の辺数 (𝑣はターミナルに限らない)
𝑢 𝑣
𝑣
? 𝑇
? ?
𝑆∖ 𝑇
𝑆
𝑑𝑝 𝑆 𝑣 = min min 𝑑𝑝 𝑆 𝑢 + 1| 𝑢, 𝑣 ∈ 𝐸 ,
( ※ループしているので
min 𝑑𝑝 𝑇 𝑣 + 𝑑𝑝 𝑆 ∖ 𝑇 𝑣 𝑇 ⊆ 𝑆}) 幅優先で行う
53
55. 包除原理
𝑓 𝑆 = 𝑔(𝑇) , 𝑔 𝑆 = −1 𝑆 −|𝑇| 𝑓(𝑇)
𝑇⊆𝑆 𝑇⊆𝑆
指数時間アルゴリズムにおいて,包除原理は非常に
強力なツール
応用例
ハミルトンパスを多項式空間で
グラフ彩色問題
動的計画法を高速化 (畳込み)
55
56. 包除原理
𝑓 𝑆 = 𝑔(𝑇) , 𝑔 𝑆 = −1 𝑆 −|𝑇| 𝑓(𝑇)
𝑇⊆𝑆 𝑇⊆𝑆
𝑆 −|𝑇|
𝑔 𝑆 = 𝑇⊆𝑆 −1 𝑋⊆𝑇 𝑔(𝑋)
𝑆− 𝑇
= 𝑋⊆𝑆 𝑋⊆𝑇⊆𝑆 −1 𝑔(𝑋)
= 𝑔(𝑆)
𝑔を計算したいが,直接は難しい時に,その和𝑓を
計算することが出来れば2 𝑛 回𝑓を計算することで𝑔
が求まる
𝑔 → 𝑓: ゼータ変換,𝑓 → 𝑔: メビウス変換
• どちらも2 𝑛 で計算できる
• 高速ゼータ・メビウス変換
56
57. 包除原理: ハミルトンパス
ハミルトンパスを求めるのは難しいが,長さ𝑛 − 1の
(単純とは限らない)𝑠−𝑡パスの個数を求めるのは簡単
単純な動的計画法で求まる
𝑔 𝑆 ≔ 𝑆のみを通り,かつ𝑆を全て通る長さ𝑛 − 1の
𝑠−𝑡パスの個数
𝑔(𝑉) := 𝑠−𝑡ハミルトンパスの個数
𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇)
𝑆のみを通る長さ𝑛 − 1の𝑠−𝑡パスの個数
𝑂 2 𝑛 𝑛𝑚 time, 𝑂(𝑛) space
57
60. 包除原理: 彩色数
ナイーブな方法
色の塗り方を全通り試す
𝑛
𝑂 𝑘 , k:答え
動的計画法
一色ずつ一気に塗る
𝑑𝑝[𝑆]: 𝑆を彩色する最小色数
• 𝑑𝑝 𝑆 = min 𝑑𝑝 𝑇 + 1 𝑆 ∖ 𝑇が独立集合}
𝑂 3𝑛
包除原理
𝑛
𝑂 2 𝑛 で解ける
60
61. 包除原理: 彩色数
グラフ𝐺 = (𝑉, 𝐸)が𝑘彩色可能⇔𝑉を𝑘個の独立集合
で被覆できる
独立集合から𝑘個選んで𝑉を覆う方法の総数を数
えることが出来れば良い
𝑔 𝑆 ≔ 独立集合から𝑘個選んでSをちょうど覆う方法
の総数
𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇)
𝑆の部分集合で独立なもの𝑘個選ぶ方法の総数
61
62. 包除原理: 彩色数
𝐼 𝑆 : 𝑆の部分集合で独立なものの個数とすると,
𝑓 𝑆 = 𝐼 𝑆 𝑘
𝐼 𝑆 = 𝐼 𝑆∖ 𝑣 + 𝐼 𝑆 ∖ 𝑁 𝑣 という漸化式から
𝑂(2 𝑛 𝑛)時間で全ての𝑆 ⊆ 𝑉について計算可能
実は,彩色方法の総数を求めることも可能
𝑔 𝑆 ≔ 独立集合から𝑘個,サイズの総和が𝑛と
なるように選んでSをちょうど覆う方法の総数
𝑓(𝑆)の計算はDPをすればよい
62
63. 包除原理: 高速ゼータ変換
𝑓𝜁 𝑆 = 𝑓 𝑇
𝑇⊆𝑆
𝑣を含まない
𝑓1 𝑔1 𝑔1 = 𝑓1 𝜁
これを再利用すればよい
𝜻
𝑣を含む 𝑓2 𝑔2 𝑔2 = 𝑓1 𝜁 + 𝑓2 𝜁
𝑓 𝑔
63
64. 包除原理: 畳込み
関数𝑓(𝑆), 𝑔(𝑆)から
𝑓∘ 𝑔 𝑆 = 𝑓 𝑇 𝑔(𝑆 ∖ 𝑇)
𝑇⊆𝑆
を計算する操作を畳込みと呼ぶ
単純には𝑂 3 𝑛 で可能
実は𝑂 2 𝑛 で行うことが出来る
これを応用すると,色々な部分集合に対するDPを高
速化することができる
𝑘 𝑘
例: シュタイナー木を3 から2 に
min 𝑑𝑝 𝑇 𝑣 + 𝑑𝑝 𝑆 ∖ 𝑇 𝑣 𝑇 ⊆ 𝑆}
64
65. 包除原理: 畳込み
𝑓∘ 𝑔 𝑆 = 𝑓 𝑇 𝑔(𝑆 ∖ 𝑇)
𝑇⊆𝑆
𝑣を含まない ℎ1 = 𝑓1 ∘ 𝑔1
𝑓1 𝑔1 ℎ1
ℎ2 = 𝑓1 ∘ 𝑔2 + 𝑓2 ∘ 𝑔1
𝑣を含む 𝑓2 𝑔2 ℎ2
𝑓 𝑔 𝑓∘ 𝑔
65
66. 包除原理: 畳込み
ℎ1 = 𝑓1 ∘ 𝑔1 , ℎ2 = 𝑓1 ∘ 𝑔2 + 𝑓2 ∘ 𝑔1
半分の大きさのを3回計算するので3
𝑛
なんとか2回でできないか?
ℎ2 𝑥 + 𝑓2 ∘ 𝑔2 𝑥 2 = 𝑓1 + 𝑓2 𝑥 ∘ 𝑔1 + 𝑔2 𝑥 − ℎ1
値を𝑥の多項式に拡張: 𝑓𝑥 𝑆 = 𝑓 𝑆 𝑥
𝑓 ∘ 𝑔の代わりに, 𝑓 ∘ 𝑔 𝑥 + ゴミ𝑥 を求めること
2
ができた
𝑛
気にせず進めると最終的に 𝑓 ∘ 𝑔 𝑥 + ゴミ
が得られ,ゴミの項は𝑥 𝑛+1 以上なので𝑥 𝑛 の係数を
取り出せば良い
66
67. 包除原理: 畳込み
{} 1 2
{0} 3 3
{1} 2 1
{0,1} 4 4
𝑓 𝑔
67
68. 包除原理: 畳込み
{} 1 2 1 2
{0} 3 3 3 3
{1} 2 1
1 + 2𝑥 2+ 𝑥
{0,1} 4 4
3 + 4𝑥 3 + 4𝑥
𝑓 𝑔
68
69. 包除原理: 畳込み
2
{} 1 2 1 2
(1 + 3𝑥)(2
{0} 3 3 3 3 + 3𝑥)
{1} 2 1
1 + 2𝑥 2+ 𝑥 2 + 5𝑥 + 2𝑥 2
{0,1} 4 4
3 + 4𝑥 3 + 4𝑥 (1 + 5𝑥
+ 4𝑥 2 )(2 + 4𝑥
+ 4𝑥 2 )
𝑓 𝑔
69
70. 包除原理: 畳込み
2
{} 1 2 2𝑥
(1 + 3𝑥)(2
{0} 3 3 9𝑥 + 9𝑥 2 + 3𝑥)
{1} 2 1
2𝑥 + 5𝑥 2 + ⋯ 2 + 5𝑥 + 2𝑥 2
{0,1} 4 4 (1 + 5𝑥
9𝑥 + 30𝑥 2 + ⋯
+ 4𝑥 2 )(2 + 4𝑥
+ 4𝑥 2 )
𝑓 𝑔
70
71. 包除原理: 畳込み
2
2
{} 2𝑥 2𝑥
(1 + 3𝑥)(2
2 2 + 3𝑥)
{0} 9𝑥 + ⋯ 9𝑥 + 9𝑥
{1} 5𝑥 2 + ⋯ 2 + 5𝑥 + 2𝑥 2
2𝑥 + 5𝑥 2 + ⋯
{0,1} 21𝑥 2 + ⋯ (1 + 5𝑥
9𝑥 + 30𝑥 2 + ⋯
+ 4𝑥 2 )(2 + 4𝑥
+ 4𝑥 2 )
𝑓∘ 𝑔
71
72. 包除原理: 畳込み
{} 1 2 2
{0} 3 3 9
{1} 2 1 5
{0,1} 4 4 21
𝑓 𝑔 𝑓∘ 𝑔
72
73. 余談
包除原理の指数時間アルゴリズムへの適用は2006
年に彩色問題に適用[5]されてから非常に研究が進
んだ
シュタイナー木問題は畳込みを経由せずに直接的に
包除原理を用いて 2 𝑘 で解くことも可能[6]
畳込みはゼータ・メビウス変換で考えても良い
FFT,逆FFTみたいな感じ
先の解説は高速行列積のアルゴリズムを元にした
[5] Andreas Björklund, Thore Husfeldt: Inclusion--Exclusion Algorithms for Counting Set Partitions.
FOCS 2006
[6] Jesper Nederlof: Fast Polynomial-Space Algorithms Using Möbius Inversion: Improving on
Steiner Tree and Related Problems. ICALP 2009
73
75. おまけ: 完全マッチングの個数
𝑛
完全マッチングの個数は𝑂∗ 2 で求めることが可能 2
1
2
0
3
5
4
[7] Andreas Björklund: Counting perfect matchings as fast as Ryser. SODA 2012
75
76. おまけ: 完全マッチングの個数
𝑛
完全マッチングの個数は𝑂∗ 2 で求めることが可能 2
1
2
0
3
5
4
[7] Andreas Björklund: Counting perfect matchings as fast as Ryser. SODA 2012
76
77. おまけ: 完全マッチングの個数
𝑛
完全マッチングの個数は𝑂∗ 2 で求めることが可能 2
1
2
0
3
5
4
[7] Andreas Björklund: Counting perfect matchings as fast as Ryser. SODA 2012
77
78. おまけ: 完全マッチングの個数
𝑛
完全マッチングの個数は𝑂∗ 2 で求めることが可能 2
1
2
0
3
5
4
[7] Andreas Björklund: Counting perfect matchings as fast as Ryser. SODA 2012
78
84. おまけ: Color Coding
k-Cycle
グラフに長さ𝑘の単純な閉路が含まれるか判定し
たい
𝑘 = 𝑛のときハミルトン閉路問題
ナイーブな解法: 𝑂 𝑛𝑘
FPT: 𝑂 2𝑒 𝑘 𝑚 で解ける
3
𝑘
余談: 現在最速は2 4
84
86. おまけ: Color Coding
頂点をランダムに𝑘色で塗り,各色をちょうど一度ず
つ通る閉路があるか調べる
これは単純なDPで𝑂 2 𝑘 𝑚 で解ける
ある長さ𝑘に閉路上の頂点が全て異なる色で塗られ
𝑘!
る確率は, 𝑘 𝑘 ≈ 2𝜋𝑘𝑒 −𝑘
𝑒 𝑘 回繰り返せば十分な確率で正しく求まる
86
88. おまけ: Bandwidth
ナイーブな解法: 𝑛!
とても賢い動的計画法を用いると5 𝑛 で解ける
k以下の解があるかを判定して二分探索する
[8] Marek Cygan, Marcin Pilipczuk: Even Faster Exact Bandwidth. ACM Transactions on
Algorithms 8(1) (2012)
88
89. おまけ: Bandwidth
1~𝑛を𝑘 + 1個ずつに区切る
1 2 3 4 5 6 7 8 9
頂点をどの区間に割り当てるか全通り試す
隣接する頂点は,同じ区間か隣の区間にしか入れ
𝑛
ないので高々3 通り
1 → 𝑘 + 2 → ⋯ → 2 → 𝑘 + 3 → ⋯ という順に頂点を
置いていく
89
91. おまけ: Cut & Count
グリッドグラフ上のシュタイナー木問題
𝑤
幅wに対して𝑐 で解きたい
t
t
t
91
92. おまけ: Cut & Count
グリッドグラフ上のシュタイナー木問題
𝑤
幅wに対して𝑐 で解きたい
t
t
t
92
93. おまけ: Cut & Count
グリッドグラフ上のシュタイナー木問題
𝑤
幅wに対して𝑐 で解きたい
ナイーブにやると,どことどこがつながっているか
𝑤
の情報が必要→𝑤 とかになってしまう
Cut & Count
包除原理的なキャンセリング手法を用いる
[9] Marek Cygan et al.: Solving Connectivity Problems Parameterized by Treewidth in Single
Exponential Time. FOCS 2011
93
94. おまけ: Cut & Count
連結な解を求めるのではなく,解とその頂点を二つ
のバッグに分割する方法のペアの総数を数える
ただし,ある頂点はバッグ1に必ず入れる
連結ならば分け方は一通り
非連結ならば分け方は偶数通り
0 0
94
95. おまけ: Cut & Count
連結な解を求めるのではなく,解とその頂点を二つ
のバッグに分割する方法のペアの総数を数える
ただし,ある頂点はバッグ1に必ず入れる
連結ならば分け方は一通り
非連結ならば分け方は偶数通り
解が奇数個ならば,正しく求まる
偶数個ある場合は,ランダムに重み付けすると十
分な確率で奇数にできる (Isolation Lemma)
95
98. おまけ: Iterative Compression
頂点{𝑣1 , … , 𝑣 𝑖−1 }からなるグラフ𝐺 𝑖−1 に対する解𝐹𝑖−1
から頂点𝑣 𝑖 を追加したグラフ𝐺 𝑖 に対する解𝐹𝑖 を構築す
る
𝐹 𝑖−1 ∪ 𝑣 𝑖 の大きさは高々𝑘 + 1で,これを𝐺 𝑖 から
取り除くと残りは木になる
つまり,木幅が小さい
• Cut & Countを用いると3 𝑘 時間でサイズ𝑘の解が求まる
𝐺𝑖 𝐺 𝑖−1
𝑣𝑖 𝐹𝑖−1 木
98