Skip to content

Prüfer 编码

Prüfer code · Prüfer sequence

把含 n 个标号顶点的树双射编码为长度 n2 的顶点序列。

条目类型
定义

形式陈述

对顶点集 [n] 上的树,反复删除当前标号最小的叶节点,并记录它的唯一邻点,直至剩余两个顶点,得到长度 n2 的 Prüfer 序列。 逆过程维护各标号在剩余序列中的出现次数,每一步把当前最小的零出现次数标号连接到序列首项,再删除该首项;最后连接剩余两个标号。两过程互逆。

直觉

编码反复删除当前标号最小的叶子,并记录它的邻点;“最小”只用于让编码确定,树结构则保证始终有叶子可删。序列中某标号每出现一次,就表示它在最后保留的那条关联之外还失去一片叶边,所以出现次数等于度数减一。解码时最小未出现标号正是下一片叶子。

Prüfer 编码 (2,2,4)
例子与边界

星图中心在 Prüfer 序列中出现 n2 次。顶点 v 的度数等于它在编码中的出现次数加一。编码依赖顶点标号,不直接计数无标号树。

树边 {12,23,24,45} 上,先删叶 1 记录 2,再删叶 3 记录 2,再删叶 2 记录 4,得到 Prüfer 序列 (2,2,4)。其中标号 2 出现两次,原度数为三;4 出现一次,原度数为二。编码只适用于顶点有互异标号的树;对无标号树,不同标号编码可能落在同一同构类型。

推论与应用

标号树与长度 n2序列建立双射,从而证明Cayley 公式。出现次数还能计数指定度数序列的树,并支持随机均匀生成标号树。树的无圈连通性保证删除叶子后仍是树,是编码与解码始终可继续的结构基础。

参考资料
关系图谱4 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系