“树的边必须同时满足连通、无圈,看起来并不能独立选择。Prüfer 编码把这些约束吸收进解码规则,转而用一串完全自由的标号描述每棵树。”
形式陈述
设
它给出标号树与集合
直觉
叶子只有一条边,所以删去它时记录邻点已经保存了它的全部连接信息。表面上似乎还要记录“删的是哪个叶子”,但最小标号约定使这部分信息可以从剩余编码恢复。
若标号
逆过程如何维持正确性
给定序列
每步都有可选叶子:若当前还剩
例子与边界
对边集
| 步骤 | 当前最小叶子 | 记录的邻点 | 删除后的编码余项 |
|---|---|---|---|
| 1 | 1 | 2 | |
| 2 | 3 | 2 | |
| 3 | 2 | 4 | 空序列 |
编码为
标号
当
任意删叶次序仍能得到一串邻点,但没有统一的确定规则时,这串邻点未必能唯一恢复删除次序。编码依赖标号;把两棵同构树重新编号,通常会改变编码,所以它不能直接对无标号同构类型去重。
推论与应用
双射配合乘法原理给出Cayley 公式
独立均匀生成
删除叶子后仍为树的事实由树的等价刻画保证;它也是编码能够一路进行到两个顶点的结构依据。
参考资料
- Mitchel T. Keller and William T. Trotter, Applied Combinatorics, 开放在线版(访问于 2026),§5.6 Counting Labeled Trees,Theorem 5.40 及 Prüfer 双射。
- Paul Johnson, MAS341 Graph Theory, University of Sheffield, 2017, Lecture 8: Prüfer code,编码与重建步骤。