4.1 欧拉数Eulerian numbers
本页为译文 + 高中讲解合一:黑色正文为忠实翻译;彩色框(目标 / 例 / 分步推演)与配图为面向高中生的详解,逐步推演、举例、画图,不用比喻。
第 4 章引言 排列的计数
两辆满载游客的大巴抵达了一处大型休息区。乘第一辆大巴而来的 \(n\) 位游客逐个进入自助餐区(我们按他们下车的先后顺序用 \([n]\) 的元素来表示他们),并在 \(k\) 个不同的营业窗口前各自排起了队。没有人插队,所以最先下车的人最先排队,第二个下车的人第二个排队,以此类推。乘第二辆大巴而来的 \(n\) 位游客则进入了一家提供全程服务的餐厅,他们围坐在 \(k\) 张完全相同的圆桌旁。每辆大巴上的游客各有多少种安排方式?
上面提出的两个问题都是组合学中基本的计数问题。它们都与排列(permutation)密切相关,即把 \([n]\) 的元素排成一行、每个元素恰好用一次的排法。这两个问题的答案也都与集合划分密切相关,更确切地说,与第二类斯特林数(Stirling numbers of the second kind)密切相关。
4.1 欧拉数
我们先来考虑第一辆大巴上的游客,他们在 \(k\) 个柜台前各排成一队。如果我们按游客到达餐区的先后顺序,用 \([n]\) 的元素来表示这 \(n\) 位游客,那么 \(k\) 个窗口前的 \(k\) 条队伍就对应 \(k\) 个递增子序列(increasing subsequences)。(例如,若 \(n=6\)、\(k=2\),且第 \(1\)、\(4\)、\(5\) 个人去第一个窗口,第 \(2\)、\(3\)、\(6\) 个人去第二个窗口,则我们得到两个递增子序列 \(145\) 与 \(236\)。)如果我们把这 \(k\) 个递增子序列按某个指定顺序(比如按窗口所在位置的顺序)一个接一个地写下来,就得到集合 \([n]\) 的一个排列 \(p_1p_2\cdots p_n\)。在这个排列中,至多有 \(k-1\) 个位置 \(i\) 满足其后一项更小,即 \(p_i>p_{i+1}\)。事实上,这种情形只可能在 \(p_{i+1}\) 开启一个新的递增子序列(来自一个新窗口前的队伍)时出现,而这只会发生 \(k-1\) 次。
这种把排列分解为连续元素所构成的递增子序列的方式,正是本节的主题。因此,我们把这个概念形式化。
于是,第一辆大巴上的游客所形成的排列,至多有 \(k\) 个上升段。
有时候,与其直接处理上升段本身,不如处理它们之间的分界点更方便。显然,每当一个较大的元素后面跟着一个较小的元素时,就必须开启一个新的上升段。这同样是一个基本现象,它也有自己的名字。
请注意,下降位指的是 \(p\) 的位置,而不是它的元素值。
- 逐位比较相邻两项:\(2<4<5\)(一直升)→ 第 3、4 项 \(5>1\),出现下降位 \(i=3\)。
- \(1<6<9\)(一直升)→ 第 6、7 项 \(9>3\),出现下降位 \(i=6\)。
- \(3<7<8\)(一直升),到末尾结束。
- 下降位共 \(2\) 个;每个下降位“切一刀”,把序列切成 \(2+1=3\) 段。这就是“段数 \(=\) 下降位数 \(+1\)”的直接含义。
在本书余下部分,集合 \([n]\) 的排列都称为 \(n\)-排列。如果我们能算出恰好有 \(k\) 个上升段的 \(n\)-排列有多少个,那么由加法原理,我们也就能算出至多有 \(k\) 个上升段的 \(n\)-排列有多少个。事实证明,这是一条好走的路,因为计数恰好有 \(k\) 个上升段的排列比计数至多有 \(k\) 个上升段的排列更容易。因此,我们给前者起个名字。
- \(123\):处处上升,无下降位 → \(1\) 段。计入 \(A(3,1)\)。
- \(132\):\(3>2\),\(1\) 个下降位 → \(2\) 段。计入 \(A(3,2)\)。
- \(213\):\(2>1\),\(1\) 个下降位 → \(2\) 段。计入 \(A(3,2)\)。
- \(231\):\(3>1\),\(1\) 个下降位 → \(2\) 段。计入 \(A(3,2)\)。
- \(312\):\(3>1\),\(1\) 个下降位 → \(2\) 段。计入 \(A(3,2)\)。
- \(321\):\(3>2\) 且 \(2>1\),\(2\) 个下降位 → \(3\) 段。计入 \(A(3,3)\)。
我们可以把 \(A(n,k)\) 的定义推广到其他非负整数:令 \(A(n,0)=0\),并对 \(k>n\) 令 \(A(n,k)=0\)。
欧拉数的显式公式自十九世纪末以来就已为人所知。然而,我们在这里给出一个相对较新、且异常简洁的证明,它是由 Richard Stanley 于 2003 年传达给本书作者的。
在开始证明之前,我们先看 \(k=1\) 与 \(k=2\) 这两个特殊情形热身。若 \(k=1\),则排列必须有零个下降位,于是它必为递增排列,从而 \(A(n,1)=1\);读者可验证 (4.1) 在此特例下成立。若 \(k=2\),则我们的排列有两个上升段。这意味着,为得到这些排列,我们需要把 \([n]\) 拆成两个非空集合 \(X\) 与 \(Y\)(即将来的两个上升段),共有 \(2^n-2\) 种拆法,然后把这两个集合各自按递增排好,最后把得到的两个字符串拼接起来。不过我们必须小心:如果 \(X\) 中最大的元素小于 \(Y\) 中最小的元素(换言之,当 \(X=[j]\) 而 \(Y=\{j+1,j+2,\cdots,n\}\) 时),那么得到的排列将是 \(12\cdots n\),它只有一个上升段。这种情况发生 \(n-1\) 次,从而 \[A(n,2)=2^n-2-(n-1)=2^n-n-1,\] 这与 (4.1) 一致,也与例 4.6 一致。
现在我们开始看到为什么证明 (4.1) 并不容易。随着 \(k\) 增大,会出现越来越多这样的情形:在某些情况下,本应组成两个上升段的两个子串实际上只组成了一个,就像上面的 \(X\) 与 \(Y\) 那样。这是个严重的问题,因为一方面我们得到的上升段比想要的少,另一方面有些排列会被多次得到。所幸,我们的新朋友容斥原理(inclusion-exclusion principle),再加上一个巧妙的论证,会帮我们解决问题。
- (a)可能存在空窗口(两道栅栏之间没有任何元素),以及
- (b)可能出现紧挨栅栏之前的元素小于其后元素的情况。
设 \(p\) 是一个在其各项之间(也可能在开头或结尾)插入了 \(k-1\) 道栅栏的 \(n\)-排列。我们把这个结构——排列连同栅栏一起——称为一个安排(arrangement)。我们称一道栅栏 \(f\) 是可移除的(removable),如果它同时满足以下两个条件:
- 移除 \(f\) 后,我们仍得到一个排列,其各项在任意两道相邻栅栏之间仍然递增;以及
- 栅栏 \(f\) 的紧后面不是另一道栅栏。
注意,举例来说,位于排列最末端的栅栏总是可移除的。例如在 (4.2) 中,第三道栅栏是可移除的,其余的都不是。
如果一个安排没有可移除栅栏,那么对应的排列就有 \(k\) 个上升段,这正是我们想要的。如果一个安排确有至少一道可移除栅栏,那么对应的排列上升段数就少于 \(k\)。下面我们用容斥原理来枚举这些排列。
我们把排列中两个相邻元素之间的 \(n-1\) 个空档,以及开头和结尾处的空档,统称为位置(positions)。于是共有 \(n+1\) 个位置,我们从左到右给它们编号。设 \(S\subseteq[n+1]\),令 \(A_S\) 为这样一些安排构成的集合:在属于 \(S\) 的每个位置上都有一道可移除栅栏。注意,虽然任一给定位置上可能有不止一道栅栏,但其中只有一道(即最后一道)能是可移除的。
所幸 \(A_S\) 的大小很容易确定。
- “把 \(n\) 个元素分配到 \(k-i\) 个空档里”等价于“每个元素独立地选 \(k-i\) 个去处之一”,所以是 \((k-i)^n\)。这一步固定了 \(k-i-1\) 道栅栏。
- 剩下的 \(i\) 道栅栏被强制塞进 \(S\) 指定的 \(i\) 个位置——没有选择自由,所以不再乘任何因子。
- “可逆”保证不重不漏:给定结果,把 \(S\) 处的最后一道栅栏各撤一道,就唯一还原出第 1 步的安排。
- 关键观察:结果 \((k-i)^n\) 只依赖 \(|S|=i\),与 \(S\) 具体是哪些位置无关。
回忆起我们可能拥有的安排总数是 \(k^n\),由减法原理,没有可移除栅栏的安排数为 \[\tag{4.4}A(n,k)=\sum_{i=0}^{k-1}(-1)^i\binom{n+1}{i}(k-i)^n,\] 这正是要证明的。♦
欧拉数在许多方面表现得与二项式系数(binomial coefficients)相似,而在另外许多方面又与第二类斯特林数密切相关。
前者的一个例子是对称性:对任意固定的 \(n\) 与任意 \(k\le n\),等式 \(A(n,k)=A(n,n+1-k)\) 成立。读者应先尝试自己证明这个恒等式,然后再看习题 1 中我们给出的两种解法。
正如二项式系数与第二类斯特林数那样,欧拉数也满足一个三角递推(triangular recurrence)。
设 \(p\) 是被 \(A(n,k)\) 计数的一个排列。设 \(\bar p\) 是从 \(p\) 中删去元素 \(n\) 后得到的排列。那么有两种情形:要么 \(\bar p\) 与 \(p\) 的下降位个数相同,要么少了一个。我们将证明右边的两项分别计数落入这两种情形的排列。
这发生在 \(n\) 处于 \(p\) 的末尾时,或当 \(n\) 被插入到 \(\bar p\) 的第 \(i\) 项紧后面、而 \(i\) 是 \(\bar p\) 的一个下降位时。(试想 \(\ldots3n1\ldots\)。)两种情况下,我们都剩下一个长度为 \(n-1\)、有 \(k-1\) 个下降位的排列 \(\bar p\)。由定义,这样的排列有 \(A(n-1,k)\) 个。它们中的每一个都以这种方式从 \(k\) 个不同的排列 \(p\) 得到。事实上,要得到这些排列,我们可以把 \(n\) 插入 \(\bar p\) 的 \(k-1\) 个下降位中的任何一个,也可以把它放到 \(\bar p\) 的末尾。因此,有 \(k\,A(n-1,k)\) 个排列落入此情形。
这发生在 \(n\) 是 \(p\) 的首项时,或当 \(n\) 被插入到 \(\bar p\) 的第 \(i\) 项紧后面、而 \(i\) 是 \(\bar p\) 的一个上升位时。(试想 \(\ldots1n3\ldots\)。)两种情况下,我们都剩下一个长度为 \(n-1\)、有 \(k-2\) 个下降位的排列 \(\bar p\)。这样的排列有 \(A(n-1,k-1)\) 个。它们中的每一个都以这种方式从 \(n-k+1\) 个不同的排列 \(p\) 得到。事实上,要得到这些排列,我们可以把 \(n\) 插入 \(\bar p\) 的 \(n-k\) 个上升位中的任何一个,也可以把它放到 \(\bar p\) 的最前面。由乘法原理,这解释了右边的第二项。
我们已证明两边在计数同一个集合的元素;因此它们必定相等。♦
- “情形 1(插入 \(4\) 不增下降位)”:在每个有 \(1\) 个下降位的 3-排列(\(132,213,231,312\))里,把 \(4\) 放到末尾或放到那个下降位处,每个生出 \(k=2\) 个 4-排列,共 \(2\times4=8\) 个。
- “情形 2(插入 \(4\) 使下降位减 1)”:在递增 3-排列 \(123\)(\(0\) 个下降位,对应 \(A(3,1)\))里,把 \(4\) 放到最前或放到某个上升位处,共 \(n-k+1=3\) 个 4-排列。
- 合计 \(8+3=11\)。每个 4-排列都恰好被这两条途径之一生成一次,不重不漏。
定理 4.10 使我们能够证明欧拉数会出现在许多其他情境中。我们在这里给出一个例子,其余留作习题。
设 \(H(n,k)\) 为游客们做出选择、使得最终恰好有 \(k\) 家旅馆各接待了至少一位游客的方式数。那么 \(H(n,k)=A(n,k)\)。
例如,若 \(n=2\),则要么两位游客都去旅馆 \(1\),要么第一位去 \(1\)、第二位去 \(2\),于是 \(H(2,1)=H(2,2)=1\),这与 \(A(2,1)=A(2,2)=1\) 一致。读者不妨验证 \(n=3\) 的结果。注意,总的可能数为 \(\sum_{k=1}^{n}A(n,k)=n!\) 并不奇怪,因为第 \(k\) 位游客有 \(k\) 种选择(\(1\cdot2\cdots n=n!\))。
由归纳假设,我们知道 \(A(n-1,k)=H(n-1,k)\),也知道 \(A(n-1,k-1)=H(n-1,k-1)\)。对照定理 4.10,我们看到这意味着 \(A(n,k)\) 与 \(H(n,k)\) 是由相同的数、经相同的运算得到的。因此它们必定相等。♦
请注意,我们是用一种特殊的归纳法证明定理 4.10(以及上面这个例子)的,即:我们证明两个数阵必定相同,因为它们以相同的方式起步,并满足相同的递推关系。我们很快会看到这一证明技巧的更多应用。
下面这个概念把下降位与另一个有趣的排列统计量联系起来,后者将在下一节讨论。一个错列(desarrangement,此处采用作者新造词,详见下文说明)是指其第一个上升位出现在偶数位置的排列。我们对这条规则作一个例外:若 \(n\) 是偶数,则我们也把递减排列 \(n(n-1)\cdots21\) 视为一个错列,仿佛它在末尾位置 \(n\) 处有一个上升位。于是 \(213\)、\(43215\) 与 \(4321\) 都是错列,但 \(12\)、\(321\) 与 \(52134\) 都不是。我们在此关心的是长度为 \(n\) 的错列的个数。
- \(213\):\(p_1=2>p_2=1\)(位置 1 是下降),\(p_2=1<p_3=3\)(位置 2 是上升)。第一个上升位在 \(i=2\)(偶数)→ 是错列。
- \(43215\):\(4>3>2>1\) 都下降,到 \(p_4=1<p_5=5\),第一个上升位 \(i=4\)(偶数)→ 是错列。
- \(4321\):\(n=4\) 为偶数的递减排列,按例外规定视作错列。
- \(12\):\(p_1=1<p_2=2\),第一个上升位 \(i=1\)(奇数)→ 不是错列。
- \(321\):\(n=3\) 为奇数的递减排列,无上升位,不享受例外 → 不是错列。
- \(52134\):\(5>2>1\)(位置 1、2 下降),\(p_3=1<p_4=3\),第一个上升位 \(i=3\)(奇数)→ 不是错列。
“desarrangement”一词由 Michelle Wachs 创造,意在以一种诙谐的方式向她的合作者 Jacques Désarmenien 致敬。最初首次使用该词的那本期刊的编辑们本想把它改成 “disarrangements”(这是一个真正的英文词),但当他们领会了其中的玩笑后,就保留了 “desarrangements” 不动。
最后,我们指出:除了简单地计数具有给定下降位个数的排列之外,我们还可以计数其下降位集合恰为给定集合 \(S\) 的排列,或者其下降位集合包含于给定集合 \(S\) 的排列。读者可参看习题 2–6 中此类结果。
返回 全书目录