SlideShare a Scribd company logo
1 of 98
Download to read offline
指数時間アルゴリズム入門



   岩田 陽一 (東京大学 M1)
     JOI 春合宿 2012
自己紹介


 TopCoder: ◎wata
  TCO2010Marathon優勝など   Twitter: @wata_orz



 東京大学情報理工学系研究科コンピュータ科学専攻
  理論計算機科学 (アルゴリズムの理論的な解析とか)



        プログラミングコンテスト
        チャレンジブック


                                             2
本日の内容
 NP困難問題を解くためのアルゴリズムを扱います

                           𝑂𝑃𝑇 𝐼 ≤ 𝐴 𝐼 ≤ 𝑐𝑂𝑃𝑇(𝐼)

                           近似アルゴリズム


ヒューリスティック                                          𝑓 𝑘 𝑝 𝑛

                                           FPT アルゴリズム

  max⁡ 𝑐𝑥|𝐴𝑥 ≤ 𝑏, 𝑥: 整数}
     {
                                                    𝑂∗ 𝑐 𝑛
       整数計画                          厳密指数時間アルゴリズム


                                                             3
効率的な指数時間アルゴリズム
 何の指数?
   頂点数? 辺の数? それとも…
   • 2 𝐸 のアルゴリズムはまず役に立たないが,2 𝑉 のアル
     ゴリズムならコンテストでもよく出題されている
   • 入力サイズとは別のパラメータに関してのみ指数である
     ような場合もある (FPTアルゴリズム)
 指数の底は?
              𝑛
 2
      𝑛 と2 では解けるサイズが倍違う
             2
       100
   1.2    < 1004
 コンテストに出うるものに絞って解説

                                     4
内容一覧
 何の指数?
    動的計画法,準指数時間,グラフの「幅」

 指数の底は?
    半分全列挙,探索アルゴリズム

 FPTアルゴリズム
    FPTとは,有界探索木,カーネル

 包除原理
    数え上げ,畳込み

 余談&おまけ
    Theoretical part

                           5
何の指数?
動的計画法,準指数時間,グラフの「幅」




                      6
何の指数? 巡回セールスマン問題
 全ての頂点をちょうど一度ずつ通る最小の閉路

                1           2

        3                               2
                        1
                                                1
    0                   1           2
            3                                       3
    2
                    1
                                            3
        5
                                4
                    2



                                                        7
何の指数? 巡回セールスマン問題
 全ての頂点をちょうど一度ずつ通る最小の閉路

                1           2

        3                               2               コスト: 10
                        1
                                                1
    0                   1           2
            3                                       3
    2
                    1
                                            3
        5
                                4
                    2



                                                                  8
何の指数? 巡回セールスマン問題
 ナイーブな解法
   全ての方法を試して最小を求める

   𝑂(𝑛!)
            𝑛   𝑛
   • 𝑛! ≈   𝑒
                    = 𝑒 𝑛 log   𝑛−𝑛

   • 𝑛 ≤ 10 程度までなら解ける
 動的計画法
   すでに訪れた頂点の訪問順は無視できる
       𝑛 2
   𝑂 2 ⁡𝑛
   • 𝑛 ≤ 20 程度までなら解ける


                                      9
動的計画法
 𝑑𝑝[𝑆][𝑣]: 頂点0からスタートして,頂点集合𝑆をすで
 に訪れ,現在頂点𝑣にいる時の最小コスト


                               𝑢

                      ?                    𝑣


                      𝑆∖ 𝑣             𝑆


  𝑑𝑝[𝑆][𝑣] = min 𝑑𝑝 𝑆 ∖ 𝑣    𝑢 + 𝑑 𝑢, 𝑣 ⁡|⁡𝑢 ∈ 𝑆 ∖ 𝑣

                                                       10
余談
 2010年,特殊ケースである無向ハミルトン閉路問題
          3
 を𝑂 2 𝑛 時間で解くアルゴリズム[1]が開発された
     ∗    4

  ただし,多項式部分が大きく実用的ではない

 一方,巡回セールスマン問題に対しては,先の動的
  計画法よりも計算量的に優れたアルゴリズムは知ら
  れていない




     [1] Andreas Björklund: Determinant Sums for Undirected Hamiltonicity. FOCS 2010


                                                                                       11
何の指数? 最大クリーク問題
 頂点の部分集合𝑆で,𝑆のどの二点も辺で結ばれて
  いるような最大のものを求める
            1
                    2

    0
                        3


        5
                4


                            12
何の指数? 最大クリーク問題
 頂点の部分集合𝑆で,𝑆のどの二点も辺で結ばれて
  いるような最大のものを求める
            1
                    2

    0
                        3


        5
                4


                            13
何の指数? 最大クリーク問題
 ナイーブな解法
   全ての頂点の部分集合を試す
       𝑛
   𝑂 2 𝑛
  • 𝑛 ≤ 20 くらいまで解ける
 辺の数に対しては?
  実は𝑂   2   2𝑚 ⁡𝑛   で解ける
  • 𝑛, 𝑚 ≤ 200 くらいまで解ける




                            14
何の指数? 最大クリーク問題
 𝑂 2   2𝑚 ⁡𝑛   のアルゴリズム
   全ての頂点の次数が2𝑚以上ならば,𝑛 ≤ 2𝑚
   なので全通り試せば良い
   次数     2𝑚未満の点𝑣を一つ選ぶ
    • 𝑣を含むクリークは𝑣の隣接点の部分集合を全て試せば
      𝑂 2 2𝑚 で求まる
    • 𝑣を含まないクリークは𝑣を除去して再帰的に求めれば
      良い
 このアルゴリズムは全てのクリークを調べている
   クリークの個数は高々2
                          2𝑚 個

                                  15
余談
 最大クリーク問題は辺の数に関して準指数時間で解
  けたが,他のグラフ最適化問題も解けるのか?
    実は解けないであろうと信じられている

 ETH (Exponential Time Hypothesis)
  3-SATを2
             𝑜 𝑛   時間で解くアルゴリズムは存在しない
     • 𝑃 ≠ 𝑁𝑃予想の強い版
  ETHの元で,様々なグラフ最適化問題が辺の数𝑚
         𝑜(𝑚)
   について2           時間で解けないことが証明可能




                                       16
何の指数? グラフの「幅」
 二次元の𝑤 × ℎのグリッドに,互いに隣接(8方向)しな
  いようにできるだけ多くの石を置く




                                 17
何の指数? グラフの「幅」
 二次元の𝑤 × ℎのグリッドに,互いに隣接(8方向)しな
  いようにできるだけ多くの石を置く




                                 18
何の指数? グラフの「幅」
 ナイーブな解法
   石の置き方を全通り試す
   • 𝑂 2 𝑤ℎ
 幅を活用した動的計画法
  一番上の行から順番に決めていったとき,残りを
  決めるために必要な情報は最後の𝑤 + 1マスのみ
   • 𝑂 2 𝑤 ⁡𝑤ℎ




                             19
幅を活用した動的計画法


ココより上の置き方は
残りの置き方に影響を
与えない
             ?
                 この範囲のみに着目



                 ココより下はまだ石を
                 置いていない




                              20
余談
 グラフの「幅」とは?
   様々な幅が存在する
     • pathwidth, treewidth, branchwidth, cliquewidth, etc
     • それぞれの厳密な定義はここでは行わない
  様々なグラフ最適化問題が,幅に関する指数時間
   で解ける (FPT)
  コンテストで登場するのは主にグリッドグラフ
     • pathwidthが小さい




                                                             21
幅が定数のグラフ
 外平面グラフ
   平面グラフで,全ての頂点が一つの面(外面)上に
    載っている
 幅が定数ならば多項式時間

              3       5
      1
                                  9
                          7
  0               4
                              8
          2           6

                                      22
指数の底は?
半分全列挙,探索アルゴリズム




                 23
指数の底は? 部分和問題
 𝑛個の数{𝑎 𝑖 }が与えられる.ここから幾つか選んで,
 その総和を𝑠にすることが出来るか?

   {𝑎 𝑖 } = {11, 8, 5, 13, 16, 9}
   s = 26
            Yes (8+5+13)
   s = 23
            No



                                    24
指数の底は? 部分和問題
 ナイーブな解法
   全ての部分集合を試す
   • 𝑂 2𝑛
  動的計画法
   • 𝑂 𝑛𝑠 , 擬多項式時間アルゴリズム
      – Sが小さければ効率的
 半分全列挙
   二つに分けてそれぞれ全通り列挙し併合
            𝑛
   • 𝑂 2   2


   • 𝑠が非常に大きくても,𝑛 ≤ 40 くらいまで解ける

                                  25
半分全列挙
                                           𝑛
 前半分で作れる和と後半分で作れる和をそれぞれ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
指数の底は? 最大独立集合問題
 頂点の部分集合𝑆で,𝑆のどの二点も辺で結ばれて
  いないような最大のものを求める
            1
                    2

    0
                        3


        5
                4


                            27
指数の底は? 最大独立集合問題
 頂点の部分集合𝑆で,𝑆のどの二点も辺で結ばれて
  いないような最大のものを求める
            1
                    2

    0
                        3


        5
                4


                            28
指数の底は? 最大独立集合問題
 ナイーブな解法
   全ての頂点の部分集合を試す
   • 𝑂 2 𝑛 ⁡𝑛
   • 𝑛 ≤ 20 くらいまで解ける
 探索アルゴリズム
   ある頂点を使うか使わないかで分岐していく

  辺で結ばれている二点を同時には選べないため,
    𝑛
   2 通り全てを試す必要はない
  計算量の解析が非常に難しい




                            29
探索アルゴリズム
 頂点𝑣を一つ選び,𝑣を使わないケースと使うケース
  に分岐する
   𝑣を使わない場合,𝑣を取り除く

   𝑣を使う場合,𝑣の隣接点も一緒に取り除かれる

            𝑣



    𝑣                𝑣




                             30
探索アルゴリズム
 最悪ケースは・・・?
   全部孤立点のとき,2
               𝑛




                   31
探索アルゴリズム
 分岐不要なケース
   次数1以下の点: 必ず使うとしてよい




      𝑣             𝑣


      𝑢             𝑢




                         32
探索アルゴリズムの計算量解析
 計算量は?
                   𝑛
   𝑛頂点の時の探索木の大きさが𝑐 で抑えられると
   する
     𝑣を使わない場合1点減る
    𝑐 𝑛 ≥ 𝑐 𝑛−1 + 𝑐 𝑛−3 が満たされれば良い
          𝑣を使う場合,少なくとも3点減る

 𝑂 1.466 𝑛 ⁡𝑛 が示せる
   40頂点くらいあっても大丈夫




                                     33
探索アルゴリズムの計算量解析
 もっと頑張ると…
  次数最大の頂点で分岐することにすれば,最大次
  数が2以下のグラフ(閉路orパス)は多項式時間で
  解けるので, 𝑐 𝑛 ≥ 𝑐 𝑛−1 + 𝑐 𝑛−4
          𝑛
  𝑂 1.381 ⁡𝑛 が示せる



 最悪ケースは・・・?
   よく分からない




                               34
余談
 現在計算量的に最もよい最大独立集合のアルゴリズ
  ムは𝑂∗ (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
余談
 SETH (Strong Exponential Time Hypothesis)
   SATを𝑂     2− 𝜖   𝑛   時間で解くアルゴリズムは存在
    しない
     • ETHの更に強い版
 SETHの仮定のもので,様々な問題に対して計算量の
  下界を証明できる
    下界と上界が一致する問題はあまりない
     • 帰着により問題サイズが大きくなるため




                                              36
FPTアルゴリズム
FPTとは,有界探索木,カーネル




                   37
FPTアルゴリズム
 FPTアルゴリズムとは?
    FPT: Fixed Parameter Tractable

    入力サイズとは独立なパラメータ𝑘に関してのみ指
     数時間のアルゴリズム
   • 計算量の例: 𝑂 2 𝑘 ⁡𝑛 など
   • パラメータの例: グラフの幅,解の大きさ,など




                                      38
FPT: 最小頂点被覆問題
 頂点の部分集合𝑆で,どの辺もその端点の少なくとも
  一方が𝑆に属しているような最小のものを求める
             1
                     2

     0
                         3


         5
                 4


                             39
FPT: 最小頂点被覆問題
 頂点の部分集合𝑆で,どの辺もその端点の少なくとも
  一方が𝑆に属しているような最小のものを求める
             1
                     2

     0
                         3


         5
                 4


                             40
FPT: 最小頂点被覆問題
 最大独立集合に帰着
   𝑆が頂点被覆⇔𝑉 ∖ 𝑆が独立集合
                    𝑛
   探索アルゴリズムを用いて𝑂 𝑐 で解ける

 𝑆 ≤ 𝑘の頂点被覆が存在するか判定
   ナイーブな解法
   • 全ての選び方を試す
   • 𝑂 𝑛 𝑘+1
  有界探索木
   • 𝑂 2 𝑘 𝑛 で解ける (FPT)
   • グラフが大きくてもあまり問題無い

                           41
有界探索木
 辺𝑒 = 𝑢, 𝑣 を一つ選び,𝑢を使うケースと𝑣を使う
  ケースに分岐する
   𝑒を被覆するためには,必ずどちらかは使う必要が
   ある
   𝑢を使う場合,𝑢と隣接する辺を取り除き,𝑘を1減ら
   す

      𝑢       𝑢        𝑢


      𝑣       𝑣        𝑣


                                 42
有界探索木
 毎回𝑘は1減るため,探索木の深さは高々𝑘
  計算量は𝑂            2 𝑘 ⁡𝑛

 最大独立集合の探索アルゴリズムのときと同様に,𝑘
  の底をもっと小さくすることが可能
    𝑂 1.466 𝑘 ⁡𝑛
  1000頂点のグラフから,サイズ30以下の頂点被覆
     を求めることが可能



                               43
有界探索木
 分岐不要なケース
   次数1以下の点: 除去して良い




      𝑣               𝑣


      𝑢               𝑢




                          44
有界探索木
 頂点𝑣を一つ選び,𝑣を使わないケースと使うケース
  に分岐する
   𝑣を使わない場合,𝑣の隣接点を全て使う

   𝑣を使う場合,𝑣と接続する辺を取り除く

            𝑣



    𝑣                𝑣




                             45
FPT: カーネル
 最大独立集合の探索アルゴリズムに加え,サイズ𝑘
  以下の解が欲しいので,以下のルールを追加できる

 分岐不要なケース
   次数𝑘 + 1以上の点: 必ず使うとしてよい
   • 使わない場合,隣接する𝑘 + 1点を使う必要がある


 このルールを繰り返し適用した後,全ての頂点の次
  数は𝑘以下となり,もし辺数が𝑘 2 より多ければ,その
  時点で解が存在しないことがわかる

                                 46
FPT: カーネル
 つまり,𝑂(𝑘𝑛) 時間の前処理で,𝑛′ ≤ 2𝑘 2 , 𝑘 ′ ≤ 𝑘の
  問題に変換することが出来る
   この前処理を行った後で,有界探索木法を用いれ
                  𝑘 2
   ば,全体の計算量は 𝑂 1.466 ⁡𝑘 + 𝑘𝑛
   100万頂点のグラフから,サイズ30以下の頂点被
   覆を求めることが可能!

 このように,多項式時間の前処理を行うことで,問題
  サイズを𝑘の関数𝑓(𝑘)以下にまで小さくする手法を
  カーネライズと呼び,小さくなった問題をカーネルと呼
  ぶ
                                           47
余談
 ある問題がFPTであることと,カーネライズできること
  は同値
   ⇒: 𝑓 𝑘 𝑝 𝑛 で解けるとき,𝑛 ≤ 𝑓 𝑘 ならばサイズ
    𝑓(𝑘)のカーネルが存在し,𝑛 > 𝑓(𝑘)ならば
    𝑓 𝑘 𝑝 𝑛 は𝑛に関する多項式時間なので前処理
    の中で完全に解くことが出来る
   ⇐: カーネルを愚直に解けばよい



 ただし,指数サイズのカーネルなので実用上は役に
  立たず,多項式サイズのカーネルがあるかはまた別
  の問題
                                       48
余談
 現在計算量的に最も優れた最小頂点被覆の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
FPT: シュタイナー木問題
 辺の部分集合であって,与えられた𝑘点のターミナル
  を連結にする最小のものを求める


                     t
        t




    t            t


                             50
FPT: シュタイナー木問題
 辺の部分集合であって,与えられた𝑘点のターミナル
  を連結にする最小のものを求める


                     t
        t




    t            t


                             51
FPT: シュタイナー木問題
 おそらく,コンテストで最もよく出題されているFPTの
  問題
 ターミナル数𝑘に関してFPT
 動的計画法を用いて𝑂 3 𝑘 𝑛 + 2 𝑘 𝑚 で解ける




                                  52
動的計画法
 𝑑𝑝 𝑆 𝑣 : ⁡ターミナル集合𝑆と頂点𝑣を連結にする
            最小の辺数 (𝑣はターミナルに限らない)
         𝑢       𝑣
                                 𝑣
                                       ?     𝑇



       ?                       ?
                               𝑆∖ 𝑇
             𝑆


 𝑑𝑝 𝑆 𝑣 = min⁡ min 𝑑𝑝 𝑆 𝑢 + 1| 𝑢, 𝑣 ∈ 𝐸 ,
             (                              ※ループしているので
    min 𝑑𝑝 𝑇 𝑣 + 𝑑𝑝 𝑆 ∖ 𝑇 𝑣 𝑇 ⊆ 𝑆})         幅優先で行う



                                                         53
包除原理
数え上げ,畳込み




           54
包除原理
 𝑓 𝑆 =         𝑔(𝑇) , 𝑔 𝑆 =         −1   𝑆 −|𝑇|   𝑓(𝑇)
          𝑇⊆𝑆                  𝑇⊆𝑆
 指数時間アルゴリズムにおいて,包除原理は非常に
  強力なツール
 応用例
   ハミルトンパスを多項式空間で

   グラフ彩色問題

   動的計画法を高速化 (畳込み)




                                                          55
包除原理
 𝑓 𝑆 =              𝑔(𝑇) , 𝑔 𝑆 =             −1    𝑆 −|𝑇|   𝑓(𝑇)
              𝑇⊆𝑆                       𝑇⊆𝑆
                               𝑆 −|𝑇|
     𝑔 𝑆 =     𝑇⊆𝑆       −1            𝑋⊆𝑇 𝑔(𝑋)
                                         𝑆− 𝑇
          =         𝑋⊆𝑆    𝑋⊆𝑇⊆𝑆   −1              𝑔(𝑋)
        = 𝑔(𝑆)
   𝑔を計算したいが,直接は難しい時に,その和𝑓を
   計算することが出来れば2 𝑛 回𝑓を計算することで𝑔
   が求まる
   𝑔 → 𝑓: ゼータ変換,𝑓 → 𝑔: メビウス変換
      • どちらも2 𝑛 で計算できる
      • 高速ゼータ・メビウス変換

                                                                    56
包除原理: ハミルトンパス
 ハミルトンパスを求めるのは難しいが,長さ𝑛 − 1の
  (単純とは限らない)𝑠−𝑡パスの個数を求めるのは簡単
    単純な動的計画法で求まる

 𝑔 𝑆 ≔ 𝑆のみを通り,かつ𝑆を全て通る長さ𝑛 − 1の
   𝑠−𝑡パスの個数
    𝑔(𝑉) := 𝑠−𝑡ハミルトンパスの個数

 𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇)
    𝑆のみを通る長さ𝑛 − 1の𝑠−𝑡パスの個数



 𝑂 2 𝑛 ⁡𝑛𝑚 time, 𝑂(𝑛) space

                                  57
