一.组合数的定义.
下降幂:我们把从 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 ∣ n ] ( n i ) a i b n − i = ( a + b ) n + ( a − b ) n 2 \sum_{i=0}^{n}[2|n]\binom{n}{i}a^{i}b^{n-i}=\frac{(a+b)^{n}+(a-b)^{n}}{2} ∑i=0n[2∣n](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
证毕.
这个组合恒等式利用组合意义非常容易解释,因为两边都可以解释为把集合分成 ( n − m ) + ( m − k ) + k (n-m)+(m-k)+k (n−m)+(m−k)+k三份.
证毕.
组合恒等式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快速计算二项式反演啦!