組合せ論と離散数学
母関数
数列を係数として符号化するべき級数で、組合せ論の問題を代数の問題に変える。
直観母関数とは何か
無限に多くのペグが 0,1,2,3,… と番号付けされた物干しロープを想像してほしい。数列 a0,a1,a2,… を表すには、n 番目のペグに数 an を吊るす。母関数とは、この物干しロープをひとつの代数的対象として書き直したものであり、数 an はべき級数における xn の係数になる。変数 x に数値を代入することはなく、各項を自分の場所に保持するだけであり、そのおかげで数列の足し算・掛け算・シフトが多項式の普通の代数演算になる。
この曲線は三次式 1+x+x2+x3 であり、1−x1=∑n=0∞xn の最初の4項、つまり定数列 an=1 の母関数である。各係数(a,b,c,d をドラッグ)は数列の1つのペグが曲線に詰め込まれたものである。中高数列をべき級数に詰め込む
定義: 通常型母関数
数列 a0,a1,a2,… の通常型母関数(OGF)とは、形式的べき級数 G(x)=∑n=0∞anxn のことである。「形式的」とは、この和を数値的に評価する関数としてではなく、代数的な式として扱うという意味であり、x の特定の値における収束の問題は組合せ論には関係しない。
G(x)=n=0∑∞anxn 最も単純な構成要素は、すべての n≥0 に対する数列 an=1 であり、その母関数は等比級数 1−x1=∑n=0∞xn である。この等式は母関数を用いるほとんどの議論の原動力であり、1−x1 が「無制限に供給される中から n 個を順序を問わず1通りずつ選ぶ」ことを符号化していることを意味する。
(1−x)21=n=0∑∞(n+1)xn よく使われる数列とその母関数| 数列 | 母関数 |
|---|
| 定数、an=1 | 1−x1 |
| 線形、an=n+1 | (1−x)21 |
| フィボナッチ、an=Fn | 1−x−x2x |
| 二項係数の行、an=(nk) | (1+x)k |
大学漸化式から閉じた形へ
F0=0, F1=1 とし、n≥2 に対して Fn=Fn−1+Fn−2 とする。このとき通常型母関数 F(x)=∑n=0∞Fnxn は F(x)=1−x−x2x に等しい。
なぜ正しいのか?
係数が定数の線形漸化式は、xn を掛けてすべての n について和を取れば、常に単純な代数(実際には有理)方程式になる — 漸化式は x の多項式を掛ける操作になる。
証明
漸化式 Fn=Fn−1+Fn−2(n≥2 で成立)に xn を掛けて n≥2 について和を取る: ∑n≥2Fnxn=∑n≥2Fn−1xn+∑n≥2Fn−2xn。
左辺は F(x)−F0−F1x=F(x)−x である。右辺の最初の和は x∑n≥2Fn−1xn−1=x∑m≥1Fmxm=x(F(x)−F0)=xF(x) となる。2番目の和は x2∑n≥2Fn−2xn−2=x2∑k≥0Fkxk=x2F(x) となる。
よって F(x)−x=xF(x)+x2F(x)、すなわち (1−x−x2)F(x)=x が成り立つ。
F(x) について解くと F(x)(1−x−x2)=x となり、したがって F(x)=1−x−x2x が得られる。これは無限に続くフィボナッチ数列全体を詰め込んだ、ただ1つの有理関数である。
φ=21+5 および ψ=21−5 とすると、1−x−x2 の根から、すべての n≥0 に対する閉じた式 Fn=51(φn−ψn) が得られる。
なぜ正しいのか?
分母が相異なる一次因子を持つ有理型母関数はすべて、単純な等比級数の和に分解でき、各等比級数から係数の明示的な公式が直接読み取れる。
証明
分母を因数分解する:1−x−x2=0 の根は x=1/φ と x=1/ψ であるから、1−x−x2=(1−φx)(1−ψx) が成り立つ。
1−x−x2x=1−φxA+1−ψxB と定数 A,B で書く。分母を払い、定数項と x の係数を比較すると、A=51、B=−51 を解とする連立方程式が得られ、1−x−x2x=51(1−φx1−1−ψx1) となる。
各項を等比級数として展開する:1−φx1=∑n≥0φnxn、1−ψx1=∑n≥0ψnxn。
両辺の xn の係数を読み取ると、ビネの公式として知られる Fn=51(φn−ψn) が得られる。
大学実世界での応用と具体例
母関数は理論的な興味の対象であるだけでなく、実用的な道具でもある。計算機科学者は再帰的アルゴリズムの正確な、また漸近的な実行時間を求めるために母関数を使い、物理学者は統計力学において密接に関連する分配関数を使い、確率論者は確率分布全体を母関数として符号化し、和を取る代わりに微分することでモーメントを計算する。
例: 2種類の硬貨での両替
1単位硬貨と2単位硬貨を無制限に使って、硬貨の順序を問わず金額 4 を作る方法は何通りあるか。
解答
金額を作るそれぞれの方法は、1単位硬貨と2単位硬貨をそれぞれ何枚使うかの選択であるから、母関数は 1単位硬貨の母関数 1−x1 と 2単位硬貨の母関数 1−x21 の積であり、組み合わせた母関数は (1−x)(1−x2)1 となる。
2つの因子を等比級数として展開し、掛け合わせる:(∑i≥0xi)(∑j≥0x2j)。x4 の係数は i+2j=4、i,j≥0 を満たす組 (i,j) の個数を数える。
有効な組は (4,0)、(2,1)、(0,2) であり、したがって 3 通りある:1単位硬貨4枚、1単位硬貨2枚と2単位硬貨1枚、2単位硬貨2枚。
例: 母関数からビネの公式へ
閉じた式 F(x)=1−x−x2x とビネの公式 Fn=51(φn−ψn) を使って、F0,…,F4 を順に列挙せずに F5 を直接計算せよ。
解答
上の定理により、φ=21+5 と ψ=21−5 はビネの公式 Fn=51(φn−ψn) に用いる根である。
数値的には φ≈1.618、ψ≈−0.618 であるから、φ5≈11.09、ψ5≈−0.09 となる。
よって F5=51(φ5−ψ5)≈51(11.09−(−0.09))=511.18≈5 となる。
実際に F5=5 であり、漸化式 0,1,1,2,3,5 を反復して得られる値と一致する — しかしビネの公式を使えば、それ以前の項を計算せずに任意の Fn に直接到達できる。
すべての n≥0 に対する定数列 an=1 の通常型母関数は何か。
(1−x)21 における x3 の係数はいくつか。
次のうち、母関数を使うのが最も自然な問題はどれか。
フィボナッチ数列の母関数 F(x)=∑Fnxn はどの閉じた式を満たすか。