数え上げとDPの深い関係 ― 組合せ論が競プロの「解法」になるとき
DP(動的計画法)は漸化式のボトムアップ計算であり,母関数はDPの解析解です.ナップサック問題と母関数の対応,畳み込みとFFTの関係を解説し,シリーズ全体を振り返ります.
このシリーズの最終回として,組合せ論と競プロの最重要テクニックであるDP(動的計画法)の関係を掘り下げ,7回の記事を振り返ります.DP と組合せ論は表裏一体であり,その関係を理解することで,問題へのアプローチが格段に広がります.
1 DPは漸化式のボトムアップ計算
2 ナップサック問題と母関数
DP テーブルの各行は多項式の係数列
DP の遷移(前の行の値を使って次の行を計算)は多項式の掛け算
DP テーブル全体は母関数の逐次展開
3 畳み込みと FFT
第4回で見たように,母関数の積は畳み込みに対応します.
素朴に計算するとですが,FFT(高速フーリエ変換)を使えばで計算できます.
係数表現 → 点値表現(,FFT)
点値表現で各点の値を掛け算()
点値表現 → 係数表現(,逆FFT)
4 シリーズ全体の振り返り
8回にわたるシリーズを俯瞰すると,組合せ論の各トピックが有機的につながっていることが見えてきます.
数え上げの基本(加法・乗法原理)→ すべての出発点.集合の濃度という視点
二項係数(パスカルの恒等式・二項定理)→ 最も基本的な数え上げの道具.DP テーブル=パスカルの三角形
包除原理(足して引いて)→ 「全体から引く」数え上げ技法.二項定理 が本質
母関数(数列→関数)→ 漸化式を代数方程式に変換.DP の「解析版」
カタラン数(反射原理・全単射)→ 母関数の二次方程式から導出.格子経路と括弧列の全単射
鳩の巣原理(存在証明)→ 構成的でない推論の力.ラムゼー理論への入口
バーンサイド(対称性)→ 群作用による数え上げ.固定点数の平均
DP と組合せ論(本記事)→ 漸化式=DP,母関数=解析解,畳み込み=FFT
5 組合せ論の先にある世界
代数的組合せ論:群の表現論と対称関数,ヤング図形と Robinson-Schensted 対応
確率的組合せ論:ランダムグラフ(Erdos-Renyi モデル),確率的存在証明(Lovasz Local Lemma)
加法的組合せ論:Szemeredi の定理,和集合の構造
極値組合せ論:Turan の定理,Kruskal-Katona の定理
マトロイド理論:グラフ理論シリーズの第4回でも触れた構造が,組合せ最適化の基盤を成します
6 まとめ
DP は漸化式のボトムアップ計算であり,パスカルの三角形はその原型です
ナップサック問題の DP は母関数の逐次的な掛け算に対応します
畳み込みは母関数の積であり,FFT で に高速化できます
組合せ論の各トピック(二項係数・包除原理・母関数・カタラン数・バーンサイド)は DP と深くつながっています
組合せ論の先には代数的組合せ論,確率的組合せ論,極値組合せ論など広大な世界が広がっています
8回にわたる組合せ論「教科書の行間」シリーズはこれで完結です.「数える」という最も原始的な数学的行為が,集合論・代数・解析・アルゴリズムのすべてに通じていることを感じていただけたなら幸いです.