二項係数(rn)は「n個からr個選ぶ」という素朴な意味をもつ数ですが,数学のあらゆる場面に顔を出します.パスカルの三角形,格子経路,二項定理,そして競プロの mod 演算まで ― なぜ(rn)はこんなにも万能なのでしょうか?
1 二項係数の定義と基本性質
非負整数 n,r(0≤r≤n)に対して,二項係数を (rn)=r!(n−r)!n!
と定義します.r>n のときは (rn)=0 とします.
2 パスカルの恒等式 ― 二項係数の再帰構造
1≤r≤n−1 のとき, (rn)=(r−1n−1)+(rn−1)
が成り立ちます.
n 個の要素の中から特定の要素 x を1つ固定します.r 個の部分集合は,x を含むものと含まないものに分類されます.x を含む部分集合の数は,残り n−1 個から r−1 個を選ぶので (r−1n−1) 通りです.x を含まない部分集合の数は,残り n−1 個から r 個を選ぶので (rn−1) 通りです.この2つの場合は互いに素なので,加法原理より (rn)=(r−1n−1)+(rn−1) です. □
3 格子経路との対応
(0,0) から (a,b) への最短格子経路(右と上にのみ移動)の数は (aa+b) です.
最短経路は,右に a 回,上に b 回移動する列です.全 a+b 回の移動のうち,「右」の a 回をどこに配置するかで経路が決まるので,(aa+b) 通りです. □
(0,0) から (3,2) への最短格子経路は (35)=10 通りです.例えば「右右上右上」「上右右右上」などがあります.
4 二項定理
任意の x,y と非負整数 n に対して, (x+y)n=r=0∑n(rn)xryn−r
が成り立ちます.
(x+y)n=(x+y)(x+y)⋯(x+y) を展開するとき,n 個の因子それぞれから x か y を1つ選んで掛け合わせます.xryn−r の項が現れるのは,n 個の因子のうち r 個から x を選ぶ場合で,その選び方は (rn) 通りです. □
x=y=1 を代入すると ∑r=0n(rn)=2n(n 元集合の部分集合の総数).x=1,y=−1 を代入すると ∑r=0n(−1)r(rn)=0(偶数個選ぶ場合と奇数個選ぶ場合が同数).
5 modpでの高速計算
競プロでは(rn)modp(pは素数,典型的にp=109+7)を高速に求める場面が頻出します.
6 Lucas の定理
p を素数とし,n と r を p 進展開して n=∑nipi,r=∑ripi とすると, (rn)≡i∏(rini)(modp)
が成り立ちます.
7 まとめ
次の記事では,「足して引いて」を繰り返す不思議な原理 ― 包除原理の本質に迫ります.