包除原理: 彩色数
 隣接する頂点が異なる色となるように彩色するため
  に必要な最小色数を求める
            1
                    2

    0
                        3


        5
                4


                            58
包除原理: 彩色数
 隣接する頂点が異なる色となるように彩色するため
  に必要な最小色数を求める
            1
                    2

    0
                        3


        5
                4


                            59
包除原理: 彩色数
 ナイーブな方法
   色の塗り方を全通り試す
        𝑛
   𝑂 𝑘 , k:答え

 動的計画法
   一色ずつ一気に塗る

   𝑑𝑝[𝑆]: 𝑆を彩色する最小色数
      • 𝑑𝑝 𝑆 = min 𝑑𝑝 𝑇 + 1⁡ ⁡ 𝑆 ∖ 𝑇が独立集合}
   𝑂 3𝑛
 包除原理
       𝑛
   𝑂 2 ⁡𝑛 で解ける

                                             60
包除原理: 彩色数
 グラフ𝐺 = (𝑉, 𝐸)が𝑘彩色可能⇔𝑉を𝑘個の独立集合
  で被覆できる
   独立集合から𝑘個選んで𝑉を覆う方法の総数を数
    えることが出来れば良い
 𝑔 𝑆 ≔ 独立集合から𝑘個選んでSをちょうど覆う方法
  の総数
 𝑓 𝑆 = 𝑇⊆𝑆 𝑔(𝑇)
   𝑆の部分集合で独立なもの𝑘個選ぶ方法の総数




                                  61
