MathLabs
定理已证明

Cayley公式

命题陈述

顶点集 {1,…,n}\{1,\dots,n\}(n≥2n\ge2)上不同的带标号树的个数为 nn−2n^{n-2}。

为什么成立?

它回答了一个纯组合问题——把 nn 个可区分的点连成一个树形网络共有多少种不同方式——给出了一个出人意料简洁的封闭公式,而用来证明它的编码技巧(Prüfer序列)把"数树的个数"变成了"数序列的个数",一个容易得多的问题。

证明思路

固定顶点集为 {1,…,n}\{1,\dots,n\},对 n≥2n\ge2 定义带标号树 TT 的Prüfer序列:反复找到标号最小的叶子,记下其唯一邻居的标号,然后删去该叶子;当只剩下 22 个顶点时停止。这样记录了 n−2n-2 个标号(每删除一次记一个,因为从 nn 个顶点开始、停在 22 个),所以每棵带标号树都产生 {1,…,n}n−2\{1,\dots,n\}^{n-2} 中的一个序列。

这样的序列恰有 nn−2n^{n-2} 个,因为 n−2n-2 个位置中的每一个都可独立取 nn 个标号中的任意一个。剩下要证明这个编码是一个双射,使带标号树与这些序列一一对应。

关键事实是:在Prüfer序列中,标号 ii 恰好出现 deg⁡(i)−1\deg(i)-1 次:每当 ii 的某个邻居作为叶子被删除时,ii 就被记录一次,而 ii 本身只有在除一条关联边外全部消失后才会被删除(不产生记录)。特别地,从未出现在序列中的标号恰好就是最初的叶子。这使我们能够解码:给定序列 (a1,…,an−2)(a_1,\dots,a_{n-2}),反复取出尚未作为剩余序列条目出现、也尚未被连接的最小标号,将其与剩余序列的第一个条目用一条边相连,把该标号从后续候选中去除,并从序列中删去该条目;当全部 n−2n-2 个条目用完后,把剩下的 22 个标号用最后一条边相连。

这个解码过程按剩余顶点数进行归纳,精确地逐步逆转编码过程——每一步都识别出与编码器本应记录的相同的最小标号叶子及其邻居。因此编码与解码互为逆过程,给出了 nn 个顶点上带标号树与 {1,…,n}n−2\{1,\dots,n\}^{n-2} 中序列之间的双射。由于这样的序列恰有 nn−2n^{n-2} 个,nn 个顶点上的带标号树也恰有 nn−2n^{n-2} 棵。

用到此定理的主题

分步证明

该定理暂无分步证明。

参考文献

  1. Reinhard Diestel (2017). Graph Theory
  2. David R. Karger, Philip N. Klein, Robert E. Tarjan (1995). A randomized linear-time algorithm to find minimum spanning trees · DOI:10.1145/201019.201022
  3. Aaron Schild (2017). An almost-linear time algorithm for uniform random spanning tree generation · arXiv:1711.06455 [预印本,未经同行评审]