$$ \require{physics} \def\*#1{\mathbf{#1}} \def\+#1{\mathcal{#1}} \def\-#1{\mathrm{#1}}\def\^#1{\mathbb{#1}}\def\!#1{\mathtt{#1}} \def\@#1{\mathscr{#1}} \newcommand{\norm}[1]{\left\Vert#1\right\Vert} \newcommand{\set}[1]{\left\{\,#1\,\right\}} \newcommand{\tp}[1]{\left(#1\right)} \newcommand{\eps}{\varepsilon} \newcommand{\inner}[2]{\langle #1,#2\rangle} \renewcommand{\mid}{\;\middle\vert\;} \newcommand{\cmid}{\,:\,} \newcommand{\numP}{\#\mathbf{P}} \renewcommand{\P}{\mathbf{P}} \newcommand{\defeq}{\triangleq} \newcommand{\ol}{\overline} \newcommand{\Pr}[2][]{\mathbf{Pr}_{#1}\left[#2\right]} \newcommand{\E}[2][]{\mathbf{E}_{#1}\left[#2\right]} \newcommand{\Var}[2][]{\mathbf{Var}_{#1}\left[#2\right]} \renewcommand{\emptyset}{\varnothing} \renewcommand{\d}{\dd} \newcommand{\mle}{\preceq} \newcommand{\mge}{\succeq} \newcommand{\DKL}[2]{D_{\!{KL}}\tp{#1\,\|\,#2}} \newcommand{\DTV}[2]{D_{\!{TV}}\tp{#1\,\|\,#2}} \newcommand{\argmin}{\mathop{\arg\min}} \newcommand{\argmax}{\mathop{\arg\max}} \newcommand{\eps}{\varepsilon} \newcommand{\wh}{\widehat} \def\multiset#1#2{\left(\kern-.2em\left(\genfrac{}{}{0pt}{}{#1}{#2}\right)\kern-.2em\right)} % define stirling number \newcommand{\genstirlingI}[3]{% \genfrac{[}{]}{0pt}{#1}{#2}{#3}% } \newcommand{\genstirlingII}[3]{% \genfrac{\{}{\}}{0pt}{#1}{#2}{#3}% } \newcommand{\stirlingI}[2]{\genstirlingI{}{#1}{#2}} \newcommand{\dstirlingI}[2]{\genstirlingI{0}{#1}{#2}} \newcommand{\tstirlingI}[2]{\genstirlingI{1}{#1}{#2}} \newcommand{\stirlingII}[2]{\genstirlingII{}{#1}{#2}} \newcommand{\dstirlingII}[2]{\genstirlingII{0}{#1}{#2}} \newcommand{\tstirlingII}[2]{\genstirlingII{1}{#1}{#2}} % end of defining stirling number $$

第四讲:生成函数(II)

Published

March 19, 2023