包除原理: 彩色数
 𝐼 𝑆 : 𝑆の部分集合で独立なものの個数とすると,
       𝑓 𝑆 = 𝐼 𝑆 𝑘
    𝐼 𝑆 = 𝐼 𝑆∖ 𝑣  + 𝐼 𝑆 ∖ 𝑁 𝑣 という漸化式から
      𝑂(2 𝑛 𝑛)時間で全ての𝑆 ⊆ 𝑉について計算可能

 実は,彩色方法の総数を求めることも可能
   𝑔 𝑆 ≔ 独立集合から𝑘個,サイズの総和が𝑛と

  なるように選んでSをちょうど覆う方法の総数
   𝑓(𝑆)の計算はDPをすればよい



                                          62
包除原理: 高速ゼータ変換
          𝑓𝜁 𝑆 =         𝑓 𝑇
                   𝑇⊆𝑆



 𝑣を含まない
           𝑓1                  𝑔1   𝑔1 = 𝑓1 𝜁

                                                これを再利用すればよい
                   𝜻
  𝑣を含む     𝑓2                  𝑔2   𝑔2 = 𝑓1 𝜁 + 𝑓2 𝜁




            𝑓                  𝑔

                                                              63
包除原理: 畳込み
 関数𝑓(𝑆), 𝑔(𝑆)から
          𝑓∘ 𝑔   𝑆 =         𝑓 𝑇 𝑔(𝑆 ∖ 𝑇)
                       𝑇⊆𝑆
    を計算する操作を畳込みと呼ぶ
 単純には𝑂 3 𝑛 で可能
 実は𝑂 2 𝑛 で行うことが出来る
 これを応用すると,色々な部分集合に対するDPを高
  速化することができる
                     𝑘      𝑘
   例: シュタイナー木を3 から2 に
       min 𝑑𝑝 𝑇 𝑣 + 𝑑𝑝 𝑆 ∖ 𝑇 𝑣 𝑇 ⊆ 𝑆}

                                            64
