一.组合数的定义.
下降幂:我们把从
n
n
n个不同的数中选出
m
m
m个数组成不同序列(考虑顺序)的数量称为
n
n
n的
m
m
m阶下降幂,记为
n
m
‾
n^{\underline{m}}
nm,即:
n
m
‾
=
∏
i
=
1
m
(
n
−
i
+
1
)
=
n
(
n
−
1
)
(
n
−
2
)
⋯
(
n
−
m
+
1
)
=
n
!
(
n
−
m
)
!
n^{\underline{m}}=\prod_{i=1}^{m}(n-i+1)=n(n-1)(n-2)\cdots(n-m+1)=\frac{n!}{(n-m)!}
nm=i=1∏m(n−i+1)=n(n−1)(n−2)⋯(n−m+1)=(n−m)!n!
上升幂:我们把
n
n
n的
m
m
m阶上升幂记为
n
m
‾
n^{\overline{m}}
nm,与下降幂类似的有:
n
m
‾
=
∏
i
=
1
m
(
n
+
i
−
1
)
=
n
(
n
+
1
)
(
n
+
2
)
⋯
(
n
+
m
−
1
)
=
(
n
+
m
−
1
)
m
‾
n^{\overline{m}}=\prod_{i=1}^{m}(n+i-1)=n(n+1)(n+2)\cdots(n+m-1)=(n+m-1)^{\underline{m}}
nm=i=1∏m(n+i−1)=n(n+1)(n+2)⋯(n+m−1)=(n+m−1)m
组合数:我们把从n个不同的数中选出
m
m
m个数组成不同集合(不考虑顺序)的数量记为
(
n
m
)
\binom{n}{m}
(mn),即:
(
n
m
)
=
n
m
‾
m
!
=
∏
i
=
1
m
(
n
−
i
+
1
)
∏
i
=
1
m
i
=
n
!
m
!
(
n
−
m
)
!
\binom{n}{m}=\frac{n^{\underline{m}}}{m!}=\frac{\prod_{i=1}^{m}(n-i+1)}{\prod_{i=1}^{m}i}=\frac{n!}{m!(n-m)!}
(mn)=m!nm=∏i=1mi∏i=1m(n−i+1)=m!(n−m)!n!
特别的,我们规定 ( n 0 ) = 1 \binom{n}{0}=1 (0n)=1.
观察三个定义,我们发现 n n n都不一定非要是非负整数,于是将 n n n的定义域推广到实数域上.
组合数最经典的求法是直接预处理阶乘,这样就可以在模数是素数时做到 O ( n ) O(n) O(n)预处理而 O ( 1 ) O(1) O(1)回答询问了.
还有一种求法是在模数不为素的时候,直接统计每一个素因子的出现数量,最后直接乘起来就好了,求单个组合数的时间复杂度为
O
(
n
log
n
)
O(n\log n)
O(nlogn).
二.隔板法.
隔板法:对于 n n n个顺序排列的相同的球,要在它们之中安置 m m m块相同的隔板,两个球之间最多只能有一块隔板且两边不能有,就可以把这个看成在 n − 1 n-1 n−1个空中放入 m m m个球,方案数为 ( n − 1 m ) \binom{n-1}{m} (mn−1),这种方法称为隔板法.
隔板法可以很方便的解决一些看起来很难的问题,下面就给几道例题:
问题1:给定一个方程 ∑ i = 1 m x i = n \sum_{i=1}^{m}x_i=n ∑i=1mxi=n,求方程的正整数解数量.
分析:看成在 n n n个球之中插入 m − 1 m-1 m−1块隔板,两个球之间不能有多于一块隔板且两边不能有,方案数即为 ( n − 1 m − 1 ) \binom{n-1}{m-1} (m−1n−1).
问题2:给定一个方程 ∑ i = 1 m x i = n \sum_{i=1}^{m}x_i=n ∑i=1mxi=n,求方程的自然数解数量.
分析:把算式变成:
∑
i
=
1
m
(
x
i
+
1
)
=
n
+
m
\sum_{i=1}^{m}(x_i+1)=n+m
i=1∑m(xi+1)=n+m
那么现在问题就转化为了问题1,答案就是 ( n + m − 1 m − 1 ) = ( n + m − 1 n ) \binom{n+m-1}{m-1}=\binom{n+m-1}{n} (m−1n+m−1)=(nn+m−1).
问题3:给定 n n n个相同的白球,要求在其中插入 m m m个相同的黑球,使得每两个黑球之间至少有 k k k个白球(保证 n ≥ ( m − 1 ) k n\geq (m-1)k n≥(m−1)k),求方案数.
分析:考虑先提出
(
m
−
1
)
k
(m-1)k
(m−1)k个白球,直接在
m
m
m个黑球组成的空隙分别插入
k
k
k个白球,问题变为在
n
−
(
m
−
1
)
k
n-(m-1)k
n−(m−1)k个白球中插入
m
m
m个黑球,直接套用问题二的公式可得答案:
(
n
−
(
m
−
1
)
k
+
m
m
)
=
(
n
+
m
+
k
−
m
k
m
)
\binom{n-(m-1)k+m}{m}=\binom{n+m+k-mk}{m}
(mn−(m−1)k+m)=(mn+m+k−mk)
问题4:给定一个由 n n n个相同的白球组成的环(旋转同构算同一种方案,翻转同构不算同一种),在环中插入 m m m个相同的黑球,使得每两个黑球之间至少有 k k k个白球(保证 n ≥ m k n\geq mk n≥mk),求方案数.
分析:先钦定一个黑球在最前面,问题转化为在
n
n
n个白球中插入
m
+
2
m+2
m+2个黑球(两端必须放),直接套用问题4的答案并除掉旋转同构的
m
m
m得到答案:
1
m
(
n
−
m
k
+
m
−
1
m
−
1
)
\frac{1}{m}\binom{n-mk+m-1}{m-1}
m1(m−1n−mk+m−1)
三.二项式定理.
二项式定理:对于一个非负整数 n n n, ( a + b ) n = ∑ i = 0 n ( n i ) a i b n − i (a+b)^n=\sum_{i=0}^{n}\binom{n}{i}a^ib^{n-i} (a+b)n=∑i=0n(in)aibn−i.
二项式定理的推论1: ∑ i = 0 n ( n i ) = 2 n \sum_{i=0}^{n}\binom{n}{i}=2^n ∑i=0n(in)=2n.
二项式定理的推论2: ∑ i = 1 n ( − 1 ) k ( n i ) = [ n = 1 ] \sum_{i=1}^{n}(-1)^k\binom{n}{i}=[n=1] ∑i=1n(−1)k(in)=[n=1].
这两个式子分别可以用 ( 1 + 1 ) n (1+1)^n (1+1)n和 ( 1 − 1 ) n (1-1)^n (1−1)n套上二项式定理得到.
二项式定理的推论3: ∑ i = 0 n [ 2 ∣ i ] ( n i ) a i b n − i = ( a + b ) n + ( a − b ) n 2 \sum_{i=0}^{n}[2|i]\binom{n}{i}a^{i}b^{n-i}=\frac{(a+b)^{n}+(a-b)^{n}}{2} ∑i=0n[2∣i](in)aibn−i=2(a+b)n+(a−b)n.
广义二项式定理:对于一个实数 n n n, ( a + b ) n = ∑ i = 0 + ∞ ( n i ) a i b n − i (a+b)^{n}=\sum_{i=0}^{+\infty}\binom{n}{i}a^{i}b^{n-i} (a+b)n=∑i=0+∞(in)aibn−i.
多项式定理:
(
a
1
+
a
2
+
⋯
+
a
m
)
n
=
∑
i
1
+
i
2
+
⋯
+
i
m
=
n
n
!
i
1
!
i
2
!
⋯
i
m
!
a
1
i
1
a
2
i
2
⋯
a
m
i
m
(a_1+a_2+\cdots+a_m)^{n}=\sum_{i_1+i_2+\cdots+i_m=n}\frac{n!}{i_1!i_2!\cdots i_m!}a_1^{i_1}a_2^{i_2}\cdots a_m^{i_m}
(a1+a2+⋯+am)n=∑i1+i2+⋯+im=ni1!i2!⋯im!n!a1i1a2i2⋯amim.
四.组合恒等式.
接下来在这一节出现的组合恒等式中,若没有特殊说明,则默认变量的取值范围能够使得所有的运算有效.
其中对于组合数 ( n m ) \binom{n}{m} (mn)而言,有效的 n n n为实数, m m m为非负整数;对于和式而言,其上下界均为整数,且下界小于等于上界.
组合恒等式1(对称恒等式):对于任意非负整数 n n n,有 ( n m ) = ( n n − m ) \binom{n}{m}=\binom{n}{n-m} (mn)=(n−mn).
组合恒等式2(加法/归纳恒等式): ( n m ) = ( n − 1 m ) + ( n − 1 m − 1 ) \binom{n}{m}=\binom{n-1}{m}+\binom{n-1}{m-1} (mn)=(mn−1)+(m−1n−1).
证明:
(
n
−
1
m
)
+
(
n
−
1
m
−
1
)
=
(
n
−
1
)
m
‾
m
!
+
(
n
−
1
)
m
−
1
‾
(
m
−
1
)
!
=
(
n
−
m
)
(
n
−
1
)
m
−
1
‾
+
m
(
n
−
1
)
m
−
1
‾
m
!
=
n
(
n
−
1
)
m
−
1
‾
m
!
=
n
m
‾
m
!
=
(
n
m
)
\binom{n-1}{m}+\binom{n-1}{m-1}\\ =\frac{(n-1)^{\underline{m}}}{m!}+\frac{(n-1)^{\underline{m-1}}}{(m-1)!}\\ =\frac{(n-m)(n-1)^{\underline{m-1}}+m(n-1)^{\underline{m-1}}}{m!}\\ =\frac{n(n-1)^{\underline{m-1}}}{m!}\\ =\frac{n^{\underline{m}}}{m!} =\binom{n}{m}
(mn−1)+(m−1n−1)=m!(n−1)m+(m−1)!(n−1)m−1=m!(n−m)(n−1)m−1+m(n−1)m−1=m!n(n−1)m−1=m!nm=(mn)
证毕.
利用这个组合恒等式可以做到 O ( n 2 ) O(n^{2}) O(n2)预处理所有 i , j ≤ n i,j\leq n i,j≤n的组合数 ( i j ) \binom{i}{j} (ji).
组合恒等式2的推论1(平行求和法): ∑ i = 0 n ( m + i i ) = ( m + n + 1 n ) \sum_{i=0}^{n}\binom{m+i}{i}=\binom{m+n+1}{n} ∑i=0n(im+i)=(nm+n+1).
证明:
∑
i
=
0
n
(
m
+
i
i
)
=
(
m
0
)
+
∑
i
=
1
n
(
(
m
+
i
+
1
i
)
−
(
m
+
i
i
−
1
)
)
=
(
m
0
)
+
(
m
+
n
+
1
n
)
−
(
m
+
1
0
)
=
1
+
(
m
+
n
+
1
n
)
−
1
=
(
m
+
n
+
1
n
)
\sum_{i=0}^{n}\binom{m+i}{i}\\ =\binom{m}{0}+\sum_{i=1}^{n}\left(\binom{m+i+1}{i}-\binom{m+i}{i-1}\right)\\ =\binom{m}{0}+\binom{m+n+1}{n}-\binom{m+1}{0}\\ =1+\binom{m+n+1}{n}-1\\ =\binom{m+n+1}{n}
i=0∑n(im+i)=(0m)+i=1∑n((im+i+1)−(i−1m+i))=(0m)+(nm+n+1)−(0m+1)=1+(nm+n+1)−1=(nm+n+1)
证毕.
组合恒等式2的推论2(上指标求和法): ∑ i = 0 n ( i m ) = ( n + 1 m + 1 ) \sum_{i=0}^{n}\binom{i}{m}=\binom{n+1}{m+1} ∑i=0n(mi)=(m+1n+1).
证明:
∑
i
=
0
n
(
i
m
)
=
∑
i
=
0
n
(
(
i
+
1
m
+
1
)
−
(
i
m
+
1
)
)
=
(
n
+
1
m
+
1
)
−
(
0
m
+
1
)
=
(
n
+
1
m
+
1
)
\sum_{i=0}^{n}\binom{i}{m}\\ =\sum_{i=0}^{n}\left(\binom{i+1}{m+1}-\binom{i}{m+1}\right)\\ =\binom{n+1}{m+1}-\binom{0}{m+1}\\ =\binom{n+1}{m+1}
i=0∑n(mi)=i=0∑n((m+1i+1)−(m+1i))=(m+1n+1)−(m+10)=(m+1n+1)
证毕.
组合恒等式3(吸收/提取恒等式): m ( n m ) = n ( n − 1 m − 1 ) m\binom{n}{m}=n\binom{n-1}{m-1} m(mn)=n(m−1n−1).
证明:
m
(
n
m
)
=
m
n
m
‾
m
!
=
n
(
n
−
1
)
m
−
1
‾
(
m
−
1
)
!
=
n
(
n
−
1
m
−
1
)
m\binom{n}{m} =m\frac{n^{\underline{m}}}{m!} =n\frac{(n-1)^{\underline{m-1}}}{(m-1)!} =n\binom{n-1}{m-1}
m(mn)=mm!nm=n(m−1)!(n−1)m−1=n(m−1n−1)
证毕.
利用这个组合恒等式可以做到 O ( m ) O(m) O(m)求出单个组合数 ( n m ) \binom{n}{m} (mn).
组合恒等式4: m ( n m ) = ( n − m + 1 ) ( n m − 1 ) m\binom{n}{m}=(n-m+1)\binom{n}{m-1} m(mn)=(n−m+1)(m−1n).
证明:
m
(
n
m
)
=
m
n
m
‾
m
!
=
(
n
−
m
+
1
)
n
m
−
1
‾
(
m
−
1
)
!
=
(
n
−
m
+
1
)
(
n
m
−
1
)
m\binom{n}{m} =m\frac{n^{\underline{m}}}{m!} =(n-m+1)\frac{n^{\underline{m-1}}}{(m-1)!} =(n-m+1)\binom{n}{m-1}
m(mn)=mm!nm=(n−m+1)(m−1)!nm−1=(n−m+1)(m−1n)
证毕.
利用这个组合恒等式可以做到 O ( n ) O(n) O(n)预处理一行组合数.即对于所有 i ≤ n i\leq n i≤n,预处理 ( m i ) \binom{m}{i} (im).
组合恒等式5: ( n − m ) ( n m ) = n ( n − 1 m ) (n-m)\binom{n}{m}=n\binom{n-1}{m} (n−m)(mn)=n(mn−1).
证明:
(
n
−
m
)
(
n
m
)
=
(
n
−
m
)
n
m
‾
m
!
=
n
(
n
−
1
)
m
‾
m
!
=
n
(
n
−
1
m
)
(n-m)\binom{n}{m} =(n-m)\frac{n^{\underline{m}}}{m!} =n\frac{(n-1)^{\underline{m}}}{m!} =n\binom{n-1}{m}
(n−m)(mn)=(n−m)m!nm=nm!(n−1)m=n(mn−1)
证毕.
利用这个组合恒等式可以做到 O ( n ) O(n) O(n)预处理一列组合数.即对于所有 i ≤ n i\leq n i≤n,预处理 ( i m ) \binom{i}{m} (mi).
组合恒等式6(上指标反转): ( n m ) = ( − 1 ) m ( m − n − 1 m ) \binom{n}{m}=(-1)^{m}\binom{m-n-1}{m} (mn)=(−1)m(mm−n−1).
证明:
(
−
1
)
m
(
m
−
n
−
1
m
)
=
(
−
1
)
m
(
m
−
n
−
1
)
m
‾
m
!
=
(
−
1
)
m
m
!
∏
i
=
1
m
(
m
−
n
−
i
)
=
1
m
!
∏
i
=
1
m
(
n
−
m
+
i
)
=
n
m
‾
m
!
=
(
n
m
)
(-1)^{m}\binom{m-n-1}{m}\\ =(-1)^{m}\frac{(m-n-1)^{\underline{m}}}{m!}\\ =\frac{(-1)^{m}}{m!}\prod_{i=1}^{m}(m-n-i)\\ =\frac{1}{m!}\prod_{i=1}^{m}(n-m+i)\\ =\frac{n^{\underline{m}}}{m!}\\ =\binom{n}{m}
(−1)m(mm−n−1)=(−1)mm!(m−n−1)m=m!(−1)mi=1∏m(m−n−i)=m!1i=1∏m(n−m+i)=m!nm=(mn)
证毕.
组合恒等式7(三项式版恒等式): ( n m ) ( m k ) = ( n k ) ( n − k m − k ) \binom{n}{m}\binom{m}{k}=\binom{n}{k}\binom{n-k}{m-k} (mn)(km)=(kn)(m−kn−k).
证明:
(
n
m
)
(
m
k
)
=
n
m
‾
m
!
m
k
‾
k
!
=
n
k
‾
(
n
−
k
)
m
−
k
‾
k
!
m
k
‾
m
!
=
(
n
k
)
(
n
−
k
)
m
−
k
‾
(
m
−
k
)
!
=
(
n
k
)
(
n
−
k
m
−
k
)
\binom{n}{m}\binom{m}{k} =\frac{n^{\underline{m}}}{m!}\frac{m^{\underline{k}}}{k!} =\frac{n^{\underline{k}}(n-k)^{\underline{m-k}}}{k!}\frac{m^{\underline{k}}}{m!} =\binom{n}{k}\frac{(n-k)^{\underline{m-k}}}{(m-k)!} =\binom{n}{k}\binom{n-k}{m-k}
(mn)(km)=m!nmk!mk=k!nk(n−k)m−km!mk=(kn)(m−k)!(n−k)m−k=(kn)(m−kn−k)
证毕.
组合恒等式7的推论:对于整数 0 ≤ m ≤ n 0\leq m\leq n 0≤m≤n有 ∑ i = 0 m ( m i ) ( n i ) = n + 1 n − m + 1 \sum_{i=0}^{m}\frac{\binom{m}{i}}{\binom{n}{i}}=\frac{n+1}{n-m+1} ∑i=0m(in)(im)=n−m+1n+1.
证明:
将组合恒等式7两边同除
(
n
m
)
(
n
k
)
\binom{n}{m}\binom{n}{k}
(mn)(kn),我们可以得到:
(
m
k
)
(
n
k
)
=
(
n
−
k
m
−
k
)
(
n
m
)
\frac{\binom{m}{k}}{\binom{n}{k}}=\frac{\binom{n-k}{m-k}}{\binom{n}{m}}
(kn)(km)=(mn)(m−kn−k)
利用这个式子进行推导:
∑
i
=
0
m
(
m
i
)
(
n
i
)
=
∑
i
=
0
m
(
n
−
i
m
−
i
)
(
n
m
)
=
1
(
n
m
)
∑
i
=
0
m
(
n
−
m
+
i
i
)
=
(
n
+
1
m
)
(
n
m
)
=
n
+
1
n
−
m
+
1
\sum_{i=0}^{m}\frac{\binom{m}{i}}{\binom{n}{i}}\\ =\sum_{i=0}^{m}\frac{\binom{n-i}{m-i}}{\binom{n}{m}}\\ =\frac{1}{\binom{n}{m}}\sum_{i=0}^{m}\binom{n-m+i}{i}\\ =\frac{\binom{n+1}{m}}{\binom{n}{m}}\\ =\frac{n+1}{n-m+1}
i=0∑m(in)(im)=i=0∑m(mn)(m−in−i)=(mn)1i=0∑m(in−m+i)=(mn)(mn+1)=n−m+1n+1
证毕.
组合恒等式8(范德蒙卷积恒等式): ∑ i = 0 k ( n i ) ( m k − i ) = ( n + m k ) \sum_{i=0}^{k}\binom{n}{i}\binom{m}{k-i}=\binom{n+m}{k} ∑i=0k(in)(k−im)=(kn+m).
证明:
考虑
(
n
i
)
\binom{n}{i}
(in)是二项式
(
1
+
x
)
n
(1+x)^{n}
(1+x)n展开后
x
i
x^{i}
xi的系数,那么我们有:
(
1
+
x
)
n
(
1
+
x
)
m
=
(
1
+
x
)
n
+
m
(
∑
i
=
0
+
∞
(
n
i
)
x
i
)
(
∑
i
=
0
+
∞
(
m
i
)
x
i
)
=
∑
i
=
0
+
∞
(
n
+
m
i
)
x
i
(1+x)^{n}(1+x)^{m}=(1+x)^{n+m}\\ \left(\sum_{i=0}^{+\infty}\binom{n}{i}x^{i}\right)\left(\sum_{i=0}^{+\infty}\binom{m}{i}x^{i}\right)=\sum_{i=0}^{+\infty}\binom{n+m}{i}x^{i}
(1+x)n(1+x)m=(1+x)n+m(i=0∑+∞(in)xi)(i=0∑+∞(im)xi)=i=0∑+∞(in+m)xi
然后我们写出右边式子中
k
k
k次项是怎么得出的:
(
n
+
m
k
)
x
k
=
∑
i
=
0
k
(
n
i
)
x
i
(
m
k
−
i
)
x
k
−
i
\binom{n+m}{k}x^{k}=\sum_{i=0}^{k}\binom{n}{i}x^{i}\binom{m}{k-i}x^{k-i}
(kn+m)xk=i=0∑k(in)xi(k−im)xk−i
两边同时消除
x
k
x^{k}
xk就可以得到:
(
n
+
m
k
)
=
∑
i
=
0
k
(
n
i
)
(
m
k
−
i
)
\binom{n+m}{k}=\sum_{i=0}^{k}\binom{n}{i}\binom{m}{k-i}
(kn+m)=i=0∑k(in)(k−im)
证毕.
组合恒等式8的推论1: ∑ i = 0 m − k ( n i ) ( m k + i ) = ( n + m m − k ) \sum_{i=0}^{m-k}\binom{n}{i}\binom{m}{k+i}=\binom{n+m}{m-k} ∑i=0m−k(in)(k+im)=(m−kn+m).
证明:
∑
i
=
0
m
−
k
(
n
i
)
(
m
k
+
i
)
=
∑
i
=
0
m
−
k
(
n
i
)
(
m
m
−
k
−
i
)
=
(
n
+
m
m
−
k
)
\sum_{i=0}^{m-k}\binom{n}{i}\binom{m}{k+i}\\ =\sum_{i=0}^{m-k}\binom{n}{i}\binom{m}{m-k-i}\\ =\binom{n+m}{m-k}
i=0∑m−k(in)(k+im)=i=0∑m−k(in)(m−k−im)=(m−kn+m)
证毕.
组合恒等式8的推论2(上指标卷积恒等式): ∑ i = 0 k ( i n ) ( k − i m ) = ( k + 1 m + n + 1 ) \sum_{i=0}^{k}\binom{i}{n}\binom{k-i}{m}=\binom{k+1}{m+n+1} ∑i=0k(ni)(mk−i)=(m+n+1k+1).
证明:
∑
i
=
0
k
(
i
n
)
(
k
−
i
m
)
=
∑
i
=
0
k
∑
j
=
0
i
−
1
(
j
n
−
1
)
(
k
−
i
m
)
=
∑
i
=
0
k
(
i
n
−
1
)
∑
j
=
i
+
1
k
(
k
−
j
m
)
=
∑
i
=
0
k
(
i
n
−
1
)
∑
j
=
0
k
−
i
−
1
(
j
m
)
=
∑
i
=
0
k
(
i
n
−
1
)
(
k
−
i
m
+
1
)
⋮
=
∑
i
=
0
k
(
i
0
)
(
k
−
i
m
+
n
)
=
∑
i
=
0
k
(
i
m
+
n
)
=
(
k
+
1
m
+
n
+
1
)
\sum_{i=0}^{k}\binom{i}{n}\binom{k-i}{m}\\ =\sum_{i=0}^{k}\sum_{j=0}^{i-1}\binom{j}{n-1}\binom{k-i}{m}\\ =\sum_{i=0}^{k}\binom{i}{n-1}\sum_{j=i+1}^{k}\binom{k-j}{m}\\ =\sum_{i=0}^{k}\binom{i}{n-1}\sum_{j=0}^{k-i-1}\binom{j}{m}\\ =\sum_{i=0}^{k}\binom{i}{n-1}\binom{k-i}{m+1}\\ \vdots\\ =\sum_{i=0}^{k}\binom{i}{0}\binom{k-i}{m+n}\\ =\sum_{i=0}^{k}\binom{i}{m+n}\\ =\binom{k+1}{m+n+1}
i=0∑k(ni)(mk−i)=i=0∑kj=0∑i−1(n−1j)(mk−i)=i=0∑k(n−1i)j=i+1∑k(mk−j)=i=0∑k(n−1i)j=0∑k−i−1(mj)=i=0∑k(n−1i)(m+1k−i)⋮=i=0∑k(0i)(m+nk−i)=i=0∑k(m+ni)=(m+n+1k+1)
证毕.
组合恒等式9的推论3(下降幂二项式定理): ∑ i = 0 n ( n i ) x i ‾ y n − i ‾ = ( x + y ) n ‾ \sum_{i=0}^{n}\binom{n}{i}x^{\underline{i}}y^{\underline{n-i}}=(x+y)^{\underline{n}} ∑i=0n(in)xiyn−i=(x+y)n.
证明:
∑
i
=
0
n
(
n
i
)
x
i
‾
y
n
−
i
‾
=
∑
i
=
0
n
n
!
i
!
(
n
−
i
)
!
x
i
‾
y
n
−
i
‾
=
n
!
∑
i
=
0
n
(
x
i
)
(
y
n
−
i
)
=
n
!
(
x
+
y
n
)
=
(
x
+
y
)
n
‾
\sum_{i=0}^{n}\binom{n}{i}x^{\underline{i}}y^{\underline{n-i}}\\ =\sum_{i=0}^{n}\frac{n!}{i!(n-i)!}x^{\underline{i}}y^{\underline{n-i}}\\ =n!\sum_{i=0}^{n}\binom{x}{i}\binom{y}{n-i}\\ =n!\binom{x+y}{n}\\ =(x+y)^{\underline{n}}
i=0∑n(in)xiyn−i=i=0∑ni!(n−i)!n!xiyn−i=n!i=0∑n(ix)(n−iy)=n!(nx+y)=(x+y)n
证毕.
五.上指标含有1/2的组合数.
一类上指标中含有 1 2 \frac{1}{2} 21的组合数往往有各种技巧处理.
定理5.1:对于一个正整数 n n n,有 ( 1 2 n ) = ( − 1 ) n − 1 2 1 − 2 n ( 2 n − 2 ) ! n ! ( n − 1 ) ! \binom{\frac{1}{2}}{n}=(-1)^{n-1}2^{1-2n}\frac{(2n-2)!}{n!(n-1)!} (n21)=(−1)n−121−2nn!(n−1)!(2n−2)!.
证明:
(
1
2
n
)
=
(
1
2
)
n
‾
n
!
=
1
n
!
∏
i
=
1
n
(
3
2
−
i
)
=
(
−
1
)
n
−
1
n
!
2
−
n
∏
i
=
1
n
−
1
(
2
i
−
1
)
=
(
−
1
)
n
−
1
n
!
2
−
n
∏
i
=
1
2
n
−
2
i
∏
i
=
1
n
−
1
2
i
=
(
−
1
)
n
−
1
2
1
−
2
n
(
2
n
−
2
)
!
n
!
(
n
−
1
)
!
\binom{\frac{1}{2}}{n}\\ =\frac{\left(\frac{1}{2}\right)^{\underline{n}}}{n!}\\ =\frac{1}{n!}\prod_{i=1}^{n}\left(\frac{3}{2}-i\right)\\ =\frac{(-1)^{n-1}}{n!}2^{-n}\prod_{i=1}^{n-1}(2i-1)\\ =\frac{(-1)^{n-1}}{n!}2^{-n}\frac{\prod_{i=1}^{2n-2}i}{\prod_{i=1}^{n-1}2i}\\ =(-1)^{n-1}2^{1-2n}\frac{(2n-2)!}{n!(n-1)!}
(n21)=n!(21)n=n!1i=1∏n(23−i)=n!(−1)n−12−ni=1∏n−1(2i−1)=n!(−1)n−12−n∏i=1n−12i∏i=12n−2i=(−1)n−121−2nn!(n−1)!(2n−2)!
证毕.
定理5.2: n m ‾ ( n − 1 2 ) m ‾ = ( 2 n ) 2 m ‾ 2 2 m n^{\underline{m}}\left(n-\frac{1}{2}\right)^{\underline{m}}=\frac{(2n)^{\underline{2m}}}{2^{2m}} nm(n−21)m=22m(2n)2m.
证明:
n
m
‾
(
n
−
1
2
)
m
‾
=
∏
i
=
0
2
m
−
1
(
n
−
i
2
)
=
2
−
2
m
∏
i
=
0
2
m
−
1
(
2
n
−
i
)
=
(
2
n
)
2
m
‾
2
2
m
n^{\underline{m}}\left(n-\frac{1}{2}\right)^{\underline{m}}\\ =\prod_{i=0}^{2m-1}\left(n-\frac{i}{2}\right)\\ =2^{-2m}\prod_{i=0}^{2m-1}(2n-i)\\ =\frac{(2n)^{\underline{2m}}}{2^{2m}}
nm(n−21)m=i=0∏2m−1(n−2i)=2−2mi=0∏2m−1(2n−i)=22m(2n)2m
证毕.
定理5.2的推论: ( n m ) ( n − 1 2 m ) = ( 2 n 2 m ) ( 2 m m ) 2 − 2 m \binom{n}{m}\binom{n-\frac{1}{2}}{m}=\binom{2n}{2m}\binom{2m}{m}2^{-2m} (mn)(mn−21)=(2m2n)(m2m)2−2m.
证明:
在定理5.2的基础上两边同除
(
m
!
)
2
(m!)^{2}
(m!)2得到:
(
n
m
)
(
n
−
1
2
m
)
=
(
2
n
)
2
m
‾
(
m
!
)
2
2
−
2
m
=
(
2
n
)
2
m
‾
(
2
m
)
!
(
2
m
)
!
m
!
m
!
2
−
2
m
=
(
2
n
2
m
)
(
2
m
m
)
2
−
2
m
\binom{n}{m}\binom{n-\frac{1}{2}}{m}\\ =\frac{(2n)^{\underline{2m}}}{(m!)^2}2^{-2m}\\ =\frac{(2n)^{\underline{2m}}}{(2m)!}\frac{(2m)!}{m!m!}2^{-2m}\\ =\binom{2n}{2m}\binom{2m}{m}2^{-2m}
(mn)(mn−21)=(m!)2(2n)2m2−2m=(2m)!(2n)2mm!m!(2m)!2−2m=(2m2n)(m2m)2−2m
证毕.
六.高阶差分.
我们定义差分 Δ k f ( x ) = Δ k − 1 f ( x + 1 ) − Δ k − 1 f ( x ) \Delta^{k}f(x)=\Delta^{k-1}f(x+1)-\Delta^{k-1}f(x) Δkf(x)=Δk−1f(x+1)−Δk−1f(x),其中初始定义 Δ 0 f ( x ) = f ( x ) \Delta^{0}f(x)=f(x) Δ0f(x)=f(x).
分别写出
k
=
1
,
2
,
3
,
4
k=1,2,3,4
k=1,2,3,4的式子:
Δ
1
(
x
)
=
f
(
x
+
1
)
−
f
(
x
)
Δ
2
(
x
)
=
f
(
x
+
2
)
−
2
f
(
x
+
1
)
+
f
(
x
)
Δ
3
(
x
)
=
f
(
x
+
3
)
−
3
f
(
x
+
2
)
+
3
f
(
x
+
1
)
−
f
(
x
)
Δ
4
(
x
)
=
f
(
x
+
4
)
−
4
f
(
x
+
3
)
+
6
f
(
x
+
2
)
−
4
f
(
x
+
1
)
+
f
(
x
)
\Delta^{1}(x)=f(x+1)-f(x)\\ \Delta^{2}(x)=f(x+2)-2f(x+1)+f(x)\\ \Delta^{3}(x)=f(x+3)-3f(x+2)+3f(x+1)-f(x)\\ \Delta^{4}(x)=f(x+4)-4f(x+3)+6f(x+2)-4f(x+1)+f(x)
Δ1(x)=f(x+1)−f(x)Δ2(x)=f(x+2)−2f(x+1)+f(x)Δ3(x)=f(x+3)−3f(x+2)+3f(x+1)−f(x)Δ4(x)=f(x+4)−4f(x+3)+6f(x+2)−4f(x+1)+f(x)
我们发现高阶差分展开式的形式为:
Δ
k
(
x
)
=
∑
i
=
0
k
(
−
1
)
k
−
i
(
k
i
)
f
(
x
+
i
)
\Delta^{k}(x)=\sum_{i=0}^{k}(-1)^{k-i}\binom{k}{i}f(x+i)
Δk(x)=i=0∑k(−1)k−i(ik)f(x+i)
归纳证明后我们发现这个式子是对的.
七.牛顿级数.
在高等数学中,我们知道一个函数
f
(
x
)
f(x)
f(x)有它的泰勒级数:
f
(
x
+
a
)
=
∑
i
=
0
+
∞
f
′
(
a
)
i
!
x
i
f(x+a)=\sum_{i=0}^{+\infty}\frac{f'(a)}{i!}x^{i}
f(x+a)=i=0∑+∞i!f′(a)xi
而在组合数学中,一个函数
f
(
x
)
f(x)
f(x)也有其对应的牛顿级数:
f
(
x
+
a
)
=
∑
i
=
0
+
∞
Δ
i
f
(
a
)
i
!
x
i
‾
f(x+a)=\sum_{i=0}^{+\infty}\frac{\Delta^{i}f(a)}{i!}x^{\underline{i}}
f(x+a)=i=0∑+∞i!Δif(a)xi
我们发现
x
i
‾
i
!
=
(
x
i
)
\frac{x^{\underline{i}}}{i!}=\binom{x}{i}
i!xi=(ix),所以牛顿级数还可以写成:
f
(
x
+
a
)
=
∑
i
=
0
+
∞
Δ
i
f
(
a
)
(
x
i
)
f(x+a)=\sum_{i=0}^{+\infty}\Delta^{i}f(a)\binom{x}{i}
f(x+a)=i=0∑+∞Δif(a)(ix)
而我们又发现若
f
(
x
)
f(x)
f(x)是一个
n
n
n次多项式,那么其高于
n
n
n阶的差分结果为
0
0
0.所以对于任意一个多项式
f
(
x
)
=
∑
i
=
0
n
a
i
x
i
f(x)=\sum_{i=0}^{n}a_ix^{i}
f(x)=∑i=0naixi,我们都可以找到对应的系数
b
i
b_i
bi和
c
i
c_i
ci满足:
f
(
x
)
=
∑
i
=
0
n
a
i
x
i
=
∑
i
=
0
n
b
i
x
i
‾
=
∑
i
=
0
n
c
i
(
x
i
)
f(x)=\sum_{i=0}^{n}a_ix^{i}=\sum_{i=0}^{n}b_ix^{\underline{i}}=\sum_{i=0}^{n}c_i\binom{x}{i}
f(x)=i=0∑naixi=i=0∑nbixi=i=0∑nci(ix)
八.二项式反演.
二项式反演:
f
n
=
∑
i
=
0
n
(
−
1
)
i
(
n
i
)
g
i
⇔
g
n
=
∑
i
=
0
n
(
−
1
)
i
(
n
i
)
f
i
f_n=\sum_{i=0}^{n}(-1)^{i}\binom{n}{i}g_i\Leftrightarrow g_n=\sum_{i=0}^{n}(-1)^{i}\binom{n}{i}f_i
fn=i=0∑n(−1)i(in)gi⇔gn=i=0∑n(−1)i(in)fi
证明:
将右边的式子代入左边,则这个证明二项式反演等价于证明:
f
n
=
∑
i
=
0
n
(
−
1
)
i
(
n
i
)
∑
j
=
0
i
(
−
1
)
j
(
i
j
)
f
j
f_n=\sum_{i=0}^{n}(-1)^{i}\binom{n}{i}\sum_{j=0}^{i}(-1)^{j}\binom{i}{j}f_j
fn=i=0∑n(−1)i(in)j=0∑i(−1)j(ji)fj
尝试推导:
∑
i
=
0
n
(
−
1
)
i
(
n
i
)
∑
j
=
0
i
(
−
1
)
j
(
i
j
)
f
j
=
∑
i
=
0
n
(
−
1
)
i
f
i
∑
j
=
i
n
(
−
1
)
j
(
n
j
)
(
j
i
)
=
∑
i
=
0
n
(
−
1
)
i
f
i
∑
j
=
i
n
(
−
1
)
j
(
n
i
)
(
n
−
i
j
−
i
)
=
∑
i
=
0
n
(
−
1
)
i
(
n
i
)
f
i
∑
j
=
0
n
−
i
(
−
1
)
j
+
i
(
n
−
i
j
)
=
∑
i
=
0
n
(
n
i
)
f
i
∑
j
=
0
n
−
i
(
−
1
)
j
(
n
−
i
j
)
=
∑
i
=
0
n
(
n
i
)
f
i
(
1
−
1
)
n
−
i
=
f
n
\sum_{i=0}^{n}(-1)^{i}\binom{n}{i}\sum_{j=0}^{i}(-1)^{j}\binom{i}{j}f_j\\ =\sum_{i=0}^{n}(-1)^{i}f_i\sum_{j=i}^{n}(-1)^{j}\binom{n}{j}\binom{j}{i}\\ =\sum_{i=0}^{n}(-1)^{i}f_i\sum_{j=i}^{n}(-1)^{j}\binom{n}{i}\binom{n-i}{j-i}\\ =\sum_{i=0}^{n}(-1)^{i}\binom{n}{i}f_i\sum_{j=0}^{n-i}(-1)^{j+i}\binom{n-i}{j}\\ =\sum_{i=0}^{n}\binom{n}{i}f_i\sum_{j=0}^{n-i}(-1)^{j}\binom{n-i}{j}\\ =\sum_{i=0}^{n}\binom{n}{i}f_i(1-1)^{n-i}\\ =f_n
i=0∑n(−1)i(in)j=0∑i(−1)j(ji)fj=i=0∑n(−1)ifij=i∑n(−1)j(jn)(ij)=i=0∑n(−1)ifij=i∑n(−1)j(in)(j−in−i)=i=0∑n(−1)i(in)fij=0∑n−i(−1)j+i(jn−i)=i=0∑n(in)fij=0∑n−i(−1)j(jn−i)=i=0∑n(in)fi(1−1)n−i=fn
证毕.
二项式反演有一个更加常用的等价形式:
f
n
=
∑
i
=
0
n
(
n
i
)
g
i
⇔
g
n
=
∑
i
=
0
n
(
−
1
)
n
−
i
(
n
i
)
f
i
f_n=\sum_{i=0}^{n}\binom{n}{i}g_i\Leftrightarrow g_n=\sum_{i=0}^{n}(-1)^{n-i}\binom{n}{i}f_i
fn=i=0∑n(in)gi⇔gn=i=0∑n(−1)n−i(in)fi
二项式反演的一个重要应用是计算错排数 d n d_n dn的通项公式.
首先我们有:
n
!
=
∑
i
=
0
n
(
n
i
)
d
i
n!=\sum_{i=0}^{n}\binom{n}{i}d_{i}
n!=i=0∑n(in)di
二项式反演后得到:
d
n
=
∑
i
=
0
n
(
−
1
)
n
−
i
(
n
i
)
i
!
=
∑
i
=
0
n
(
−
1
)
i
(
n
i
)
(
n
−
i
)
!
=
∑
i
=
0
n
(
−
1
)
i
n
!
i
!
(
n
−
i
)
!
(
n
−
i
)
!
=
n
!
∑
i
=
0
n
(
−
1
)
i
i
!
d_{n}=\sum_{i=0}^{n}(-1)^{n-i}\binom{n}{i}i!\\ =\sum_{i=0}^{n}(-1)^{i}\binom{n}{i}(n-i)!\\ =\sum_{i=0}^{n}(-1)^{i}\frac{n!}{i!(n-i)!}(n-i)!\\ =n!\sum_{i=0}^{n}\frac{(-1)^{i}}{i!}
dn=i=0∑n(−1)n−i(in)i!=i=0∑n(−1)i(in)(n−i)!=i=0∑n(−1)ii!(n−i)!n!(n−i)!=n!i=0∑ni!(−1)i
我们得到了重要的错排公式:
d
n
=
n
!
∑
i
=
0
n
(
−
1
)
i
i
!
d_{n}=n!\sum_{i=0}^{n}\frac{(-1)^{i}}{i!}
dn=n!i=0∑ni!(−1)i
九.恰好和至多至少的转化.
这是一种很常见的套路,通常情况下需要求出恰好的答案,但恰好非常难求而至多或至少却好做很多,这时候就需要用至多或至少来求恰好了.
一种用二项式反演的情况是,设
f
i
f_i
fi表示至多选
i
i
i个的方案数,
g
i
g_i
gi表示恰好选
i
i
i个的方案数,
f
i
f_i
fi和
g
i
g_i
gi之间表现出如下关系:
f
i
=
∑
j
=
0
i
(
i
j
)
g
j
f_i=\sum_{j=0}^{i}\binom{i}{j}g_j
fi=j=0∑i(ji)gj
我们发现这个式子可以直接二项式反演成:
g
i
=
∑
j
=
0
i
(
−
1
)
i
−
j
(
i
j
)
f
j
g_i=\sum_{j=0}^{i}(-1)^{i-j}\binom{i}{j}f_{j}
gi=j=0∑i(−1)i−j(ji)fj
同样的,设
f
i
f_i
fi表示至少选
i
i
i个的方案数,
g
i
g_i
gi表示恰好选
i
i
i个的方案数,
f
i
f_i
fi和
g
i
g_i
gi之间表现出如下关系:
f
i
=
∑
j
=
i
n
(
j
i
)
g
j
f_i=\sum_{j=i}^{n}\binom{j}{i}g_j\\
fi=j=i∑n(ij)gj
根据二项式反演同样可以得出:
g
i
=
∑
j
=
i
n
(
−
1
)
j
−
i
(
j
i
)
f
j
g_i=\sum_{j=i}^{n}(-1)^{j-i}\binom{j}{i}f_j
gi=j=i∑n(−1)j−i(ij)fj
十.二项式反演的生成函数形式.
观察二项式反演的式子:
f
i
=
∑
j
=
0
i
(
i
j
)
g
j
⇔
g
i
=
∑
j
=
0
i
(
−
1
)
i
−
j
(
i
j
)
f
j
f_i=\sum_{j=0}^{i}\binom{i}{j}g_j\Leftrightarrow g_i=\sum_{j=0}^{i}(-1)^{i-j}\binom{i}{j}f_j
fi=j=0∑i(ji)gj⇔gi=j=0∑i(−1)i−j(ji)fj
令
F
(
x
)
,
G
(
x
)
F(x),G(x)
F(x),G(x)分别为
f
i
,
g
i
f_i,g_i
fi,gi的指数型生成函数,我们发现:
F
(
x
)
=
G
(
x
)
e
x
⇔
G
(
x
)
=
F
(
x
)
e
−
x
F(x)=G(x)e^{x}\Leftrightarrow G(x)=F(x)e^{-x}
F(x)=G(x)ex⇔G(x)=F(x)e−x
所以就可以直接用NTT快速计算二项式反演啦!