指数時間アルゴリズムの最先端

5,299 views

Published on

Published in: Education
0 Comments
19 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,299
On SlideShare
0
From Embeds
0
Number of Embeds
69
Actions
Shares
0
Downloads
51
Comments
0
Likes
19
Embeds 0
No embeds

No notes for slide

指数時間アルゴリズムの最先端

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

×