包除原理: 畳込み
              𝑓∘ 𝑔   𝑆 =         𝑓 𝑇 𝑔(𝑆 ∖ 𝑇)
                           𝑇⊆𝑆



𝑣を含まない                                          ℎ1 = 𝑓1 ∘ 𝑔1
         𝑓1           𝑔1             ℎ1




                                                ℎ2 = 𝑓1 ∘ 𝑔2 + 𝑓2 ∘ 𝑔1
 𝑣を含む    𝑓2           𝑔2             ℎ2




          𝑓           𝑔              𝑓∘ 𝑔

                                                                         65
包除原理: 畳込み
 ℎ1 = 𝑓1 ∘ 𝑔1 , ℎ2 = 𝑓1 ∘ 𝑔2 + 𝑓2 ∘ 𝑔1
    半分の大きさのを3回計算するので3
                                            𝑛

    なんとか2回でできないか?

 ℎ2 𝑥 + 𝑓2 ∘ 𝑔2 𝑥 2 = 𝑓1 + 𝑓2 𝑥 ∘ 𝑔1 + 𝑔2 𝑥 − ℎ1
    値を𝑥の多項式に拡張: 𝑓𝑥 𝑆 = 𝑓 𝑆 𝑥

    𝑓 ∘ 𝑔の代わりに, 𝑓 ∘ 𝑔 𝑥 + ゴミ𝑥 を求めること
                                        2

     ができた
                                          𝑛
    気にせず進めると最終的に 𝑓 ∘ 𝑔 𝑥 + ゴミ

   が得られ,ゴミの項は𝑥 𝑛+1 以上なので𝑥 𝑛 の係数を
   取り出せば良い

                                                    66
