一些特殊的组合数列

组合小杂烩

卡特兰数

Catalan 数列 \(H_n\) 有三个表达式:

\[\begin{aligned} H_n&= \begin{cases} \sum\limits_{i=0}^{n-1}H_iH_{n-i-1}&(n\ge2)\\ 1&(n=0,1) \end{cases}\\ &={H_{n-1}(4n-2)\over n+1}\\ &={2n\choose n}-{2n\choose n-1}={{2n\choose n}\over n+1} \end{aligned} \]

Catalan 数列的组合意义

  • \(n\times n\) 方格图要从左下走到右上,只能经过左下到右上的对角线和对角线下方的点的方案数。
  • 圆上 \(2n\) 个点成对连成 \(n\) 条弦互不相交的方案数。
  • 一个栈,\(n\) 个元素依次进栈,出栈的方案数。
  • 对角线不相交的情况下将 \(n\) 个节点的凸多边形延对角线划分成三角形的方案数。
  • \(n\) 个节点构成不同二叉树的方案数
  • \(\cdots\)

上面几种应用或都隐含了相似之处:两维之间一维一定比另一维小。如走方格时向上走步数必定 \(\le\) 向右走;栈中每一时刻出栈数必定 \(\le\) 入栈;二叉树可添加节点一定大于已有节点等等。

关于 \(O(n^2)\) 递推式,划分圆与凸多边形可以很好解释。即指定一点,枚举连到其他点分割产生两个图形的方案数乘积并累加。

下面我们给出封闭形式的证明。

Catalan 数列的证明

我们从 \(O(n^2)\) 递推式入手,设它的普通生成函数为 \(H(x)\)

\[H(x)=\sum_{n\ge 0}H_nx^n \]

按递推式展开,拿出 \(n=0\) 项(避免下标为负),有:

\[1+\sum_{n\ge1}\sum_{i=0}^{n-1}H_ix^iH_{n-i-1}x^{n-i-1}x \]

交换求和次序,用 \(n-1\) 替换 \(n\) 有:

\[1+x\sum_{i\ge0}H_ix^i\sum_{n\ge0}H_{n-i}x^{n-i} \]

出现了两个 \(H(x)\) 的卷积,即有:

\[1+xH^2(x) \]

得到方程

\[H(x)=1+xH^2(x) \]

解得 \(H(x)\) 封闭形式

\[H(x)={1\pm\sqrt{1-4x}\over 2x} \]

封闭形式只有一个,我们将分子有理化

\[H(x)={2\over 1\mp\sqrt{1-4x}} \]

再带入 \(x=0\),得到 \(H_0\)\(1\) 的即是正确的答案;分母为 \(0\) 的不收敛,舍去。所以有唯一封闭形式

\[H(x)={2\over 1+\sqrt{1-4x}}={1-\sqrt{1-4x}\over 2x} \]

用广义二项式定理展开根式,单独处理 \(n=0\) 项,有

\[\begin{aligned} (1-4x)^{1\over2}&=\sum_{n\ge0}{{1\over2}\choose n}(-4x)^n\\&=1+\sum_{n\ge1}{({1\over2})^\underline n\over n!}(-4x)^n \end{aligned} \]

其中

\[\begin{aligned} ({1\over2})^{\underline n}&={1\over2}{-1\over2}{-3\over2}\cdots{-(2n-3)\over2}\\ &={(-1)^{n-1}(2n-3)!!\over 2^n}\\ \end{aligned} \]

同乘 \((2n-3)!!\),有

\[{(-1)^{n-1}(2n-2)!!\over 2^n(2n-2)!}\\ \]

分母把双阶乘项的 \(2\) 都提出来,有

\[{(-1)^{n-1}(2n-2)!\over2^{2n-1}(n-1)!} \]

带回展开的二项式,得

\[(1-4x)^{1\over2}=1+\sum_{n\ge1}{(-1)^{n-1}(2n-2)!\over2^{2n-1}(n-1)!n!}(-4x)^n \]

约掉负号和 \(2^{2n-1}\),得到

\[1-\sum_{n\ge1}{(2n-2)!\over(n-1)!n!}2x^n \]

化成组合数即

\[1-\sum_{n\ge1}{2n-1\choose n}{1\over2n-1}2x^n \]

带回原式有

\[\begin{aligned} H(x)={1-\sqrt{1-4x}\over 2x}&={1\over2x}\sum_{n\ge1}{2n-1\choose n}{1\over 2n-1}2x^n\\ &=\sum_{n\ge1}{2n-1\choose n}{1\over2n-1}x^{n-1} \end{aligned} \]

\(n+1\) 替换 \(n\),有

\[\sum_{n\ge0}{2n+1\choose n}{1\over2n+1}x^{n} \]

最后吸收公式,得到

\[\sum_{n\ge0}{2n\choose n}{1\over n+1}x^n \]

即有通项公式

\[H_n={2n\choose n}{1\over n+1} \]

得证。

斯特林数

第二类斯特林数

定义

第二类斯特林数 \(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\brace0}=[n=0],\ {n\brace 1}={n\brace n}=1(n>0) \]

\[{n\brace2}=2^{n-1}-1(n>0),\ {n\brace n-1}={n\choose 2} \]

其它组合意义很显然,我们考虑 \({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\brace k}=k{n-1\brace k}+{n-1\brace k-1} \]

同时可以考虑组合意义:已经放好了 \(n-1\) 个元素,第 \(n\) 个元素可以放到 \(k\) 个非空集合中的中的某一个,也可以新开一个集合。

posted @ 2025-01-30 22:01  Ydoc770  阅读(38)  评论(1)    收藏  举报