组合数学学习笔记(upd 2025.12.29)

组合数学学习笔记

排列组合

排列组合的定义

排列:\(A_n^m=\large \frac{n!}{(n-m)!}\)

组合:\(\large \binom{n}{m}=\frac{n!}{m!(n-m)!}\)

插板法

这个东西非常重要

核心思想是转化问题为往空位中插入板子;

主要难点是刻画题目限制(显然);

Instance 1:正整数数目和

问题:现在有 \(n\) 个完全相同的元素,要求把这些元素分成 \(m\) 组,并且每组非空,求本质不同方案数。

可以把问题转化为:往 \(n-1\) 个空位中插入 \(m-1\) 个板子,因此答案是 \(\binom{n-1}{m-1}\)

这个也是方程 \(\sum \limits_{i=1}^n x_i =m\) 的正整数解数。

Instance 2:非负整数数目和

问题:现在有 \(n\) 个完全相同的元素,要求把这些元素分成 \(m\) 组,并且每组可以为空,求本质不同方案数。

考虑怎么刻画“空组”:可以加入 \(m\) 个元素,这 \(m\) 个元素当作空位;因为所有元素完全相同,我们可以当作每一组中都有且仅有一个空位。那么这样每一种插板方案都唯一对于一种原来的合法方案。

因此答案是 \(\binom{n+m-1}{m-1}=\binom{n+m-1}{n}\)

这个也是方程 \(\sum \limits_{i=1}^n x_i =m\) 的非负整数解数。

Instance 3:带下界的数目和

问题:现在有 \(n\) 个完全相同的元素,要求把这些元素分成 \(m\) 组,并且第 \(i\)至少分到 \(a_i\),求本质不同方案数。

既然要求至少分到若干个,那就先分出去给它嘛:那么就剩下 \(n-\sum \limits_{i=1}^na_i\) 个物品,套用例二的式子,也就是 \(\binom{n-\sum \limits_{i=1}^n a_i +m-1}{m-1}\)

这个也是方程 \(\sum \limits_{i=1}^n x_i =m\) 的满足 \(\forall_{1\le i\le n}x_i \ge a_i\) 的解数。

Instance 4:不相邻的排列

可以转化为例二的情况。

二项式定理

\[(a+b)^n=\sum \limits_{i=0}^n \binom{n}{i}a^ib^{n-i} \]

然OIer不需要证明

多重组合数

问题:给定包含 \(n\) 个元素的可重集 \(S\),求 \(S\) 的全排列数。

考虑元素互不相同时,全排列为 \(n!\);因为对于相同的元素,调整先后顺序后排列本质相同,因此需要除去相同元素的全排列数。

\(a_i\) 表示 \(x_i\) 的个数,那么 \(S\) 的全排列为 \(\large \frac{n!}{\prod_ia_i}\)

这样的 \(S\) 的全排列数被称为多重组合数,可以表示为 \(\binom{n}{n_1,n_2,\cdots,n_k}\)

二项式推论

\[\binom{n}{m}=\binom{n}{n-m} \]

由公式可以简单推出。实际意义就是对原来每一个集合取补集。

\[\binom{n}{m}=\binom{n-1}{m-1}+\binom{n-1}{m} \]

这个是杨辉三角的递推式。可以用在 \(O(n^2)\) 求组合数。

\[\sum \limits_{i=0}^n \binom{n}{i}=2^n \]

\(a=1,b=1\) 带入二项式定理就行。

\[\sum \limits_{i=0}^n (-1)^i\binom{n}{i}=[n=0] \]

\(a=1,b=-1\) 带入二项式定理即可。

\[\sum_{i=0}^k\binom{n}{i}\binom{m}{k-i}=\binom{n+m}{k} \]

这是范德蒙恒等式,下面给出一种证明:考虑从两个无交集合 \(A\)\(B\) 中取 \(k\) 个元素,其中 \(A\) 的大小为 \(n\)\(B\) 的大小为 \(m\),方案数显然为 \(\binom{n+m}{k}\)。考虑枚举 \(A\) 中取了 \(i\) 个元素,那么方案数为 \(\binom{n}{i}\binom{m}{k-i}\),求和后即得证。

\[\sum_{i=0}^n\binom{n}{i}^2=\binom{2n}{n} \]

这是范德蒙恒等式当 \(n=m=k\) 的特殊情况。

\[\sum_{i=0}^ni\binom{n}{i}=n2^{n-1} \]

可以通过对二项式定理求导证明,给出组合意义:考虑等式左边其实是:大小为 \(n\) 的集合的所有子集的大小之和。在这个情景下,考虑每一个元素的贡献:钦定选取它,然后其他 \(n-1\) 个元素可以任选,也就是被计算了 \(2^{n-1}\) 次。那么所有元素的贡献和为 \(n2^{n-1}\),证毕。

\[\sum_{i=0}^ni^2\binom{n}{i}=n(n+1)2^{n-2} \]

还是可以通过对二项式定理求导证明,给出组合意义:考虑等式左边其实是:大小为 \(n\) 的集合的所有子集的大小平方之和。大小平方之和可以转化为选取有序对 \((x,y)\) 的方案数。由此考虑每一个有序对的贡献:

  • 如果 \(x=y\):那么其他 \(n-1\) 个元素情况任意,贡献为 \(2^{n-1}\),有 \(n\) 个这样的有序对;

  • 如果 \(x\neq y\):那么其他 \(n-2\) 个元素任意,贡献为 \(2^{n-2}\),有 \(n(n-1)\) 个这样的有序对;

总方案数为 \(n2^{n-1}+n(n-1)2^{n-2}=n(n+1)2^{n-2}\),证毕。

\[\sum \limits_{l=0}^n\binom{l}{k}=\binom{n+1}{k+1} \]