包除原理: 畳込み


  {}     1   2


  {0}    3   3


  {1}    2   1


 {0,1}   4   4



         𝑓   𝑔




                 67
包除原理: 畳込み


  {}     1   2     1        2


  {0}    3   3     3        3


  {1}    2   1
                 1 + 2𝑥   2+ 𝑥


 {0,1}   4   4
                 3 + 4𝑥   3 + 4𝑥



         𝑓   𝑔




                                   68
包除原理: 畳込み

                                         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
包除原理: 畳込み

                                        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
包除原理: 畳込み

                                            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
包除原理: 畳込み


  {}     1   2   2


  {0}    3   3   9


  {1}    2   1   5


 {0,1}   4   4   21



         𝑓   𝑔   𝑓∘ 𝑔




                        72
余談
 包除原理の指数時間アルゴリズムへの適用は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
おまけ




      74
おまけ: 完全マッチングの個数
                                                     𝑛
 完全マッチングの個数は𝑂∗ 2 で求めることが可能                         2



                              1
                                                   2

             0
                                                                3


                   5
                                              4
 [7] Andreas Björklund: Counting perfect matchings as fast as Ryser. SODA 2012

                                                                                 75
おまけ: 完全マッチングの個数
                                                     𝑛
 完全マッチングの個数は𝑂∗ 2 で求めることが可能                         2



                              1
                                                   2

             0
                                                                3


                   5
                                              4
 [7] Andreas Björklund: Counting perfect matchings as fast as Ryser. SODA 2012

                                                                                 76
