一些特殊的组合数列
组合小杂烩
卡特兰数
Catalan 数列 \(H_n\) 有三个表达式:
Catalan 数列的组合意义
- \(n\times n\) 方格图要从左下走到右上,只能经过左下到右上的对角线和对角线下方的点的方案数。
- 圆上 \(2n\) 个点成对连成 \(n\) 条弦互不相交的方案数。
- 一个栈,\(n\) 个元素依次进栈,出栈的方案数。
- 对角线不相交的情况下将 \(n\) 个节点的凸多边形延对角线划分成三角形的方案数。
- \(n\) 个节点构成不同二叉树的方案数
- \(\cdots\)
上面几种应用或都隐含了相似之处:两维之间一维一定比另一维小。如走方格时向上走步数必定 \(\le\) 向右走;栈中每一时刻出栈数必定 \(\le\) 入栈;二叉树可添加节点一定大于已有节点等等。
关于 \(O(n^2)\) 递推式,划分圆与凸多边形可以很好解释。即指定一点,枚举连到其他点分割产生两个图形的方案数乘积并累加。
下面我们给出封闭形式的证明。
Catalan 数列的证明
我们从 \(O(n^2)\) 递推式入手,设它的普通生成函数为 \(H(x)\)。
按递推式展开,拿出 \(n=0\) 项(避免下标为负),有:
交换求和次序,用 \(n-1\) 替换 \(n\) 有:
出现了两个 \(H(x)\) 的卷积,即有:
得到方程
解得 \(H(x)\) 封闭形式
封闭形式只有一个,我们将分子有理化
再带入 \(x=0\),得到 \(H_0\) 为 \(1\) 的即是正确的答案;分母为 \(0\) 的不收敛,舍去。所以有唯一封闭形式
用广义二项式定理展开根式,单独处理 \(n=0\) 项,有
其中
同乘 \((2n-3)!!\),有
分母把双阶乘项的 \(2\) 都提出来,有
带回展开的二项式,得
约掉负号和 \(2^{2n-1}\),得到
化成组合数即
带回原式有
用 \(n+1\) 替换 \(n\),有
最后吸收公式,得到
即有通项公式
得证。
斯特林数
第二类斯特林数
定义
第二类斯特林数 \(n\brace k\) 表示将 \(n\) 个元素划分成 \(k\) 个非空子集的方案数。
通常情况下,第二类斯特林数比第一类有更好的性质,且更好处理。
特殊值与递推式
我们打表观察:
| \(n\) | \(n\brace0\) | \(n\brace1\) | \(n\brace2\) | \(n\brace3\) | \(n\brace4\) | \(n\brace5\) | \(n\brace6\) |
|---|---|---|---|---|---|---|---|
| \(0\) | \(\ \ 1\) | ||||||
| \(1\) | \(\ \ 0\) | \(\ \ 1\) | |||||
| \(2\) | \(\ \ 0\) | \(\ \ 1\) | \(\ \ 1\) | ||||
| \(3\) | \(\ \ 0\) | \(\ \ 1\) | \(\ \ 3\) | \(\ \ 1\) | |||
| \(4\) | \(\ \ 0\) | \(\ \ 1\) | \(\ \ 7\) | \(\ \ 6\) | \(\ \ 1\) | ||
| \(5\) | \(\ \ 0\) | \(\ \ 1\) | \(\ 15\) | \(\ 25\) | \(\ 10\) | \(\ \ 1\) | |
| \(6\) | \(\ \ 0\) | \(\ \ 1\) | \(\ 31\) | \(\ 90\) | \(\ 65\) | \(\ 15\) | \(\ \ 1\) |
观察出第二类斯特林数的一些特殊值:
其它组合意义很显然,我们考虑 \({n\brace2}\) 的组合意义:划分成两个集合,可以枚举其中一个集合里的元素,另一个集合就是剩下的元素。为防止重复,个数可以从 \(2\) 枚举到 \(\lfloor{n\over2}\rfloor\)。如果从 \(2\) 枚举到 \(n-1\),没种情况又刚好算了 \(2\) 次。如果凑成 \(\sum_{i=0}^n{n\choose i}\),则要 \(-2\) 再除以 \(2\)。这样就得到了原式。
观察上表,我们还可以大致推出第 \(n\) 行 \(k\) 列的值等于 \(k\) 倍第 \(n-1\) 行 \(k\) 列的值加上第 \(n-1\) 行 \(k-1\) 列的值。
事实上,我们可以归纳证明第二类斯特林数有递推式:
同时可以考虑组合意义:已经放好了 \(n-1\) 个元素,第 \(n\) 个元素可以放到 \(k\) 个非空集合中的中的某一个,也可以新开一个集合。

浙公网安备 33010602011771号