其他分享
首页 > 其他分享> > 组合数学习笔记

组合数学习笔记

作者:互联网

组合数

定义

普通定义

\[\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\) 个,可分为两种情况:

上指标求和

\[\sum_{i=0}^n\binom ik=\binom{n+1}{k+1} \]

证明:数学归纳法。

\[\begin{aligned} \binom{n+1}{k+1}&=\binom nk+\binom n{k+1}\\ &=\binom nk+\sum_{i=0}^{n-1}\binom ik\\ &=\sum_{i=0}^n\binom ik \end{aligned} \]

因此,结论成立。

吸收恒等式

\[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) 是等价的(ab 不同时成立等同于两者之一不成立),这就是上面第二个式子的一种情况,第一个式子同理。

基本公式的变形

根据德摩根定律变形:

\[\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\),需要分类讨论。

最终,得出了 \(f(n)=f(n)\),证毕。

应用

题目常让我们求:

然而,我们能求的是:

我们运用上面的公式转化一下就可以了。

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