おまけ: 完全マッチングの個数
                                                     𝑛
 完全マッチングの個数は𝑂∗ 2 で求めることが可能                         2



                              1
                                                   2

             0
                                                                3


                   5
                                              4
 [7] Andreas Björklund: Counting perfect matchings as fast as Ryser. SODA 2012

                                                                                 77
おまけ: 完全マッチングの個数
                                                     𝑛
 完全マッチングの個数は𝑂∗ 2 で求めることが可能                         2



                              1
                                                   2

             0
                                                                3


                   5
                                              4
 [7] Andreas Björklund: Counting perfect matchings as fast as Ryser. SODA 2012

                                                                                 78
おまけ: 完全マッチングの個数
 頂点を二つ取り除き,ラベルに置き換える

             1
                     2

     0
                         3


         5
                 4


                             79
おまけ: 完全マッチングの個数
 マッチングにラベルaのついた辺25を使う→元のグラ
  フで辺05,12を使う


                              2
           ※ラベル無しの辺と
 1         ラベルaの辺があるの意味


     ε+a         ε+a

                          a       3
 0

           5
                          4
                  ε+a



                                      80
おまけ: 完全マッチングの個数
 もとのグラフでの完全マッチングの個数=新しいグラ
  フでラベルaをちょうど一回使う完全マッチングの個数


                         2
 1
     ε+a       ε+a

                     a       3
 0

           5
                     4
               ε+a



                                 81
おまけ: 完全マッチングの個数
 もとのグラフでの完全マッチングの個数=新しいグラ
  フでラベルabをちょうど一回ずつ使う完全マッチング
  の個数

                              2
 1
                                  ε+b
     ε+a

 0                            3

           5
                          4
               ε+a+b+ab


                                        82
おまけ: 完全マッチングの個数
 もとのグラフでの完全マッチングの個数=新しいグラ
  フでラベルabcをちょうど一回ずつ使う完全マッチング
  の個数 → これは包除原理で2 𝐿 で求まる (𝐿 = 𝑛 )
                              2
                                    2
  1
                                        ε+b
      ε+a         4通り!

  0                                 3

            5
                                4
                ε+c+ac+bc+abc


                                              83
おまけ: Color Coding
 k-Cycle
    グラフに長さ𝑘の単純な閉路が含まれるか判定し
     たい
    𝑘 = 𝑛のときハミルトン閉路問題

   ナイーブな解法:                 𝑂 𝑛𝑘
   FPT:   𝑂   2𝑒   𝑘   𝑚 で解ける



                         3
                             𝑘
 余談: 現在最速は2             4


                                    84
