組合せ論には「どこにでも現れる数」があります.その代表格がカタラン数です.括弧の並べ方,二分木の形,格子経路,多角形の三角形分割 ― まったく異なる問題を解いたはずなのに,同じ数列1,1,2,5,14,42,132,…が出てきます.なぜこんなことが起きるのでしょうか?
1 カタラン数の定義
n 番目のカタラン数Cn は Cn=n+11(n2n)
で定義されます.最初のいくつかの値は C0=1,C1=1,C2=2,C3=5,C4=14,C5=42 です.
2 5つの組合せ的解釈
カタラン数Cnは,少なくとも以下の問題すべての答えです.
n 組の括弧からなる正しい括弧列の数は Cn です.例えば n=3 では ((())) , (()()) , (())() , ()(()) , ()()() の5通りで C3=5 です.
n 個の内部ノードをもつ(相異なる形の)二分木の数は Cn です.
(0,0) から (n,n) への最短格子経路で,対角線 y=x を越えない(つまり常に y≤x)ものの数は Cn です.
凸 (n+2) 角形を対角線で三角形に分割する方法の数は Cn です.
2n ステップの山列(上がる ↗ と下がる ↘ を n 回ずつ,高さが常に非負)の数は Cn です.これは正しい括弧列の「視覚化」です.
3 反射原理による導出
格子経路の解釈からカタラン数の公式を導きましょう.
(0,0) から (n,n) への最短格子経路で対角線 y=x を越えないものの数は Cn=n+11(n2n) です.
まず条件なしの経路の総数は (n2n) です(右に n 回,上に n 回の並べ方).次に「悪い経路」(y>x となる点を通る経路)の数を求めます.悪い経路は必ず直線 y=x+1 に触れます.最初に y=x+1 に触れた地点以降の経路を,直線 y=x+1 に関して反射します.反射操作により,悪い経路は (0,0) から (−1,2n+1)…ではなく,座標を適切に変換すると (0,0) から (n−1,n+1) への経路と1対1に対応します.したがって悪い経路の数は (n−12n) です.求める数は (n2n)−(n−12n)=(n2n)−n+1n(n2n)=n+11(n2n)=Cn
□
4 全単射の構成 ― なぜ同じ数になるのか
カタラン数が多くの問題に現れる理由は,それらの問題の解の集合の間に全単射が構成できるからです.
5 母関数による導出
カタラン数の母関数 C(x)=∑n=0∞Cnxn は
です.
二分木の再帰構造を考えます.空でない二分木は「根 + 左部分木 + 右部分木」に分解されます.左部分木が k 個,右部分木が n−1−k 個の内部ノードを持つとすると, Cn=k=0∑n−1CkCn−1−k(n≥1),C0=1
母関数では C(x)=1+xC(x)2 となります(1 は C0 に対応し,xC(x)2 は再帰的分解に対応).xC(x)2−C(x)+1=0 を C(x) について解くと
C(0)=1(有限値)なので正符号は不適切であり,C(x)=2x1−1−4x が正しい選択です. □
6 まとめ
カタラン数 Cn=n+11(n2n) は少なくとも5つの異なる組合せ的解釈をもちます
反射原理は格子経路の問題で「悪い場合」を数える強力な手法です
異なる問題に同じ数が現れるのは,解の集合間に全単射が構成できるからです
母関数 C(x)=2x1−1−4x は二分木の再帰構造から導かれます
次の記事では,「存在する」ことだけを証明する意外な武器 ― 鳩の巣原理について解説します.