这是朱世杰恒等式。证明:考虑将一个大小为 \(n+1\) 的集合取出 \(k+1\) 个不同元素的方案数,那么可以钦定选取元素中下标最大值,然后再从剩余的任意选 \(k\) 个。

\[\sum_{i=0}^n\binom{n-i}{i}=F_{n+1} \]

其中 \(F\) 是斐波那契数列。证明:考虑斐波那契数列的组合意义:从数 \(0\) 出发,一次可以加 \(1\) 或加 \(2\),得到 \(n\) 的方案数就是 \(F_n\)。那么其实考虑上述形式的另一种计算方式:钦定加 \(2\) 的次数为 \(i\),那么总操作次数一定为 \(n-2i\),那么方案数就是在 \(n-2i\) 次操作中选 \(i\) 次为加 \(2\),也就是 \(\binom{n-i}{i}\)

\[\binom{n}{i}\binom{i}{j}=\binom{n}{j}\binom{n-j}{i-j} \]

同时展开两边即可证明。

容斥相关

容斥原理

设全集 \(U\) 中有 \(n\) 种不同的属性,拥有第 \(i\) 种属性的元素集合为 \(S_i\),那么有:

\[|\bigcup_{i=1}^nS_i|=\sum_{T \subseteq U}(-1)^{|T|-1}|\bigcap_{i \in T}S_i| \]

证明:考虑每一个元素的贡献,假设它一共有 \(m\) 种属性,选择其中 \(k\) 个集合的方案数是 \(\binom{m}{k}\),贡献系数为 \((-1)^{k-1}\),那总贡献就是:

\[\sum_{k=1}^m(-1)^k\binom{m}{k}=\binom{m}{0}-(1-1)^m=1 \]

Min-Max 容斥

\(\{x_i\}\) 是一个大小为 \(n\) 的元素间满足全序关系且具有加减性的元素列,\(S=\{i|i\in[0,n-1]\cap Z\}\)。Min-Max 容斥的一般形式如下:

\[\begin{aligned} \max_{i\in S} x_i&=\sum_{T \subseteq S} (-1)^{|T|-1}\min_{i\in T}x_i\\ \min_{i\in S} x_i&=\sum_{T \subseteq S} (-1)^{|T|-1}\max_{i\in T}x_i\\ \end{aligned} \]

注意到两式形式类似,所以这里只证明最大值形式(第一个):考虑第 \(k\) 大元素的贡献,那么钦定它做最小值,那么还可以选 \(k-1\) 个元素。考虑这个元素的贡献系数:

\[\sum_{i=0}^{k-1}\binom{k-1}{i}(-1)^{i-1}=(1-1)^{k-1}=[k=1] \]

结论:当前仅当 \(k=1\) 时(即选到最大值时)贡献系数为 \(1\)

二项式反演

把它单独提出来是因为它又难又重要,而且考的频率还算中等。

一维至多形式

\(f_n\) 表示恰好选取 \(n\) 个元素形成特定结构的方案数,\(g_n\) 表示至多选取 \(n\) 个元素形成特定结构的方案数,显然有:

\[g_n=\sum_{i=0}^n\binom{n}{i}f_i \]

但是如果此时知道 \(g\) 想要反求 \(f\) 呢?那么也有式子:

\[f_n=\sum_{i=0}^n(-1)^{n-i}\binom{n}{i}g_i \]

已知 \(g\) 反求 \(f\) 的过程叫二项式反演

证明:考虑每一个元素的贡献,\(f_i\)\(g_j\) 的贡献系数为 \(\binom{j}{i}\)\(g_j\)\(f_n\) 的贡献系数为 \((-1)^{n-j}\binom{n}{j}\),那么合起来就是:

\[\begin{aligned} \sum_{j=i}^n(-1)^{n-j}\binom{j}{i}\binom{n}{j}&=\sum_{j=i}^n(-1)^{n-j}\binom{n-i}{j-i}\binom{n}{i}\\ &=\sum_{j=i}^n(-1)^{n-j}\binom{n-i}{n-j}\binom{n}{i}\\ &=\sum_{k=0}^{n-i}(-1)^k\binom{n-i}{k}\binom{n}{i}(k=n-j)\\ &=[n-i=0]\binom{n}{i} \end{aligned} \]

当且仅当 \(i=n\) 时,\(f_n\) 的系数为 \(1\),其余情况为 \(0\),证毕。

一维至少形式

\(f_n\) 表示恰好选取 \(n\) 个元素的方案数,\(g_n\) 表示至少选取 \(n\) 个的方案数,那么有:

\[\begin{aligned} g_{n}&=\sum_{i=n}\binom{i}{n}f_i\\ f_n&=\sum_{i=n}(-1)^{i-n}\binom{i}{n}g_i \end{aligned} \]

证明略。

二维至少形式

\(f_n\) 表示恰好选取 \(n,m\) 个元素的方案数,\(g_n\) 表示至少选取 \(n,m\) 个的方案数,那么有:

\[\begin{aligned} g_{n,m}&=\sum_{i=n}\sum_{j=m}\binom{i}{n}\binom{j}{m}f_{i,j}\\ f_{n,m}&=\sum_{i=n}\sum_{j=m}(-1)^{(i-n)+(j-m)}\binom{i}{n}\binom{j}{m}g_{i,j} \end{aligned} \]

更高维的形式可以以此类推。

在实际计算时,注意到两维的转移相对独立,可以分步转移,时间复杂度可以由 \(O(n^4)\) 降至 \(O(n^3)\)(认为两维上限均为 \(n\))。

posted @ 2025-08-04 22:03  XiaoZi_qwq  阅读(20)  评论(0)    收藏  举报