斯特林数

生成函数:

我们可以将多项式看成一个数组 \((a_0,a_1,\cdots,a_{n-1})\),当然这个数组得是有限的,那如果这个数组是无限的会发生什么呢?

形式幂级数的定义:

\(a_0,a_1,\cdots\) 是域 \(F\) 上的序列,则称 \(a_0+a_1x+a_2x^2+\cdots=\displaystyle\sum_{k=0}^{\infty}a_kx^k\)\(F\) 上 的一个形式幂级数,即所有 \(F\) 上的形式幂级数的集合为 \(F[[x]]\)

形式幂级数的加减法就是按位加减,乘法就是卷积。

对于一个序列 \(a_0,a_1,\cdots\),它所对应的形式幂级数被称为 \(\{a_k\}_{k=0}^{\infty}\) 的普通生成函数;序列 \(b_k=\dfrac{a_k}{k!}\) 的生成函数被称为 \(\{a_k\}_{k=0}^{\infty}\) 的指数生成函数。生成函数一般指普通生成函数。

下面是本文会用到的三个幂级数:

  • \(e^x=\displaystyle\sum_{k=0}^{\infty}\dfrac{x^k}{k!}=1+x+\dfrac{x^2}{2}+\dfrac{x^3}{6}+\dfrac{x^4}{24}+\cdots\)
  • \((1+x)^{\alpha}=\displaystyle\sum_{k=0}^{\infty}{\alpha\choose k}x^k=1+\alpha x+\dfrac{\alpha(\alpha-1)}{2}x^2+\dfrac{\alpha(\alpha-1)(\alpha-2)}{6}x^3+\cdots\),这是广义二项式定理。
  • \(\ln(1+x)=\displaystyle\sum_{k=1}^{\infty}\dfrac{(-1)^{k-1}x^k}{k}=x-\dfrac{x^2}{2}+\dfrac{x^3}{3}-\dfrac{x^4}{4}+\cdots\)

生成函数解递推式:

就以斐波那契数列为例,令 \(f_i\) 为斐波那契数列的第 \(i\) 项,设 \(F(x)\) 是它的生成函数。由于 \(f_{k+2}=f_{k+1}+f_k\),所以我们有 \(F(x)-1=xF(x)+x^2F(x)\)(这种生成函数解方程的方式很常见,有时可能还是微分方程,比如 Bell 数),这样我们可以解得 \(F(x)=\dfrac{1}{1-x-x^2}\),我们可以对这个分式做部分分式分解,将其变简单,更方便使用广义二项式定理展开。令 \(\phi=\dfrac{1+\sqrt 5}{2}\),则 \(F(x)=\dfrac{\dfrac{1}{\sqrt 5}}{\dfrac{1}{\phi}-x}-\dfrac{\dfrac{1}{\sqrt 5}}{\dfrac{1}{1-\phi}-x}\),由广义二项式定理,\(\dfrac{1}{t-x}=\displaystyle{k=0}^{\infty}\dfrac{x^k}{t^{k+1}}\),所以 \(F(x)=\dfrac{1}{\sqrt 5}\sum_{k=0}^{\infty}(\phi^{k+1}-(1-\phi)^{k+1})x^k\)。那么就有斐波那契数列的通项公式:

\[f_n=\dfrac{1}{\sqrt 5}\left(\left(\dfrac{1+\sqrt 5}{2}\right)^{k+1}-\left(\dfrac{1-\sqrt 5}{2}\right)^{k+1}\right) \]

生成函数还有很多的用途,比如下面要讲的斯特林数,以及卡特兰数和贝尔数。

第二类斯特林数 / 第二类 Stirling 数:

第二类斯特林数的定义:

将一个 \(n\) 元集合划分为 \(k\) 个非空子集的方案数称为第二类斯特林数 \(\displaystyle{n\brace k}\)

\(0\le n<k\) 时,补充定义 \(\displaystyle{n\brace k}=0,{n\brace 0}=[n=0]\)

比如 \(\displaystyle{4\brace 2}=7\),二二型:

\[\{\{1,2\},\{3,4\}\},\{\{1,3\},\{2,4\}\},\{\{1,4\},\{2,3\}\} \]

一三型:

\[\{\{1\},\{2,3,4\}\},\{\{2\},\{1,3,4\}\},\{\{3\},\{1,2,4\}\},\{\{4\},\{1,2,3\}\} \]

共有 \(3+4=7\) 种。

第二类斯特林数的递推公式:

考虑第 \(n\) 个元素,它可以单独构成一个集合,方案数为 \(\displaystyle{n-1\brace k-1}\),随便加入一个集合,方案数为 \(\displaystyle k{n-1\brace k}\),所以就有:

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

第二类斯特林数通项公式:

考虑 \(n\) 个球放在 \(k\) 个盒子内,需要保证每个盒子非空,那么方案数为 \(a_k=k!\displaystyle{n\brace k}\),如果不保证盒子非空,枚举有多少个盒子非空,那么方案数为 \(\displaystyle\sum_{i=0}^k{k\choose i}a_i\),其实方案数也是 \(n^k\),那么就有 \(k^n=\displaystyle\sum_{i=0}^k{k\choose i}a_i\),由二项式反演可得:\(a_k=\displaystyle\sum_{i=0}^k(-1)^{k-i}{k\choose i}i^n\),即:

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

这个式子固定了 \(n\),我们可以快速求出一行内所有第二类斯特林数的值。(具体怎么做在下面讲)

同一列第二类斯特林数的指数生成函数:

先给出结论:

\[\sum_{n=0}^{\infty}{i\brace k}\frac{x^i}{i!}=\frac{(e^x-1)^k}{k!} \]

考虑 \((e^x-1)^k\)\(p\) 次项系数,\(\displaystyle\sum_{i_1+i_2+\cdots+i_k=p}[i_1,i_2,\cdots,i_k\ge 1]\dfrac{1}{i_1!i_2!\cdots i_k!}=\dfrac{1}{p!}\displaystyle\sum_{i_1+i_2+\cdots+i_k=p}[i_1,i_2,\cdots,i_k\ge 1]{p\choose i_1,i_2,\cdots,i_k}\),考虑其组合意义,就是将 \(p\) 个球放到 \(k\)相同的盒子里的方案数除以 \(p!\),而 \(\dfrac{\displaystyle{p\brace k}}{p!}\) 正是这个方案数除以 \(k!\),所以证毕。

第一类斯特林数 / 第一类 Stirling 数:

posted @ 2025-01-17 21:37  liruixiong0101  阅读(13)  评论(0编辑  收藏  举报