ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

组合数学习笔记

2022-07-21 08:01:00  阅读:212  来源: 互联网

标签:begin end bmatrix 组合 sum 笔记 学习 Bmatrix binom


组合数

定义

普通定义

\[\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]\) 上成立,根据加法公式,有:

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

  • 当 \(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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有