Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
指数時間アルゴリズムの最先端         岩田 陽一    PFIセミナー (2012/03/29)
自己紹介 TopCoder: ◎wata  TCO2010Marathon優勝など   Twitter: @wata_orz 東京大学情報理工学系研究科コンピュータ科学専攻  理論計算機科学 (アルゴリズムの理論的な解析とか) プログラミングコ...
本日の内容 NP困難問題を解くためのアルゴリズムを扱います                           𝑂𝑃𝑇 𝐼 ≤ 𝐴 𝐼 ≤ 𝑐𝑂𝑃𝑇(𝐼)                           近似アルゴリズムヒューリスティック...
指数時間アルゴリズム 指数時間アルゴリズムとは   NP困難問題を指数時間かけて厳密に解く   計算量をちゃんと解析   近年盛んに研究され始めた   アルゴリズムも証明もシンプルなのが多い 入門編   情報オリンピック春合宿講義...
キャンセリング 欲しいものを含む集合から,いらないものをうまいこ  と打ち消すことにより,欲しいものだけを残す手法 近年の指数時間アルゴリズムでのブレークスルーは  大体この手法   彩色数を𝑂 2            𝑛       ...
内容一覧 包除原理   ハミルトンパス,彩色数,シュタイナー木   完全マッチングの個数 偶奇で打ち消す   完全マッチング(多項式時間)   ハミルトン閉路,𝑘点通る最小単純閉路                          6
包除原理 𝐴∪ 𝐵∪ 𝐶 = 𝐴 + 𝐵 + 𝐶 − 𝐴∩ 𝐵 − 𝐵∩ 𝐶 − ⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡ 𝐶 ∩ 𝐴 + |𝐴 ∩ 𝐵 ∩ 𝐶|                        𝐴       ...
包除原理 𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇) , 𝑔 𝑆 =                −1    𝑆 −|𝑇|   𝑓(𝑇)                                  𝑇⊆𝑆   こっちの方が使いやすい     𝑔...
包除原理 𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇) , 𝑔 𝑆 = 𝑇⊆𝑆 −1 𝑆 −|𝑇| 𝑓(𝑇)   𝑔を計算したいが,直接は難しい時に,その和𝑓を    計算することが出来れば2 𝑛 回𝑓を計算することで𝑔    が求まる   𝑔 → 𝑓:...
ハミルトンパス 0から5へ,全ての頂点をちょうど一度ずつ通って移動  できるか?             1                     2     0                         3         5   ...
ハミルトンパス 0から5へ,全ての頂点をちょうど一度ずつ通って移動  できるか?             1                     2     0                         3         5   ...
ハミルトンパス ハミルトンパスを求めるのは難しい  同じ頂点を通らないためには,すでに訪れたか覚  えていないといけない             1                     2     0                  ...
ハミルトンパス 長さ𝑛 − 1のパスを求めるのは簡単  同じ頂点を通っても良いなら,現在の長さとどこに  いるかしか覚える必要がない             1                     2     0            ...
ハミルトンパス 𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇) , 𝑔 𝑆 = 𝑇⊆𝑆 −1 𝑆 −|𝑇| 𝑓(𝑇) 𝑔 𝑆 ≔ 𝑆のみを通り,かつ𝑆を全て通る長さ𝑛 − 1の パスの個数   𝑔(𝑉) := ハミルトンパスの個数 𝑓 𝑆 = 𝑇⊆𝑆 𝑔...
ハミルトンパス 𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇) , 𝑔 𝑆 = 𝑇⊆𝑆 −1 𝑆 −|𝑇| 𝑓(𝑇) 𝑔 𝑆 ≔ 𝑆のみを通り,かつ𝑆を全て通る長さ𝑛 − 1の パスの個数   𝑔(𝑉) := ハミルトンパスの個数 𝑓 𝑆 = 𝑇⊆𝑆 𝑔...
除原理 𝑆を全て通るパスの総数 =  (𝑆 ∖ 𝑣 を全て通り,𝑣はどちらでもよいパスの総数)  − (𝑆 ∖ 𝑣 を全て通り,𝑣は通らないパスの総数) 再帰的に展開していくと,先の式が得られる 引き算しかないので,コンテスト界では除原理...
彩色数 隣接する頂点が異なる色となるように彩色するため  に必要な最小色数を求める              1                      2      0                          3        ...
彩色数 隣接する頂点が異なる色となるように彩色するため  に必要な最小色数を求める              1                      2      0                          3        ...
彩色数 [1]   グラフ𝐺 = (𝑉, 𝐸)が𝑘彩色可能⇔𝑉を𝑘個の独立集合    で被覆できる     独立集合から𝑘個選んで𝑉を覆う方法の総数を数      えることが出来れば良い (もちろん難しい)   独立集合を𝑘個選ぶ方法の総...
彩色数 [1] 𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇) , 𝑔 𝑆 = 𝑇⊆𝑆 −1 𝑆 −|𝑇| 𝑓(𝑇)⁡ 𝑔 𝑆 ≔ 𝑆の部分集合で独立なもの𝑘個選び,Sを覆う 方法の総数 𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇)   𝑆の部分集合で独立なもの𝑘個選ぶ...
彩色数 [1] 𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇) , 𝑔 𝑆 = 𝑇⊆𝑆 −1 𝑆 −|𝑇| 𝑓(𝑇)⁡ 𝑔 𝑆 ≔ 𝑆の部分集合で独立なもの𝑘個選び,Sを覆う 方法の総数 𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇)   𝑆の部分集合で独立なもの𝑘個選ぶ...
彩色数 [1] 𝑂 2 𝑛 𝑛 time, 𝑂(2 𝑛 ) space   動的計画法だと 𝑂 3                           𝑛 time かかる 実は,彩色方法の総数を求めることも可能   𝑔 𝑆 ≔ 独立集...
シュタイナー木 辺の部分集合であって,与えられた𝑘点のターミナル  を連結にする最小のものを求める                             23
シュタイナー木 辺の部分集合であって,与えられた𝑘点のターミナル  を連結にする最小のものを求める                             24
シュタイナー木 [2] シュタイナー木を求めるのは難しい   全てのターミナルを通り,木でないといけない 木という条件は外して問題ない      同じ辺を複数回使ったり,閉路を作ることでよくな         らない 全てのターミナル...
シュタイナー木 [2] 木という条件を外したもの(分岐路)の個数を数える 𝑑𝑝 𝑣 𝑖 ≔ 𝑣を根とする大きさ𝑖の分岐路の個数   𝑑𝑝[𝑣][𝑖] = 𝑢∈𝑁 𝑣 𝑗 𝑑𝑝 𝑣 𝑗 × 𝑑𝑝 𝑢 [𝑖 − 𝑗 − 1]         ...
シュタイナー木 [2] 𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇) , 𝑔 𝑆 = 𝑇⊆𝑆 −1 𝑆 −|𝑇| 𝑓(𝑇)⁡ 𝑔 𝑆 ≔ 𝑆のみを通り,かつ𝑆を全て通る大きさ𝑡の分 岐路の個数 𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇)   𝑆のみを通る大きさ𝑡の分...
完全マッチングの個数                        𝑛 完全マッチング:端点を共有しない 本の辺集合2            1                    2    0                       ...
完全マッチングの個数                        𝑛 完全マッチング:端点を共有しない 本の辺集合2            1                    2    0                       ...
完全マッチングの個数                        𝑛 完全マッチング:端点を共有しない 本の辺集合2            1                    2    0                       ...
完全マッチングの個数                        𝑛 完全マッチング:端点を共有しない 本の辺集合2            1                    2    0                       ...
完全マッチングの個数                        𝑛 完全マッチング:端点を共有しない 本の辺集合2            1                    2    0                       ...
完全マッチングの個数 [3] 頂点を二つ切り離し,ラベルaの付いた辺を張る                       1                                                2        0  ...
完全マッチングの個数 [3] マッチングにラベルaのついた辺25を使う→元のグラ  フで辺05,12を使う                              2           ※ラベル無しの辺と 1         ラベルaの辺...
完全マッチングの個数 [3] もとのグラフでの完全マッチングの個数=新しいグラ  フでラベルaをちょうど一回使う完全マッチングの個数                         2 1     1+a       1+a         ...
完全マッチングの個数 [3] もとのグラフでの完全マッチングの個数=新しいグラ  フでラベルabをちょうど一回ずつ使う完全マッチング  の個数                              2 1                 ...
完全マッチングの個数 [3] もとのグラフでの完全マッチングの個数=新しいグラ  フでラベルabcをちょうど一回ずつ使う完全マッチング  の個数 → これは包除原理で2 𝐿 で求まる (𝐿 = 𝑛 )                     ...
完全マッチングの個数 [3] ラベル集合𝐿をちょうど一回ずつ使う方法の総数=各ラベルを一回以上使い,合計|𝐿|回使う方法の総数=(ラベル𝑎 ∈ 𝐿を0回以上使い,合計 𝐿 回使う方法)− (ラベル𝑎 ∈ 𝐿を使わず,合計|L|回使う方法)  ...
行列式を用いた完全マッチング det 𝐴 =         𝜎∈𝑆 𝑛 sgn   𝜎    𝑖   𝐴 𝑖,𝜎(𝑖)                                  3   ガウスの消去法で𝑂             ...
行列式を用いた完全マッチング det 𝐴 =     𝜎∈𝑆 𝑛 sgn    𝜎       𝑖   𝐴 𝑖,𝜎(𝑖)   これは閉路カバー上での和と考えることができる det 𝐴 =     𝐶∈𝑐𝑐(𝐺) sgn(𝐶)       ...
行列式を用いた完全マッチング 閉路カバーに奇数長の閉路があると,向きを反転さ  せると符号も反転して打ち消しあう   𝜎 1 = 2, 𝜎 2 = 3, 𝜎 3 = 1   𝜎 1 = 3, 𝜎 2 = 1, 𝜎 3 = 2        1...
行列式を用いた完全マッチング 長さ2の閉路は向きを反転しても同じなので,完全  マッチングに対応する閉路カバーは打ち消されない   𝜎 1 = 2, 𝜎 2 = 1   𝜎 1 = 2, 𝜎 2 = 1   1            2   ...
行列式を用いた完全マッチング 変数のままだと行列式が効率良く計算できないが,  ランダムに𝑥に値を入れて計算すれば良い   体𝐹次数𝑑の非零多変数多項式に,ランダムに値                        𝑑    を入れた時,た...
行列式を用いたハミルトン閉路 [4] 無向グラフ𝐺 =                   𝑉, 𝐸 に対し,以下のような行列を考  える                   𝑥 𝑢,𝑣 ⁡ 𝑢, 𝑣 ∈ 𝐸      𝐴 𝑢,𝑣   = ...
行列式を用いたハミルトン閉路 [4] 閉路カバーに頂点1を通らない長さ3以上の閉路があ  ると,向きを反転させることで打ち消しあう   𝜎 2 = 3, 𝜎 3 = 4, 𝜎 4 = 2   𝜎 2 = 4, 𝜎 3 = 2, 𝜎 4 = 3...
行列式を用いたハミルトン閉路 [4] つまり,頂点1を含む閉路+マッチングからなる閉路カ  バーだけが残る   マッチング部分がなければハミルトン閉路        1                              46
行列式を用いたハミルトン閉路 [4] 長さ2の閉路が悪さをしている   向きを反転できない 辺に𝑛種類のラベルを張り,包除原理を用いて全て  のラベルを用いる閉路カバーについて和を取れば,  長さ2の閉路も向きを反転することで打ち消しあう...
行列式を用いたハミルトン閉路 [4] ラベルは𝑛種類 → 包除原理に𝑂 2 𝑛 → 計算量が良  くなっていない (´・ω・`) 実は頂点の一部をラベルとして用いることができる! 簡単なニ部グラフの場合だけ紹介              ...
行列式を用いたハミルトン閉路 [4] 片側の頂点をラベルにしてしまう a   b   c   d   e               1                                       a,b           ...
行列式を用いたハミルトン閉路 [4] 変換後のグラフでラベルを全部使うハミルトン閉路を  求めれば良い これはラベルを全部使う閉路カバーについて和を取                         𝑛             𝑛 ればよく...
𝑘点通る最小単純閉路 無向グラフで,指定された𝑘点を通る最小の単純な閉  路を求める             1                     2     0                         3         5 ...
𝑘点通る最小単純閉路 無向グラフで,指定された𝑘点を通る最小の単純な閉  路を求める             1                     2     0                         3         5 ...
𝑘点通る最小単純閉路 [5]  先の行列式を用いたハミルトン閉路と似たことをする  必ず通らなければいけない点から一つ選び𝑠とする  各辺𝑢𝑣に𝑠以外で対称な変数𝑥 𝑢,𝑣 ∈ 𝐺𝐹 2 𝑘 を割り当   て,ある長さ𝑖の閉路集合𝑪 𝒊 ...
𝑘点通る最小単純閉路 [5] 𝑪 𝒊 ≔ 長さ𝑖の単純とは限らない閉路で指定された点 を全て通るもの,とする 単純でない閉路は,向きを反転させることで打ち消し  あう単純でない閉路                              ...
𝑘点通る最小単純閉路 [5] 再び長さ2の閉路が悪さをする   反転できない! 𝑪 𝒊 ≔ 長さ𝑖の単純とは限らない閉路で指定された点  を全て通り,Uターンしないものすればよい                              ...
𝑘点通る最小単純閉路 [5]   𝐶∈𝑪 𝒊   𝑒∈𝐶   𝑥𝑒 𝑪 𝒊 ≔ 長さ𝑖の単純とは限らない閉路で指定された点  を全て通り,Uターンしないもの これはDPで𝑂(2 𝑘 𝑚𝑖)で計算できる   dp[長さ][通った点集合][...
その他のキャンセリングによるアルゴリズム  畳み込み (FFTみたいなの) [6]  群環を用いてキャンセリング [7]  非連結性を用いた偶奇でキャンセリング [8]       他にも色々[6] A. Björklund, T. Hu...
Upcoming SlideShare
Loading in …5
×

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

7,502 views

Published on

Published in: Education
  • Be the first to comment

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

  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

×