常见组合数

卡特兰数

排列 \(n\)\(-1\)\(n\)\(+1\),要求前缀和恒 \(\ge 0\),方案数。

这个就是括号匹配对吧,我们考虑第一个左括号匹配的右括号在什么地方。得到递推式

\[C_n=\sum_{i=1}^nC_{i-1}C_{n-i} \]

它的前几项是 \(1,1,2,5,14,42,132\),可能会在某些找规律里看到。

解这个递推式,我们可以得到

\[C_n=\frac{\binom{2n}{n}}{n+1} \]

为了训练 GF,我们展示一下中间过程。

\[xF^2+1=F\Rightarrow F=\frac{1\pm\sqrt{1-4x}}{2x} \]

为了确定符号,我们分子有理化后代入 \(x=0\),也就是求出 \([x^0]\),发现应该取负号。

为了展开 \(\sqrt{1-4x}\),我们使用牛顿二项式定理。

\[\begin{aligned} \sqrt{1-4x}&=\sum_{k\ge 0}(-4x)^k\binom{\frac12}{k}\\ &=\sum_{k\ge 0}(-4x)^k\frac{(\frac12)^{\underline{k}}}{k!}\\ &=1+\sum_{k\ge 1}(-4x)^k\frac{(-1)^{k-1}(2k-3)!!}{2^kk!}\\ &=1-\sum_{k\ge 1}2^kx^k\frac{(2k-2)!}{k!(k-1)!2^{k-1}}\\ &=1-\sum_{k\ge 1}2x^k\binom{2k-1}k\frac{1}{2k-1} \end{aligned} \]

代回原式,得到

\[\begin{aligned} \sum_{k\ge 1}x^{k-1}\binom{2k-1}k\frac1{2k-1}&=\sum_{k\ge 0}x^k\binom{2k+1}{k+1}\frac{1}{2k+1}\\ &=\sum_{k\ge 0}\binom{2k}{k}\frac{1}{k+1}x^k \end{aligned} \]

斯特林数

首先是大家都知道的递推式。

\[{n\brace k}={n-1\brace k-1}+k{n-1\brace k}\\ {n\brack k}={n-1\brack k-1}+(n-1){n-1\brack k} \]

然后第二类斯特林数有一个假的通项公式。

\[{n\brace k}=\frac1{k!}\sum_{i=0}^k(-1)^{k-i}\binom{k}{i}i^n=\sum_{i=0}^k\frac{(-1)^{k-i}i^n}{i!(k-i)!} \]

根据这个公式,我们可以卷积计算同一行第二类斯特林数。

为了计算同一列斯特林数,我们可以尝试写出它的生成函数 \(F_k=\sum_{n\ge 0}{n\brace k}x^n\)

我们考虑一个集合的选择方案,你发现 EGF 是 \(e^x-1\),所以 \(F_k=(e^x-1)^k\),我们计算多项式幂即可。

然后第一类斯特林数,类似地有一个生成函数 \(F_k=(\sum_{i\ge 1}\frac{x^i}{i})^k\),仍然计算次幂即可。

同一行的话,我们找个 OGF,然后用递推式构造一下,发现 \(F_n(x)=x^{\overline{n}}\)

然后斯特林数最重要的应用都跟这些东西无关。最重要的是上升/下降幂与普通幂的转化。

首先有

\[x^n=\sum_k{n\brace k}x^{\underline{k}}\\ x^{\overline{n}}=\sum_k{n\brack k}x^k \]

证明使用归纳法,进行一个类似裂项的拆就可以了。

然后,要介绍一个重要的公式,叫做反转公式。

\[\sum_k(-1)^{n-k}{n\brace k}{k\brack m}=[n=m]\\ \sum_k(-1)^{n-k}{n\brack k}{k\brace m}=[n=m] \]

证明考虑连续使用变化的式子。

\[\begin{aligned} x^n&=\sum_{k}{n\brace k}x^{\underline{k}}\\ &=\sum_k{n\brace k}(-1)^k(-x)^{\overline{k}}\\ &=\sum_k{n\brace k}(-1)^k\sum_p{k\brack p}(-x)^p\\ &=\sum_px^p\sum_k{n\brace k}{k\brack p}(-1)^{p+k} \end{aligned} \]

这样就证明了上面第一个式子。第二个我并不想证。

有了这个式子,我们就会斯特林反演了。

贝尔数

\[B_n=\sum_k{n\brace k} \]

递推可以考虑 \(n\) 跟谁放到一起了。

\[B_n=\sum_{k=0}^{n-1}\binom{n-1}{k}B_{n-1-k} \]

由组合意义,容易知道它的 EGF 是 \(\exp(e^x-1)\)

分拆数

这是无序的拆分方案数。前几项是 \(1,1,2,3,5,7,11,15,22\)

进一步可以定义 \(k\) 部分拆数 \(p_{n,k}\)

显然有递推式

\[p_{n,k}=p_{n-1,k-1}+p_{n-k,k} \]

如果你直接枚举有几个 1,也可以写成

\[p_{n,k}=\sum_{j=0}^kp_{n-k,j} \]

显然,分拆数生成函数是 \(\prod_{i\ge1}\frac{1}{1-x^i}\)\(k\) 部分拆数是 \(\prod_{i\ge 1}\frac{1}{1-x^iy}\)

当然,你也可以定义最大 \(k\) 分拆数,就是最大部分是 \(k\) 的分拆数。

这个显然也有递推式

\[p_{n,k}=\sum_{i=0}^kp_{n-k,i} \]

你发现递推式长得跟 \(k\) 部分拆数完全一样,并且边界条件完全一样,所以它们是完全一样的。

事实上,如果我们把分拆画成一个类似杨表的形式,你发现把杨表沿对角线翻转,就可以证明它们确实是一样的。

还有互异分拆数。我们类似定义互异 \(k\) 部分拆数,有递推式

\[p_{n,k}=p_{n-k,k}+p_{n-k,k-1} \]

分拆数当中一个值得提到的点就是,\(n\) 至多被表示成 \(O(\sqrt{n})\) 个不同自然数的和。

这有个题,我咋不会做啊。

link

posted @ 2024-07-12 17:26  PYD1  阅读(15)  评论(0)    收藏  举报