组合数学习笔记
作者:互联网
组合数
定义
普通定义
\[\binom nm=\frac{n!}{m!\ (n-m)!} \]这里,当 \(n<m\) 时,认为该式值为 \(0\)。
扩展定义
\[\binom nm=\frac{n^{\underline m}}{m!}\quad(n\in\mathbb C,m\in\mathbb N) \]基本性质
对称性
\[\binom nm=\binom n{n-m} \]显然。
加法公式
\[\binom nm=\binom{n-1}m+\binom{n-1}{m-1} \]证明:组合意义。
在 \(n\) 中选 \(m\) 个,可分为两种情况:
- 选第 \(n\) 个,则需在前 \(n-1\) 个中选 \(m-1\) 个。
- 否则需在前 \(n-1\) 个中选 \(m\) 个。
上指标求和
\[\sum_{i=0}^n\binom ik=\binom{n+1}{k+1} \]证明:数学归纳法。
- \(n=k\) 时,显然有 \(\binom kk=\binom{k+1}{k+1}\)
- \(n>k\) 时,设结论在 \(\mathbb N\cap[0,n-1]\) 上成立,根据加法公式,有:
因此,结论成立。
吸收恒等式
\[m\binom nm=n\binom{n-1}{m-1} \]\[\binom nm\binom mk=\binom nk\binom{n-k}{m-k} \]证明:第一个式子显然是第二个式子在 \(k=1\) 时的特殊情况,所以只需证明第二个式子。
组合意义。从 \(n\) 中选出 \(m\) 个,再从这 \(m\) 个中选 \(k\) 个,等价于先从 \(n\) 中选出 \(k\) 个,再把这 \(k\) 个与另外 \(m-k\) 个凑出 \(m\) 个。
范德蒙德卷积
\[\sum_{i+j=m}=\binom ki\binom{n-k}j=\sum_{i=0}^m\binom ki\binom{n-k}{m-i}=\binom nm \]证明:组合意义。考虑前 \(k\) 个选几个,把所有情况相加即可。
二项式定理
\[(a+b)^n=\sum_{i=0}^n\binom nia^ib^{n-i} \]证明:考虑展开 \((a+b)^n\) 后,\(a^ib^{n-i}\) 的系数,显然为在 \(n\) 个 \((a+b)\) 中选 \(i\) 个 \(a\) 的情况总数。
广义二项式定理
\[(x+y)^{\alpha}=\sum_{k\ge 0}\binom{\alpha}{k}x^ky^{\alpha-k}\quad(\alpha\in\mathbb R) \]我不会证明(事实上我没学过微积分)。
练习 1
求:
\[\sum_{i=0}^n\binom{n-i}i \]解:设原式为 \(f(n)\)。
\[\begin{aligned} f(n)&=\sum_{i=0}^n\binom{n-i}i\\ &=\sum_{i=0}^n\binom{n-1-i}i+\binom{n-1-i}{i-1}\\ &=\sum_{i=0}^{n-1}\binom{n-1-i}i+\sum_{i=1}^{n-1}\binom{n-1-i}{i-1}\\ &=\sum_{i=0}^{n-1}\binom{n-1-i}i+\sum_{i=0}^{n-2}\binom{n-2-i}i\\ &=f(n-1)+f(n-2) \end{aligned} \]又 \(f(0)=1,f(1)=1\),故 \(f(n)=F_{n+1}\),其中 \(F_i\) 表示斐波那契数列的第 \(i\) 项。
另一种方法是利用斐波那契数列的组合意义。
求一个 \(2\times n\) 的棋盘,使用任意多张 \(1\times 2\) 的骨牌 完全 覆盖所有格子的方案数。设有 \(f_n\) 种方案。
讨论第 \(n\) 列是被一张竖着放的骨牌覆盖,还是被两张横着放的骨牌覆盖,即可得知 \(f_n=f_{n-1}+f_{n-2}\)。
由于边界为 \(f_0=1\),因此 \(f_n=F_{n+1}\)。用组合数计算。若有 \(2i\) 张横着放置的骨牌,则一对在同一列上的骨牌会占据两列。
所以先减去 \(i\) 列(肯定会被占用),然后从剩下的列中选 \(i\) 列就是答案。所以 \(f_n=\sum_{i=0}^n\binom{n-i}i\)。
练习 2
求:
\[\sum_{i=0}^n\binom{m+i-1}{i} \]解:
\[\begin{aligned} \sum_{i=0}^n\binom{m+i-1}{i} &=\sum_{i=0}^n\binom{m+i-1}{m-1}\\ &=\sum_{i=0}^{m+n-1}\binom{i}{m-1}\\ &=\binom{m+n}{m} \end{aligned} \]第一步和第三步分别运用了对称性、上指标求和。
斯特林数
第二类斯特林数
定义
\(\begin{Bmatrix}n\\m\end{Bmatrix}\) 表示将 \(n\) 个不同的元素划分为 \(m\) 个互不区分的非空集合的方案数。
性质
\[\begin{Bmatrix}n\\m\end{Bmatrix}=\begin{Bmatrix}n-1\\m-1\end{Bmatrix}+m\begin{Bmatrix}n-1\\m\end{Bmatrix} \]边界:\(\begin{Bmatrix}n\\0\end{Bmatrix}=[n=0]\)
第一类斯特林数
定义
\(n\) 个人坐在 \(m\) 张非空圆桌上的方案数记为第一类斯特林数,用 \(\begin{bmatrix}n\\m\end{bmatrix}\) 表示。
性质
\[\begin{bmatrix}n\\m\end{bmatrix}=\begin{bmatrix}n-1\\m-1\end{bmatrix}+(n-1)\begin{bmatrix}n-1\\m\end{bmatrix} \]边界:\(\begin{bmatrix}n\\0\end{bmatrix}=[n=0]\)
下降幂和上升幂
定义
\[a^{\underline n}=\prod_{k=a-n+1}^ak \]\[a^{\overline n}=\prod_{k=a}^{a+n-1}k \]斯特林数的性质
下降幂、上升幂与幂的转化
\[x^{\overline m}=\sum_{k=0}^m\begin{bmatrix}m\\k\end{bmatrix}x^k\\ x^{\underline m}=\sum_{k=0}^m(-1)^{m-k}\begin{bmatrix}m\\k\end{bmatrix}x^k\\ x^m=\sum_{k=0}^m\begin{Bmatrix}m\\k\end{Bmatrix}x^{\underline k} \]通项公式
\[\begin{Bmatrix}m\\k\end{Bmatrix}=\frac 1{k!}\sum_{i=0}^k(-1)^{k-i}\binom kii^m \]容斥原理
基本公式
设 \(S\) 为有限集,\(A_1,A_2,\cdots,A_n\subseteq S\),\(A=\{A_1,A_2,\cdots,A_n\}\) 则有:
\[|\bigcup_{i=1}^{n}A_i|=\sum_{k=1}^n(-1)^{k-1}\sum_{1\le i_1<i_2<\cdots<i_k\le n}|\bigcap_{j=1}^kA_{i_j}| \]证明:
设一个元素被 \(A\) 中的 \(m\) 个集合包含,则它对左侧贡献为 \(1\)。
它对右侧的贡献为:\(\sum_{i=1}^m(-1)^{i-1}\binom{m}{i}\)(从这 \(m\) 个集合中任选几个集合都会包含)
\(=-\sum_{i=1}^m(-1)^i\binom{m}{i}=1-\sum_{i=0}^m(-1)^i\binom{m}{i}=1-(1-1)^m=1\)
德 · 摩根定律
\[(\bigcup_{i=1}^nA_i)^{\complement}=\bigcap_{i=1}^nA_i^{\complement}\qquad\qquad(\bigcap_{i=1}^nA_i)^{\complement}=\bigcup_{i=1}^nA_i^{\complement} \]感性理解:大家都知道 !(a&&b)
和 (!a)||(!b)
是等价的(a
与 b
不同时成立等同于两者之一不成立),这就是上面第二个式子的一种情况,第一个式子同理。
基本公式的变形
根据德摩根定律变形:
\[\begin{aligned} |\bigcap_{i=1}^nA_i^{\complement}|&=|(\bigcup_{i=1}^{n}A_i)^{\complement}|\\ &=|S|-\sum_{k=1}^n(-1)^{k-1}\sum_{1\le i_1<i_2<\cdots<i_k\le n}|\bigcap_{j=1}^kA_{i_j}|\\ &=|S|+\sum_{k=1}^n(-1)^{k}\sum_{1\le i_1<i_2<\cdots<i_k\le n}|\bigcap_{j=1}^kA_{i_j}| \end{aligned} \]\[\begin{aligned} |\bigcap_{i=1}^nA_i|&=|(\bigcup_{i=1}^nA_i^{\complement})^{\complement}|\\ &=|S|-\sum_{k=1}^n(-1)^{k-1}\sum_{1\le i_1<i_2<\cdots<i_k\le n}|\bigcap_{j=1}^kA_{i_j}^{\complement}|\\ &=|S|+\sum_{k=1}^n(-1)^{k}\sum_{1\le i_1<i_2<\cdots<i_k\le n}|\bigcap_{j=1}^kA_{i_j}^{\complement}| \end{aligned} \]子集反演
定义在两个集合上的函数 \(\mathbf{f,g}\),若
\[\mathbf f(S)=\sum_{T\subseteq S}\mathbf g(T) \]则
\[\mathbf g(S)=\sum_{T\subseteq S}(-1)^{|S|-|T|}\mathbf f(T) \]以后有时间再证明吧。感觉和二项式反演的证明思路可能差不多。
二项式反演
这是子集反演的特殊情况:多个集合的交集大小只和集合数目有关,而与具体是哪些集合无关。
我们用 \(g(i)\) 表示某 \(i\) 个补集的交集大小(即不满足某 \(i\) 个条件的方案数),
\(f(i)\) 表示某 \(i\) 个原集的交集大小(即钦定 / 至少满足某 \(i\) 个条件的方案数)。
特别地,\(f(0)=g(0)=|S|\),因为 \(0\) 个条件相当于任意情况。
根据上面的变形公式,我们有:
\[\begin{aligned} f(n)&=|S|+\sum_{k=1}^n(-1)^k\binom nkg(k)\\ &=\sum_{k=0}^n(-1)^k\binom nkg(k)\\ g(n)&=|S|+\sum_{k=1}^n(-1)^k\binom nkf(k)\\ &=\sum_{k=0}^n(-1)^k\binom nkf(k) \end{aligned} \]令 \(h(k)=(-1)^kg(k)\) 再代进去,可以得出:
\[\begin{aligned} f(n)&=\sum_{k=0}^n\binom nkh(k)\\ h(n)&=\sum_{k=0}^n(-1)^{n+k}\binom nkf(k)\\ &=\sum_{k=0}^n(-1)^{n-k}\binom nkf(k) \end{aligned} \]能得出二项式反演:
\[f(n)=\sum_{k=0}^n\binom nkh(k)\\ h(n)=\sum_{k=0}^n(-1)^{n-k}\binom nkf(k) \]另一种表述是,若两个序列 \(f,g\) 满足:
\[f_n=\sum_{i=0}^n\binom nig_i \]则有:
\[g_n=\sum_{i=0}^n(-1)^{n-i}\binom nif_i \]这里的 \(f,g\) 貌似代表什么都可以。
也就是说,我们可以不关心其具体意义,只要在推出这种式子时,知道它能够与另一个式子相互转化就可以了。
也可以用代入法证明。
\[\begin{aligned} f(n)&=\sum_{i=0}^n(-1)^i\binom nig(i)\\ &=\sum_{i=0}^n(-1)^i\binom ni\sum_{j=0}^i(-1)^{i-j}\binom ijf(j)\\ &=\sum_{i=0}^n\sum_{j=0}^i(-1)^{i-j}\binom ni\binom ijf(j)\\ &=\sum_{j=0}^nf(j)\sum_{i=j}^n(-1)^{i-j}\binom ni\binom ij\\ &=\sum_{j=0}^n\binom njf(j)\sum_{i=j}^n(-1)^{i-j}\binom{n-j}{i-j}\\ &=\sum_{j=0}^n\binom njf(j)\sum_{k=0}^{n-j}(-1)^k\binom{n-j}{k}\\ &=\sum_{j=0}^n\binom njf(j)(1-1)^{n-j} \end{aligned} \]这时我们不能直接把后面那项变为 \(1\),需要分类讨论。
- 当 \(n-j\ne 0\) 时,\((1-1)^{n-j}=0\)。
- 否则,回到上式,其值为 \(\sum_{k=0}^0\binom0k=\binom00=1\)。
- 综上,\(\sum_{j=0}^n\binom nj(1-1)^{n-j}=1\)。
最终,得出了 \(f(n)=f(n)\),证毕。
应用
题目常让我们求:
- 至少满足一个条件(所有集合并集大小)
- 恰好满足所有条件(所有集合交集大小)
然而,我们能求的是:
- 至少满足某 \(k\) 个条件 (某 \(k\) 个集合交集大小)
我们运用上面的公式转化一下就可以了。
P6076[JSOI2015]染色问题
先考虑颜色。“每种颜色在棋盘上至少出现一次”就是“每种颜色都要出现”。
套二项式反演:
\[g_A(c)=\sum_{i=0}^c(-1)^{c-i}\binom cif_A(i) \]对于行,我们可以强制它满足限制。也就是在计算列的时候,把方案数减一。
考虑列。
套二项式反演:
\[g_B(m)=\sum_{i=0}^m(-1)^{m-i}\binom mif_B(i) \]\[f_B(i)=((k+1)^i-1)^n \]\[f_A(k)=g_B(m)=\sum_{i=0}^m(-1)^{m-i}\binom mi((k+1)^i-1)^n \]再代回就可以了。
推导第二类斯特林数的通项公式
复习一下,\(\begin{Bmatrix}m\\k\end{Bmatrix}\) 定义是
\(m\) 个不同的元素划分为 \(k\) 个互不区分的非空集合的方案数。
设数列 \(g_k\) 表示将 \(m\) 个互不相同的元素划分为 \(k\) 个有区别集合的方案数,
\(f_k\) 表示将 \(m\) 个互不相同的元素划分为 \(k\) 个有区别非空集合的方案数。
那么显然,\(g_k=k^m\)。
通过枚举非空集合的个数,可以得知:
\[g_k=\sum_{i=0}^k\binom kif_i \]套用二项式反演:
\[f_k=\sum_{i=0}^k(-1)^{k-i}\binom kig_i \]由于斯特林数中,集合互不区分,故 \(\begin{Bmatrix}m\\k\end{Bmatrix}=\dfrac{f_k}{k!}\)
所以得出结论:
\[\begin{Bmatrix}m\\k\end{Bmatrix}=\frac 1{k!}\sum_{i=0}^k(-1)^{k-i}\binom kii^m \]标签:begin,end,bmatrix,组合,sum,笔记,学习,Bmatrix,binom 来源: https://www.cnblogs.com/hihihi198/p/16500559.html