おまけ: Color Coding
 頂点をランダムに𝑘色で塗り,各色をちょうど一度ず
  つ通る閉路があるか調べる
               1
                        2

       0
                            3


           5
                    4


                                85
おまけ: Color Coding
 頂点をランダムに𝑘色で塗り,各色をちょうど一度ず
  つ通る閉路があるか調べる
   これは単純なDPで𝑂      2 𝑘 ⁡𝑚 で解ける

 ある長さ𝑘に閉路上の頂点が全て異なる色で塗られ
        𝑘!
  る確率は, 𝑘 𝑘 ≈ 2𝜋𝑘𝑒 −𝑘


 𝑒 𝑘 回繰り返せば十分な確率で正しく求まる



                                  86
おまけ: Bandwidth
 頂点を一列に並べ,一番長い辺の長さを最小化する
                        0
        1
                2
                        1

0                       5
                    3

                        2
    5
            4           4

                        3
                            87
おまけ: Bandwidth
 ナイーブな解法: 𝑛!
 とても賢い動的計画法を用いると5 𝑛 で解ける

 k以下の解があるかを判定して二分探索する




  [8] Marek Cygan, Marcin Pilipczuk: Even Faster Exact Bandwidth. ACM Transactions on
  Algorithms 8(1) (2012)


                                                                                        88
おまけ: Bandwidth
 1~𝑛を𝑘 + 1個ずつに区切る

     1   2   3   4   5   6   7   8   9




 頂点をどの区間に割り当てるか全通り試す
   隣接する頂点は,同じ区間か隣の区間にしか入れ
           𝑛
   ないので高々3 通り

 1 → 𝑘 + 2 → ⋯ → 2 → 𝑘 + 3 → ⋯ という順に頂点を
  置いていく

                                           89
おまけ: Bandwidth
 すでに置いた頂点の並び順は無視することができる

    1   2   3   4   5   6   7   8   9



                距離2以下の区間


 よってどの頂点を置いたかで2 𝑛 のDPが可能
 区間への割り当てとDPでの状態を同時に考えると実
  は状態数は5 𝑛 しかないことが示せる



                                        90
おまけ: Cut & Count
 グリッドグラフ上のシュタイナー木問題
           𝑤
   幅wに対して𝑐 で解きたい



                   t




          t

                       t

                           91
おまけ: Cut & Count
 グリッドグラフ上のシュタイナー木問題
           𝑤
   幅wに対して𝑐 で解きたい



                   t




          t

                       t

                           92
おまけ: Cut & Count
 グリッドグラフ上のシュタイナー木問題
           𝑤
   幅wに対して𝑐 で解きたい

       ナイーブにやると,どことどこがつながっているか
                 𝑤
     の情報が必要→𝑤 とかになってしまう
 Cut & Count
    包除原理的なキャンセリング手法を用いる




[9] Marek Cygan et al.: Solving Connectivity Problems Parameterized by Treewidth in Single
Exponential Time. FOCS 2011


                                                                                             93
おまけ: Cut & Count
 連結な解を求めるのではなく,解とその頂点を二つ
  のバッグに分割する方法のペアの総数を数える
   ただし,ある頂点はバッグ1に必ず入れる

   連結ならば分け方は一通り

   非連結ならば分け方は偶数通り




    0              0




                            94
おまけ: Cut & Count
 連結な解を求めるのではなく,解とその頂点を二つ
  のバッグに分割する方法のペアの総数を数える
   ただし,ある頂点はバッグ1に必ず入れる

   連結ならば分け方は一通り

   非連結ならば分け方は偶数通り

 解が奇数個ならば,正しく求まる
   偶数個ある場合は,ランダムに重み付けすると十
   分な確率で奇数にできる (Isolation Lemma)




                                   95
おまけ: Iterative Compression
 Feedback頂点集合問題
    グラフから𝑘点取り除いて木にできるか判定


                1
                          2

        0
                              3


            5
                      4

                                  96
おまけ: Iterative Compression
 Feedback頂点集合問題
    グラフから𝑘点取り除いて木にできるか判定


                1
                          2

        0
                              3


            5
                      4

                                  97
おまけ: Iterative Compression
 頂点{𝑣1 , … , 𝑣 𝑖−1 }からなるグラフ𝐺 𝑖−1 に対する解𝐹𝑖−1
  から頂点𝑣 𝑖 を追加したグラフ𝐺 𝑖 に対する解𝐹𝑖 を構築す
  る
   𝐹 𝑖−1 ∪ 𝑣 𝑖 の大きさは高々𝑘 + 1で,これを𝐺 𝑖 から
    取り除くと残りは木になる
   つまり,木幅が小さい
    • Cut & Countを用いると3 𝑘 時間でサイズ𝑘の解が求まる

                 𝐺𝑖          𝐺 𝑖−1

            𝑣𝑖        𝐹𝑖−1           木


                                              98

More Related Content

