4.5 生成函数在排列计数中的高级应用Advanced applications of generating functions to permutation enumeration
本页为译文 + 高中讲解合一:黑色正文为忠实翻译;彩色框(目标 / 例 / 分步推演)与配图为面向高中生的详解,逐步推演、举例、画图,不用比喻。
我们来考虑几个计数问题。在这些问题中,生成函数(generating function)仍然非常有用,但我们必须以一些此前未曾见过的方式来使用它们。
4.5.1 导数的组合意义
在定理 4.21 中,我们证明了一个有趣的公式:对任意固定的正整数 \(n\),有 \[\tag{4.14}\sum_{k=1}^{n} c(n,k)\,x^{k}=x(x+1)\cdots(x+n-1).\] 这里 \(c(n,k)\) 是第一类无符号 Stirling 数(signless Stirling number of the first kind),即长度为 \(n\)、恰好含 \(k\) 个圈的排列的个数。
- 恰含 \(1\) 个圈(即一个长度为 \(3\) 的圈)的有 \(2\) 个,所以 \(c(3,1)=2\)。
- 恰含 \(2\) 个圈(一个长度 \(2\) 的圈加一个固定点)的有 \(3\) 个,所以 \(c(3,2)=3\)。
- 恰含 \(3\) 个圈(三个固定点,即恒等排列)的只有 \(1\) 个,所以 \(c(3,3)=1\)。
现在让我们对 (4.14) 的两边关于 \(x\) 求导。我们得到恒等式 \[\sum_{k=1}^{n} k\cdot c(n,k)\,x^{k-1}=\sum_{i=0}^{n-1}\frac{x(x+1)\cdots(x+n-1)}{x+i}.\] 请注意,对 (4.14) 右边求导时,我们只是用了乘积法则(product rule)。这一步很容易,因为每个单独的因子 \((x+i)\) 的导数都是 \(1\)。
现在让我们在上面这个等式中代入 \(x=1\),得到 \[\tag{4.15}\sum_{k=1}^{n} k\cdot c(n,k)=\sum_{j=1}^{n}\frac{n!}{j}.\]
- 左边代 \(x=1\):每个 \(x^{k-1}\) 都变成 \(1\),于是 \(\sum_{k=1}^{n}k\cdot c(n,k)\,x^{k-1}\) 变成 \(\sum_{k=1}^{n}k\cdot c(n,k)\)。
- 右边代 \(x=1\):分子 \(x(x+1)\cdots(x+n-1)\) 在 \(x=1\) 处等于 \(1\cdot 2\cdots n=n!\)。
- 右边第 \(i\) 项的分母 \((x+i)\) 在 \(x=1\) 处等于 \(1+i\)。当 \(i\) 从 \(0\) 跑到 \(n-1\) 时,\(1+i\) 恰好取遍 \(1,2,\dots,n\)。
- 于是右边每一项是 \(\dfrac{n!}{1+i}\),把它们改用 \(j=1+i\) 记号汇总,就是 \(\sum_{j=1}^{n}\dfrac{n!}{j}\),即 (4.15)。
右边 \(\sum_{j=1}^{3}\dfrac{3!}{j}=\dfrac{6}{1}+\dfrac{6}{2}+\dfrac{6}{3}=6+3+2=11\)。两边都等于 \(11\)。
关键的观察是:左边的表达式 \(\sum_{k=1}^{n} k\cdot c(n,k)\),恰好就是长度为 \(n\) 的所有排列中圈的总数。的确,由 \(c(n,k)\) 计数的那些排列,每一个都向这个总数贡献了 \(k\) 个圈。所以公式 (4.15) 事实上是一个关于“长度为 \(n\) 的所有排列里圈的总数”的公式。
等价地,如果我们把 (4.15) 的两边都除以 \(n!\),就得到:长度为 \(n\) 的排列中圈的平均个数是 \[\frac{1}{n!}\sum_{k=1}^{n} k\cdot c(n,k)=\sum_{j=1}^{n}\frac{1}{j}.\] 这个数常被称为第 \(n\) 个调和数(the \(n\)th harmonic number),记作 \(H_n=1+\tfrac12+\tfrac13+\dots+\tfrac1n\)。虽然这个结果不用生成函数也能证明(见习题 18),但“对一个生成函数求导、再在 \(x=1\) 处求值”这一想法,在类似的情形中往往很有用。
- 用本节方法验证 \(n=2\) 的情形:写出 (4.14) 左边各系数 \(c(2,1),c(2,2)\),分别算出 (4.15) 两边的值,并求出长度为 \(2\) 的排列的平均圈数。
- 对长度为 \(4\) 的排列,已知 \(c(4,1)=6,\ c(4,2)=11,\ c(4,3)=6,\ c(4,4)=1\)。请用 (4.15) 算出所有圈的总数,再除以 \(4!\) 验证它等于 \(H_4=1+\tfrac12+\tfrac13+\tfrac14\)。
- 说明为什么“对 (4.14) 求导后代 \(x=1\)”能得到圈的总数,而“直接在 (4.14) 中代 \(x=1\)”得到的却是排列的总数 \(n!\)。
返回 全书目录