\[ \require{enclose} \newcommand{circled}[1]{\enclose{circle}{#1}} %\enclose{circle}{\kern .06em 1\kern .06em} \]

\(\stirlingII{n}{k}\) 的生成函数

我们首先来计算第二类斯特林数 \(\stirlingII{n}{k}\) 的生成函数。由于有 \(n\)\(k\) 两个参数,我们需要先固定一个参数,然后把 \(\stirlingII{n}{k}\) 看成关于另外一个参数的数列。当然,这就产生了两种选择,固定 \(n\) 或者固定 \(k\)。一番尝试之后,可以发现如果固定 \(k\) 并把 \(\stirlingII{n}{k}\) 看成关于 \(n\) 的数列,可以更加方便的得到生成函数。因此,我们对于每一个 \(k\),设 \[ S_k(z) = \sum_{n\ge 0} \stirlingII{n}{k}\cdot z^n. \] 我们在第一节课证明了对于 \(n,k\ge 1\),有 \[ \stirlingII{n}{k} = \stirlingII{n-1}{k-1}+k\cdot \stirlingII{n-1}{k}. \] 对边界情况进行简单尝试之后,可以发现,对于任意\(n,k\in \^Z\),有如下递推式成立: \[ \stirlingII{n}{k} = \stirlingII{n-1}{k-1}+k\cdot \stirlingII{n-1}{k}+\^1[n=k=0]. \] 固定\(k>0\),对上式两边同乘\(z^n\),并对所有的\(n\in\^Z\)求和并进行整理,可以得到 \[ S_k(z) = \frac{z}{1-kz}S_{k-1}(z)=\cdots=\frac{z^k}{\prod_{j=1}^k (1-j\cdot z)}. \] 我们现在想来求解\([z^n]S_k(z)\)。一个自然的想法是把\(S_k(z)\)表示成 \[ \begin{equation} S_k(z) = \sum_{j=1}^k \frac{\alpha_j}{1-j\cdot z}, \end{equation} \tag{1}\] 其中 \(\alpha_j\) 是待定系数。现在固定一个\(i\in [k]\),我们用一个技巧来计算\(\alpha_i\):把 (Equation 1) 两边同乘 \((1-i\cdot z)\),可以得到: \[ \alpha_i + \sum_{j\ne i} \alpha_j\frac{(1-i\cdot z)}{1-j\cdot z} = \frac{z^k}{\prod_{j\ne i}(1-j\cdot z)}. \] 再把 \(z = 1/i\) 代入上式,即得: \[ \alpha_i = \frac{1/i}{\prod_{j\ne i}(1-j/i)} = (-1)^{k-i}\frac{1}{(k-1)!i!} = \frac{(-1)^{k-i}}{k!}\binom{k}{i}. \] 所以,我们有 \[ [z^n] S_k(z) = \sum_{i=1}^k i^n \alpha_i = \sum_{i=1}^k i^n \frac{(-1)^{k-i}}{k!}\binom{k}{i} = \frac{1}{k!}\sum_{i=0}^ k (-1)^i \binom{k}{i}(k-i)^n. \] 这和我们之前用容斥原理得到的表达式是一样的。

生成函数的乘积

两个生成函数 \(F(z)=\sum_n f_n z^n\)\(G(z)=\sum_n g_n z^n\)的乘积的系数,是 \(F(z)\)\(G(z)\) 系数的卷积: \[ [z^n](F\cdot G)=\sum_{k}f_kg_{n-k}. \]

卡特兰数(Catalan Number)

卡特兰数是一类在组合数学中经常出现的数字。比如说,给定 \(n\) 个变量相乘($ x_1x_2x_n$),总共有多少种加括号的方式使得其得到不同的运算顺序。我们用 \(c_n\) 来表示这个数。

\(n=3\) 的时候,有如下五种加括号的方式。因此 \(c_3=5\)

  • \(((x_0x_1)x_2)x_3\);
  • \((x_0(x_1x_2))x_3\);
  • \((x_0x_1)(x_2x_3)\);
  • \(x_0((x_1x_2)x_3)\);
  • \(x_0(x_1(x_2x_3))\).

通过枚举最后一次乘法的位置,我们可以把问题递归的分成左右两个子问题。因此,对于任意 \(n\),我们有递推式: \[ c_n=\sum_{k=0}^{n-1}c_k\cdot c_{n-1-k}+\^1[n=0]. \] 两边同乘 \(z^n\),可以得到 \[ c_nz^n=\sum_{k=0}^{n-1}c_k\cdot c_{n-1-k}z^n+\^1[n=0]z^n. \] 对所有 \(n\) 求和,就有 \[ C(z)=\sum_n c_nz^n =z\sum_n(\sum_{k=0}^{n-1}c_k c_{n-1-k}z^{n-1})+1=zC(z)^2+1. \] 使用边界条件 \(C(0)=c_0=1\),可以得到 \(C(z)=\frac{1-\sqrt{1-4z}}{2z}\)

广义二项式定理指的是对于任意 \(r\in\^R\)\((a+b)^r=\sum\limits_{k\geq 0}\binom{r}{k}a^kb^{r-k}\),其中 \(\binom{r}{k}\defeq\frac{r(r-1)(r-2)\cdots(r-k+1)}{k!}\)

我们可以使用广义二项式定理得到 \[ (1-4z)^{\frac{1}{2}}=\sum\limits_{n\geq 0}\binom{\frac{1}{2}}{n}(-4z)^n=1+\sum\limits_{n\geq 1}\binom{\frac{1}{2}}{n}(-4z)^n. \] 因此, \[ \begin{align*} C(z)&=\frac{1-(1-4z)^{\frac{1}{2}}}{2z}=-\frac{1}{2z}\sum\limits_{n\geq 1}\binom{\frac{1}{2}}{n}(-4z)^n\\ &=2\sum\limits_{n\geq 1}\binom{\frac{1}{2}}{n}(-4z)^{n-1}=2\sum\limits_{n\geq 0}\binom{\frac{1}{2}}{n+1}(-4)^nz^n. \end{align*} \] 于是有 \[ \begin{align*} c_n&=[z^n]C(z)=2\binom{\frac{1}{2}}{n+1}\cdot(-4)^n \\ &=2\cdot\frac{\frac{1}{2}(\frac{1}{2}-1)\cdots (\frac{1}{2}-n)}{(n+1)!}\cdot(-2)^n\cdot2^n\\ &=\frac{1\cdot 3\cdot 5 \cdots (2n-1)}{(n+1)!}\cdot 2^n\\ &= \frac{1}{(n + 1) !} 2^n \frac{(2 n) !}{2^n n!} \\ &=\frac{(2n)!}{(n+1)!n!}=\frac{1}{n+1}\binom{2n}{n}. \end{align*} \]

由于卡特兰数满足的这一种递推关系再离散数学中是很常见的,因此,我们在不少场合都能看到 \(c_n=\frac{1}{n+1}\binom{2n}{n}\) 的身影。

三个顶点的二叉树

卡特兰数的另一个例子是计算 \(n\) 个顶点的二叉树的个数 \(T(n)\)。如右图所示,\(T(3)=5\)

我们通过枚举树的根是第几个顶点,可以得到 \[ T(n)=\sum{k=0}^{n-1}T(k)T(n-1-k), \] 并且有 \(T(0)=1\)。这正好是卡特兰数的递推式和边界条件,于是 \(T(n)=c_n=\frac{1}{n+1}\binom{2n}{n}\)

指数生成函数

考虑如下一个递推关系 \[ f(0)=1;\quad \forall n\ge 1\colon f_n = n. \] 显然 \(f(n)=n!\)。但我们尝试使用生成函数的方法来求解。对于任意 \(n\in\^Z\),我们有 \[ f_n=nf_{n-1}+\*1[n=0]. \] 两边同乘 \(z^n\),得到 \[ f_nz^n=nf_{n-1}z^n+\^1[n=0]z^n. \tag{2}\] 注意到 \(F'(z)=\sum_{n}nf_nz^{n-1}\)。因此 \[ z^2F'=\sum_{n}nf_{n-1}z^n -\sum_{n}f_{n-1}z^n =\sum_{n}nf_{n-1}z^n-zF. \] 于是,\(F(z)\) 满足 \(z^2F'+(z-1)F+1=0\)。 这样一个微分方程一般情况下是没有闭式解的。

Graham, Knuth, and Patashnik (1989, 第5章) 给出了一个使用“超几何级数”处理这类微分方程的方法。

为了方便的处理此类递推式,我们引入指数生成函数

Definition 1 (指数生成函数) 一个数列 \(\set{f_k }_{ k\geq 0 }\) 的指数生成函数是 \[ \widehat F(z) = \sum_{k\geq 0}\frac{f_k}{k!}\cdot z^k. \]

下面是两个简单的例子:

  • \(f_k=k!\)\(\wh F(z)=\sum_{k\geq 0}z^k=\frac{1}{1-z}\)
  • \(f_k=1\)\(\wh F(z)=\sum_{k\geq 0}\frac{z^k}{k!}=e^z\)

我们来用指数生成函数来处理 (Equation 2)。两边除上 \(n!\),可以得到 \[ \frac{f_nz^n}{n!}=\frac{f_{n-1}z^n}{(n-1)!}+\^1[n=0]\cdot \frac{z^n}{n!}. \] 对所有 \(n\) 求和,有 \[ \wh{F}(z)=z\wh{F}(z)+1. \] 于是就可以得到 \(\wh F(z)=\frac{1}{1-z}=1+z+z^2\cdots\). 因此 \(f_n=n!\)

我们来计算一下两个指数生成函数的乘积。设 \(\wh F(z)=\sum_{n\geq 0}f_n\frac{z^n}{n!}\)\(\wh G(z) = \sum_{n\ge 0} g_n\frac{z^n}{n!}\)。设 \(\wh H(z)=\sum_{n\geq 0}h_n\frac{z^n}{n!}=\wh F(z)\cdot \wh G(z)\). 则有 \[ h_n=n!\sum_{k}\frac{f_k}{k!}\cdot\frac{g_{n-k}}{(n-k)!}=\sum_{k}\binom{n}{k}f_kg_{n-k}. \]

我们再次来考虑生成树计数问题。设 \(t_n\) 为在一个 \(n\) 个(有编号的)顶点的图中生成树的个数。我们来写出 \(t_n\) 的递推式。我们考虑去掉第一个顶点后,生成树变成了多少个连通块。一旦我们固定了 \(m\) 个连通块,我们就只需要在每个连通块里构造一个生成树,然后把它们和第一个顶点连起来。于是,我们有 \[ t_n=\sum\limits_{m>0}\frac{1}{m!}\sum_{k_1+k_2+\cdots k_m=n-1}\binom{n-1}{k_1,k_2\dots k_m}k_1k_2\cdots k_mt_{k_1}t_{k_2}\cdots t_{k_m}. \] 在上式中,我们要求 \(k_i\geq 1\),并且记号 \[ \binom{n-1}{k_1,k_2,\dots ,k_m} \defeq \binom{n-1}{k_1}\binom{n-1-k_1}{k_2}\binom{n-1-k_1-k_2}{k_3}\cdots =\frac{(n-1)!}{k_1!k_2!\cdots k_m!}. \] 直接计算可得 \[ t_n=\sum\limits_{m>0}\frac{1}{m!}\sum\limits_{k_1+k_2+\cdots k_m=n-1}(n-1)!\frac{t_{k_1}}{(k_1-1)!}\frac{t_{k_2}}{(k_2-1)!}\cdots\frac{t_{k_m}}{(k_m-1)!}. \]\(u_n=nt_n\),则有 \[ \frac{u_n}{n!}=\sum_{m>0}\frac{1}{m!}\sum_{k_1+k_2+\cdot k_m=n-1}\prod_{i=1}^m\frac{u_{k_i}}{k_i!}. \] 这说明 \[\begin{align*} [z^n]\wh{U}(z)=[z^{n-1}]\sum_{m\geq 0}\frac{1}{m!}\wh{U}^m(z)=[z^{n-1}]e^{\wh{U}(z)}=[z^n]ze^{\wh{U}(z)}. \end{align*}\] 因此,\(\wh U\) 满足方程 \(\wh{U}=ze^{\wh{U}}\)

我们使用如下定理:

Theorem 1 (拉格朗日反演定理)
设形式级数 \(\phi(u)\) 满足 \(\phi(0)=1\)。那么存在唯一的形式级数 \(u(z)\) 满足 \(u = z\phi(u)\)。并且对任意 \(n> 0\)\[ [z^n]\tp{u(z)} = \frac{1}{n}[u^{n-1}]\tp{\phi(u)^n}. \]

这个定理的证明需要一定复分析的知识,可以在 Wilf (2005) 找到。使用这个定理,我们可以得到\([z^n]\wh{U}=\frac{k^{k-2}}{(k-1)!}\)。因此,\(t_n=\frac{u_n}{n}=n^{n-2}\)。 这便是我们之前遇到过的 Cayley 公式。

References

Graham, Ronald L., Donald E. Knuth, and Oren Patashnik. 1989. Concrete Mathematics: A Foundation for Computer Science. Reading: Addison-Wesley.
Wilf, Herbert S. 2005. Generatingfunctionology. CRC press.