What's hot

Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話Nagisa Eto
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造Takuya Akiba
 
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方Kensuke Otsuki
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界Preferred Networks
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドMasaki Hara
 
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Inc.
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)AtCoder Inc.
 
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Inc.
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性Hibiki Yamashiro
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化yosupo
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法Takuya Akiba
 
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端Yoichi Iwata
 
2SAT(充足可能性問題)の解き方
2SAT(充足可能性問題)の解き方2SAT(充足可能性問題)の解き方
2SAT(充足可能性問題)の解き方Tsuneo Yoshioka
 
ユークリッド最小全域木
ユークリッド最小全域木ユークリッド最小全域木
ユークリッド最小全域木理玖 川崎
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Inc.
 

What's hot (20)

Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
 
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
最大流 (max flow)
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
Trianguler
TriangulerTrianguler
Trianguler
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
 
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)
 
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
 
直交領域探索
直交領域探索直交領域探索
直交領域探索
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端
 
2SAT(充足可能性問題)の解き方
2SAT(充足可能性問題)の解き方2SAT(充足可能性問題)の解き方
2SAT(充足可能性問題)の解き方
 
ユークリッド最小全域木
ユークリッド最小全域木ユークリッド最小全域木
ユークリッド最小全域木
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
 

Similar to 指数時間アルゴリズム入門

「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)Kensuke Otsuki
 
Faster matroid intersection
Faster matroid intersectionFaster matroid intersection
Faster matroid intersectionga sin
 
これならわかる最適化数学8章_動的計画法
これならわかる最適化数学8章_動的計画法これならわかる最適化数学8章_動的計画法
これならわかる最適化数学8章_動的計画法kenyanonaka
 
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃trmr
 
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうかわんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうかMasami Yabushita
 
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版Masami Yabushita
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとはTakuya Akiba
 
Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎Kenji Otsuka
 
University CodeSprint 4 - Magic value
University CodeSprint 4 - Magic valueUniversity CodeSprint 4 - Magic value
University CodeSprint 4 - Magic valuesatanic
 
楕円曲線入門 トーラスと楕円曲線のつながり
楕円曲線入門トーラスと楕円曲線のつながり楕円曲線入門トーラスと楕円曲線のつながり
楕円曲線入門 トーラスと楕円曲線のつながりMITSUNARI Shigeo
 
130323 slide all
130323 slide all130323 slide all
130323 slide allikea0064
 
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)MLSE
 
プログラマ脳を鍛える会 Vol1
プログラマ脳を鍛える会 Vol1プログラマ脳を鍛える会 Vol1
プログラマ脳を鍛える会 Vol1har hogefoo
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
第4回数理モデル勉強会(日本植物学会第84回大会関連集会)
第4回数理モデル勉強会(日本植物学会第84回大会関連集会)第4回数理モデル勉強会(日本植物学会第84回大会関連集会)
第4回数理モデル勉強会(日本植物学会第84回大会関連集会)TakaakiYonekura
 
How to study stat
How to study statHow to study stat
How to study statAk Ok
 
数値解析と物理学
数値解析と物理学数値解析と物理学
数値解析と物理学すずしめ
 

Similar to 指数時間アルゴリズム入門 (20)

「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
 
Faster matroid intersection
Faster matroid intersectionFaster matroid intersection
Faster matroid intersection
 
これならわかる最適化数学8章_動的計画法
これならわかる最適化数学8章_動的計画法これならわかる最適化数学8章_動的計画法
これならわかる最適化数学8章_動的計画法
 
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
 
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうかわんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
 
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
数理解析道場
数理解析道場数理解析道場
数理解析道場
 
Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎
 
University CodeSprint 4 - Magic value
University CodeSprint 4 - Magic valueUniversity CodeSprint 4 - Magic value
University CodeSprint 4 - Magic value
 
楕円曲線入門 トーラスと楕円曲線のつながり
楕円曲線入門トーラスと楕円曲線のつながり楕円曲線入門トーラスと楕円曲線のつながり
楕円曲線入門 トーラスと楕円曲線のつながり
 
130323 slide all
130323 slide all130323 slide all
130323 slide all
 
Alloyへの挑戦
Alloyへの挑戦Alloyへの挑戦
Alloyへの挑戦
 
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
 
プログラマ脳を鍛える会 Vol1
プログラマ脳を鍛える会 Vol1プログラマ脳を鍛える会 Vol1
プログラマ脳を鍛える会 Vol1
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
第4回数理モデル勉強会(日本植物学会第84回大会関連集会)
第4回数理モデル勉強会(日本植物学会第84回大会関連集会)第4回数理モデル勉強会(日本植物学会第84回大会関連集会)
第4回数理モデル勉強会(日本植物学会第84回大会関連集会)
 
How to study stat
How to study statHow to study stat
How to study stat
 
210122 msi dp
210122 msi dp210122 msi dp
210122 msi dp
 
数値解析と物理学
数値解析と物理学数値解析と物理学
数値解析と物理学
 

指数時間アルゴリズム入門