More Related Content Similar to 指数時間アルゴリズムの最先端 Similar to 指数時間アルゴリズムの最先端 (20) 指数時間アルゴリズムの最先端2. 自己紹介
TopCoder: ◎wata
TCO2010Marathon優勝など Twitter: @wata_orz
東京大学情報理工学系研究科コンピュータ科学専攻
理論計算機科学 (アルゴリズムの理論的な解析とか)
プログラミングコンテストチャレンジブック
第二版好評発売中!
PFIでは2011年夏インターン,その後アルバイト
2
4. 指数時間アルゴリズム
指数時間アルゴリズムとは
NP困難問題を指数時間かけて厳密に解く
計算量をちゃんと解析
近年盛んに研究され始めた
アルゴリズムも証明もシンプルなのが多い
入門編
情報オリンピック春合宿講義
http://www.slideshare.net/wata_orz/ss-12131479
今日はキャンセリングを中心に最先端のアルゴリズ
ムを紹介
4
5. キャンセリング
欲しいものを含む集合から,いらないものをうまいこ
と打ち消すことにより,欲しいものだけを残す手法
近年の指数時間アルゴリズムでのブレークスルーは
大体この手法
彩色数を𝑂 2
𝑛
3
ハミルトン閉路を𝑂2 𝑛∗ 4
∗ 𝑤
連結制約のある様々な問題を𝑂 𝑐
∗
指定された𝑘点を通る最小単純閉路を𝑂 2𝑘
𝑛
完全マッチングの個数を𝑂
∗ 2 2
5
6. 内容一覧
包除原理
ハミルトンパス,彩色数,シュタイナー木
完全マッチングの個数
偶奇で打ち消す
完全マッチング(多項式時間)
ハミルトン閉路,𝑘点通る最小単純閉路
6
7. 包除原理
𝐴∪ 𝐵∪ 𝐶 = 𝐴 + 𝐵 + 𝐶 − 𝐴∩ 𝐵 − 𝐵∩ 𝐶 −
𝐶 ∩ 𝐴 + |𝐴 ∩ 𝐵 ∩ 𝐶|
𝐴
𝐵 𝐶
7
8. 包除原理
𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇) , 𝑔 𝑆 = −1 𝑆 −|𝑇| 𝑓(𝑇)
𝑇⊆𝑆
こっちの方が使いやすい
𝑔 𝑆 = 𝑖∉𝑆 𝐴 𝑖 とおけば先の式に
𝑔 𝑆 = −1 𝑆 −|𝑇|
𝑇⊆𝑆 𝑋⊆𝑇 𝑔(𝑋)
𝑆− 𝑇
= 𝑋⊆𝑆 𝑋⊆𝑇⊆𝑆 −1 𝑔(𝑋)
= 𝑔(𝑆)
8
9. 包除原理
𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇) , 𝑔 𝑆 = 𝑇⊆𝑆 −1 𝑆 −|𝑇| 𝑓(𝑇)
𝑔を計算したいが,直接は難しい時に,その和𝑓を
計算することが出来れば2 𝑛 回𝑓を計算することで𝑔
が求まる
𝑔 → 𝑓: ゼータ変換,𝑓 → 𝑔: メビウス変換
• フーリエ・逆フーリエみたいな感じ
9
13. ハミルトンパス
長さ𝑛 − 1のパスを求めるのは簡単
同じ頂点を通っても良いなら,現在の長さとどこに
いるかしか覚える必要がない
1
2
0
3
5
4
13
14. ハミルトンパス
𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇) , 𝑔 𝑆 = 𝑇⊆𝑆 −1 𝑆 −|𝑇| 𝑓(𝑇)
𝑔 𝑆 ≔ 𝑆のみを通り,かつ𝑆を全て通る長さ𝑛 − 1の
パスの個数
𝑔(𝑉) := ハミルトンパスの個数
𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇)
𝑆のみを通る長さ𝑛 − 1のパスの個数
𝑆のみを通るパス 𝑆 𝑇 実際に通ったのは𝑇
14
15. ハミルトンパス
𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇) , 𝑔 𝑆 = 𝑇⊆𝑆 −1 𝑆 −|𝑇| 𝑓(𝑇)
𝑔 𝑆 ≔ 𝑆のみを通り,かつ𝑆を全て通る長さ𝑛 − 1の
パスの個数
𝑔(𝑉) := ハミルトンパスの個数
𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇)
𝑆のみを通る長さ𝑛 − 1のパスの個数
𝑂 2 𝑛 𝑛𝑚 time, 𝑂(𝑛) space
𝑛 𝑛
動的計画法だと, 𝑂 2 𝑚 time, 𝑂(2 𝑛) space
15
16. 除原理
𝑆を全て通るパスの総数 =
(𝑆 ∖ 𝑣 を全て通り,𝑣はどちらでもよいパスの総数)
− (𝑆 ∖ 𝑣 を全て通り,𝑣は通らないパスの総数)
再帰的に展開していくと,先の式が得られる
引き算しかないので,コンテスト界では除原理と呼ば
れている
こっちのほうが多項式部分が良くなることが時々
ある
16
19. 彩色数 [1]
グラフ𝐺 = (𝑉, 𝐸)が𝑘彩色可能⇔𝑉を𝑘個の独立集合
で被覆できる
独立集合から𝑘個選んで𝑉を覆う方法の総数を数
えることが出来れば良い (もちろん難しい)
独立集合を𝑘個選ぶ方法の総数は簡単
𝑘
独立集合の個数
包除原理を用いて全ての頂点を覆っているのだけ取
り出そう!
[1] A. Björklund and T. Husfeldt, “Inclusion--Exclusion Algorithms for Counting Set Partitions,” FOCS 2006.
19
20. 彩色数 [1]
𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇) , 𝑔 𝑆 = 𝑇⊆𝑆 −1 𝑆 −|𝑇| 𝑓(𝑇)
𝑔 𝑆 ≔ 𝑆の部分集合で独立なもの𝑘個選び,Sを覆う
方法の総数
𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇)
𝑆の部分集合で独立なもの𝑘個選ぶ方法の総数
𝑆 𝑇 実際に覆ったのは𝑇
𝑆の部分集合から
独立なのを𝑘個
20
21. 彩色数 [1]
𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇) , 𝑔 𝑆 = 𝑇⊆𝑆 −1 𝑆 −|𝑇| 𝑓(𝑇)
𝑔 𝑆 ≔ 𝑆の部分集合で独立なもの𝑘個選び,Sを覆う
方法の総数
𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇)
𝑆の部分集合で独立なもの𝑘個選ぶ方法の総数
𝐼 𝑆 : 𝑆の部分集合で独立なものの個数とすると,
𝑓 𝑆 = 𝐼 𝑆 𝑘
𝐼 𝑆 = 𝐼 𝑆∖ 𝑣 + 𝐼 𝑆 ∖ 𝑁 𝑣 という漸化式から
𝑂(2 𝑛 𝑛)時間で全ての𝑆 ⊆ 𝑉について計算可能
21
22. 彩色数 [1]
𝑂 2 𝑛 𝑛 time, 𝑂(2 𝑛 ) space
動的計画法だと 𝑂 3
𝑛 time かかる
実は,彩色方法の総数を求めることも可能
𝑔 𝑆 ≔ 独立集合から𝑘個,サイズの総和が𝑛と
なるように選んでSをちょうど覆う方法の総数
𝑓(𝑆)の計算はDPをすればよい
22
25. シュタイナー木 [2]
シュタイナー木を求めるのは難しい
全てのターミナルを通り,木でないといけない
木という条件は外して問題ない
同じ辺を複数回使ったり,閉路を作ることでよくな
らない
全てのターミナルを通るという条件は包除原理を用
いて外すことが出来る
[2] J. Nederlof, “Fast Polynomial-Space Algorithms Using Möbius Inversion: Improving on Steiner Tree
and Related Problems,” ICALP 2009.
25
27. シュタイナー木 [2]
𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇) , 𝑔 𝑆 = 𝑇⊆𝑆 −1 𝑆 −|𝑇| 𝑓(𝑇)
𝑔 𝑆 ≔ 𝑆のみを通り,かつ𝑆を全て通る大きさ𝑡の分
岐路の個数
𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇)
𝑆のみを通る大きさ𝑡の分岐路の個数
𝑂(2 𝑘 𝑚𝑛2 ) time 𝑂 𝑛2 space
動的計画法だと𝑂 3 𝑘 𝑛 time 𝑂 2 𝑘 𝑛 space
27
28. 完全マッチングの個数
𝑛
完全マッチング:端点を共有しない 本の辺集合2
1
2
0
3
5
4
28
29. 完全マッチングの個数
𝑛
完全マッチング:端点を共有しない 本の辺集合2
1
2
0
3
5
4
29
30. 完全マッチングの個数
𝑛
完全マッチング:端点を共有しない 本の辺集合2
1
2
0
3
5
4
30
31. 完全マッチングの個数
𝑛
完全マッチング:端点を共有しない 本の辺集合2
1
2
0
3
5
4
31
32. 完全マッチングの個数
𝑛
完全マッチング:端点を共有しない 本の辺集合2
1
2
0
3
5
4
32
39. 行列式を用いた完全マッチング
det 𝐴 = 𝜎∈𝑆 𝑛 sgn 𝜎 𝑖 𝐴 𝑖,𝜎(𝑖)
3
ガウスの消去法で𝑂 𝑛 で計算できる
グラフ𝐺 = 𝑉, 𝐸 に対し,以下のような行列を考える
𝑥 𝑢,𝑣 𝑢, 𝑣 ∈ 𝐸
𝐴 𝑢,𝑣 =
0( 𝑢, 𝑣 ∉ 𝐸)
𝑥 𝑢,𝑣 = −𝑥 𝑣,𝑢
det 𝐴)は𝑥の多項式で,
(
det 𝐴 ≠ 0 ⇔ 𝐺に完全マッチングが存在
39
40. 行列式を用いた完全マッチング
det 𝐴 = 𝜎∈𝑆 𝑛 sgn 𝜎 𝑖 𝐴 𝑖,𝜎(𝑖)
これは閉路カバー上での和と考えることができる
det 𝐴 = 𝐶∈𝑐𝑐(𝐺) sgn(𝐶) 𝑒∈𝐶 𝑥𝑒
𝜎 1 = 2, 𝜎 2 = 4, 𝜎 3 = 5, 𝜎 4 = 6, 𝜎 5 = 3, 𝜎 6 = 1
1 2 5
6 4 3
40
44. 行列式を用いたハミルトン閉路 [4]
無向グラフ𝐺 = 𝑉, 𝐸 に対し,以下のような行列を考
える
𝑥 𝑢,𝑣 𝑢, 𝑣 ∈ 𝐸
𝐴 𝑢,𝑣 =
0( 𝑢, 𝑣 ∉ 𝐸)
𝑢, 𝑣 ≠ 1に対して,𝑥 𝑢,𝑣 = 𝑥 𝑣,𝑢
𝑘
行列の要素はGF(2 ) とする
• 二倍すると0になる体
頂点1の周りだけ非対称にしたことで,頂点1を含む
閉路は打ち消されなくなる
[4] A. Björklund, “Determinant Sums for Undirected Hamiltonicity,” FOCS 2010.
44
47. 行列式を用いたハミルトン閉路 [4]
長さ2の閉路が悪さをしている
向きを反転できない
辺に𝑛種類のラベルを張り,包除原理を用いて全て
のラベルを用いる閉路カバーについて和を取れば,
長さ2の閉路も向きを反転することで打ち消しあうよう
になる
𝜎 1 = 2, 𝜎 2 = 1 𝜎 1 = 2, 𝜎 2 = 1
𝑎 𝑎
1 2 1 2
𝑏 𝑏
47
53. 𝑘点通る最小単純閉路 [5]
先の行列式を用いたハミルトン閉路と似たことをする
必ず通らなければいけない点から一つ選び𝑠とする
各辺𝑢𝑣に𝑠以外で対称な変数𝑥 𝑢,𝑣 ∈ 𝐺𝐹 2 𝑘 を割り当
て,ある長さ𝑖の閉路集合𝑪 𝒊 上での和 𝐶∈𝑪 𝒊 𝑒∈𝐶 𝑥 𝑒
の値を評価する
この値が非零であることと,指定された点を通る長さ𝑖
の単純閉路が存在することが同値で,かつ𝑪 𝒊 上での
和が高速に計算できるような集合𝑪 𝒊 を設計したい
[5] A. Björklund, T. Husfeldt, and N. Taslaman, “Shortest cycle through specified elements,” SODA 2012.
53
54. 𝑘点通る最小単純閉路 [5]
𝑪 𝒊 ≔ 長さ𝑖の単純とは限らない閉路で指定された点
を全て通るもの,とする
単純でない閉路は,向きを反転させることで打ち消し
あう
単純でない閉路
54
56. 𝑘点通る最小単純閉路 [5]
𝐶∈𝑪 𝒊 𝑒∈𝐶 𝑥𝑒
𝑪 𝒊 ≔ 長さ𝑖の単純とは限らない閉路で指定された点
を全て通り,Uターンしないもの
これはDPで𝑂(2 𝑘 𝑚𝑖)で計算できる
dp[長さ][通った点集合][直前の点][現在地]
𝑘
𝑖を0から𝑛まで順に増やすと全体で𝑂(2 𝑛𝑚)
56
57. その他のキャンセリングによるアルゴリズム
畳み込み (FFTみたいなの) [6]
群環を用いてキャンセリング [7]
非連結性を用いた偶奇でキャンセリング [8]
他にも色々
[6] A. Björklund, T. Husfeldt, P. Kaski, and M. Koivisto, “Fourier meets möbius: fast subset
convolution,” STOC 2007.
[7] I. Koutis and R. Williams, “Limits and Applications of Group Algebras for Parameterized
Problems,” ICALP 2009.
[8] M. Cygan et al. “Solving Connectivity Problems Parameterized by Treewidth in Single Exponential
Time,” FOCS 2011.
57