组合数学
参考资料
斯特林数学习笔记 \(\star\)
前言
以下大部分证明都是组合意义的。
排列组合
-
\(n^{\underline k}\) 其实等价于 \(A_n^k\)。
-
值得注意的:
下降阶乘幂 \(n^{\underline{k}}\) 中 \(n\) 可以是任意实数。当我们将组合数 \(\binom{r}{k}\) 定义改为 \(\binom{r}{k} = \frac{r^{\underline{k}}}{k!}\) 时,称其为二项式系数,其中上指标可以为任意实数,下指标仍为整数,当下指标 \(k < 0\) 时,二项式系数的值为0.
计数原理
-
加法原理:并列的方案数相加。
-
乘法原理:叠加的方案数相乘。
-
减法原理:正难则反,补集转换。
-
除法原理:目测用处不大。
计数方法
-
捆绑法:要求元素相邻,先捆绑,在松绑。
-
插空法:要求元素不相邻,先插入其他,在插空。
-
隔板法:非常重要,下面会讲到。
恒等式
很多题可以通过移一下项的简单变换变成一些恒等式。恒等式的组合证明其实就是从不同选择顺序方式去拆解一种选择方案。
对称恒等式
对于 \(n, k \in \mathbb{Z}, n \ge 0\) 成立.
证明:组合意义可得。
吸收/提取恒等式
等价于:
还有一种下指标不变的形式:
对于 \(r \in \mathbb{R}, k \in \mathbb{Z}\) 且 \(k \neq 0\) 成立.
证明:
看等价形式,相当于从 \(r\) 中选出 \(k\) 个人组成一队并且让一个当队长。左边的相当于先选出一支队再选出队长;右边的相当于先选出队长,在选出剩下的人。下指标不变形式证明也是如下。
加法/归纳恒等式
对于 \(r \in \mathbb{R}, k \in \mathbb{Z}\) 成立.
证明:
- 杨辉三角
- 相当于动态规划,枚举第 \(r\) 个数选还是不选。
三项式恒等式
证明:
相当于从 \(n\) 个数中选出 \(k\) 个,再在 \(k\) 个中选出 \(m\) 个作为关键数。
子集和/下指标求和
证明:
左边按子集大小 \(k\) 分类计数所有子集。
右边对每个元素决定“选或不选”,共有 \(2^n\) 种选择.
交错和/下指标交错和
证明:
左边是“偶大小子集数”减去“奇大小子集数”。固定元素 \(1\),对每个不含 \(1\) 的子集 \(A\),把它与 \(A \cup \{1\}\) 配对。这个配对把子集大小奇偶性互换,因此偶大小子集与奇大小子集一一对应,数量相等,差为 \(0\)。
下指标带权求和
证明:
其实就是上面说的选队长。
上指标求和/朱世杰恒等式
证明:
相当于从 \(n+1\) 个数中选出 \(k+1\) 个数。左边的意义就是:考虑最大元素是 \(i+1\),那么剩下 \(k\) 个数只能从 \(1\sim i\) 中选出。根据加法原理易得。
平行恒等式
对于 \(n, m \in \mathbb{Z}\) 成立。
证明:
将 \(m+i\choose i\) 换成 \(m+i\choose m\) 就变成了上指标求和了。
范德蒙德卷积/下指标卷积
证明:
设有 \(m\) 个红球、\(n\) 个蓝球,共 \(m+n\) 个球。从中共选 \(k\) 个球。
右边直接计数:\(\binom{m+n}{k}\)。
左边按选出的红球个数 \(i\) 分类:选 \(i\) 个红球有 \(\binom{m}{i}\) 种,选 \(k-i\) 个蓝球有 \(\binom{n}{k-i}\) 种。求和即所有情况。
平方和恒等式
证明:
其实就是范德蒙德卷积特殊形式。
上指标卷积
证明:
左边相当于枚举一个分界点,再在分界点左边选择 \(a\) 个数,在分界点右边选择 \(b\) 个数。等价于从 \(n+1\) 个数中选出 \(a+b+1\) 个数,其中一个作为分界点。
卡特兰数
卡特兰数列
下标从 0 开始:
\(1,1,2,5,14,42,132.429,1430,4862\)
容易发现他的增长速度飞快。最好能记一下几个数字,说不定考场上有灵感。
计算公式
公式 1:
适用于 \(n\) 较大的情况。证明由折线问题给出。
公式 2:
适用于 \(n\) 较小的卡特兰数,不需要求逆元,复杂度 \(O(n^2)\)。证明同样可以由折线问题给出,或者是二叉树问题。
公式 3:
适用于 \(n\) 较大,需要求逆元,\(O(n)\)。证明就是拆公式 1。
应用
折线问题
问题描述:现有一个 \(n \times n\) 的棋盘,从左下角走到右上角,且一直在主对角线下面走,不能穿过主对角线,求路径的方案数。
这个限制等价于走到任意一步 \(k\) 都需要满足向右走的次数大于等于向上走的次数。
经典的反射容斥 \(C_n={2n\choose n}-{2n\choose n+1}={1\over n+1}{2n\choose n}\),得到公式一。
我们还有一种角度,考虑经过 \((i,i)\),那么从 \((0,0)\) 走到 \((i,i)\) 的合法方案数为 \(C_i\),从 \((i,i)\) 走到 \((n,n)\) 的合法方案数为 \(C_{n-i-1}\),枚举 \(i\),乘法原理得:\(C_n=\sum_{i=1}^{n-1}C_iC_{n-i-1}\)。得到公式二。
括号问题
问题描述:用 \(n\) 个左括号和 \(n\) 个右括号,求能组合出多少种合法的括号序列。
发现问题就是对于该字符串的任意长度前缀,都要满足左括号的数量大于等于右括号的数量,和上面的折线问题实际上是一样的,方案数为 \(C_n\)。
出栈序列问题
问题描述:给定一个入栈序列,求有多少种不同的出栈序列?
对于每个数,都是入栈一次,出栈一次,对于每个时刻,只有栈的大小大于等于 \(1\) 才可以出栈,即每时每刻需要满足入栈次数大于等于出栈次数,还是卡特兰数。
二叉树问题
问题描述:\(n\) 个节点构成的二叉树,求有多少种不同的形态?
这个问题其实就是公式2的模型,设 \(f_{x,i}\) 为 \(x\) 子树分配 \(i\) 个点的答案,考虑从叶子节点往上递归。
对于叶子节点,\(f_{x,0} = 1\)
对于一个非叶子节点 \(x\),设其左子树节点数量+右子树节点数量 \(= k\),则
为卡特兰数递推式。
斯特林数
第一类斯特林数
基础
- 符号:\(\begin{bmatrix} n \\ m \end{bmatrix}\)
- 定义:把 \(n\) 个不同元素分成 \(m\) 个环排列的方案数。环可以旋转。其实这个环排列就是置换环。
递推式
证明:
考虑新加进来一个元素,第一种是单独成环,方案数是 \(\begin{bmatrix} n-1 \\ m-1 \end{bmatrix}\);第二种是在一个环内插入,方案数是 \((n-1) \begin{bmatrix} n-1 \\ m \end{bmatrix}\)。
恒等式 1
证明:
长度为 \(n\) ,有 \(i\) 个循环的置换个数为 \(\begin{bmatrix} n \\ i \end{bmatrix}\),所以表达的是长度为 \(n\) 的所有置换,个数为 \(n!\)。这里的置换指的就是一种指向关系。
恒等式 2
证明:
非常优美的组合证明,考虑给每个置换环染上 \(x\) 种颜色。
左边:
动态插入 \(k\) 个数,第 \(i\) 个数都可以自己选择另外成环,贡献是 \(x\),也可以选择接在 \(i-1\) 个数任意一个后面,贡献是 \(i-1\)。根据乘法原理可得 \(x^{\overline{k}}\)。
右边:
枚举环的个数,每个环可以有 \(x\) 种选择,故得右边的式子。
左右等价,证毕。
第二类斯特林数
基础
- 符号:\(\begin{Bmatrix} n \\ m \end{Bmatrix}\)
- 定义:把 \(n\) 个不同元素丢进 \(m\) 个相同盒子,无空盒的方案数。无标号非空方案数。
递推式
证明:
考虑新加进来一个元素,第一种是单独建盒,方案数是 \(\begin{Bmatrix} n-1 \\ m-1 \end{Bmatrix}\);第二种是在一个盒内放入,方案数是 \(m \begin{Bmatrix} n-1 \\ m \end{Bmatrix}\)
通项公式
设 \(S(n,k) = \begin{Bmatrix} n \\ k \end{Bmatrix}\)。把 \(n\) 个有标号元素恰好分到 \(k\) 个有标号盒子里,且每盒非空,这样的放法数为 \(g(k)=k!S(n,k)\)。
我们可以经典的恰好转化成至少/至多,这里转化成至多(转成至少比较麻烦)定义 \(f(k)=k^n\) 表示至多有 \(k\) 个盒子非空的方案数,故有
根据二项式反演可得
因此
两边除以 \(k!\),得
恒等式 1
\(m^n\) 就是有 \(n\) 个球,放在 \(m\) 个盒子里。考虑枚举放哪几个盒子,盒子是有顺序地放的。因此是 \(m^{\underline{i}}\);然后在这些盒子里面放球,所以是 \(\begin{Bmatrix} n \\ i \end{Bmatrix}\)。
恒等式 2
对原式二项式反演就行了。
快速求斯特林数
先搁置,详细看参考资料。

浙公网安备 33010602011771号