定理已证明
Cayley公式
命题陈述
顶点集 ()上不同的带标号树的个数为 。
为什么成立?
它回答了一个纯组合问题——把 个可区分的点连成一个树形网络共有多少种不同方式——给出了一个出人意料简洁的封闭公式,而用来证明它的编码技巧(Prüfer序列)把"数树的个数"变成了"数序列的个数",一个容易得多的问题。
证明思路
固定顶点集为 ,对 定义带标号树 的Prüfer序列:反复找到标号最小的叶子,记下其唯一邻居的标号,然后删去该叶子;当只剩下 个顶点时停止。这样记录了 个标号(每删除一次记一个,因为从 个顶点开始、停在 个),所以每棵带标号树都产生 中的一个序列。
这样的序列恰有 个,因为 个位置中的每一个都可独立取 个标号中的任意一个。剩下要证明这个编码是一个双射,使带标号树与这些序列一一对应。
关键事实是:在Prüfer序列中,标号 恰好出现 次:每当 的某个邻居作为叶子被删除时, 就被记录一次,而 本身只有在除一条关联边外全部消失后才会被删除(不产生记录)。特别地,从未出现在序列中的标号恰好就是最初的叶子。这使我们能够解码:给定序列 ,反复取出尚未作为剩余序列条目出现、也尚未被连接的最小标号,将其与剩余序列的第一个条目用一条边相连,把该标号从后续候选中去除,并从序列中删去该条目;当全部 个条目用完后,把剩下的 个标号用最后一条边相连。
这个解码过程按剩余顶点数进行归纳,精确地逐步逆转编码过程——每一步都识别出与编码器本应记录的相同的最小标号叶子及其邻居。因此编码与解码互为逆过程,给出了 个顶点上带标号树与 中序列之间的双射。由于这样的序列恰有 个, 个顶点上的带标号树也恰有 棵。
用到此定理的主题
分步证明
该定理暂无分步证明。
参考文献
- Reinhard Diestel (2017). Graph Theory
- 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
- Aaron Schild (2017). An almost-linear time algorithm for uniform random spanning tree generation · arXiv:1711.06455 [预印本,未经同行评审]