知识总结
一种用于生成树计数的与树一一对应的数列。
一个长度为 \(n-2\) 的 Prufer 序列,唯一对应一棵n个点固定形态的无根树。
树变序列
- 找到编号最小的叶子 \(x\)
- 设与叶子 \(x\) 相连的点是 \(y\) ,则删掉 \(x\) ,并在 prufer 序列尾部加入一个数 \(y\)
- 重复 \(1,2\) 操作,直到整棵树只剩下两个节点,此时 prufer 序列长度为 \(n-2\)
不难发现,剩的两个节点里一定会有一个是n,根据这个性质可以考虑以 \(n\) 为根节点可以方便的解决问题。
序列变为树
- 把 prufer 序列里的数加入队列中,设队首为 \(u\)。
- 维护一个还没有连边的点集 \(S\) (初始状况下是 \(1~n\)) ,找到点集中编号最小的,并且是没有在队列之中出现的元素 \(v\)。
- 给 \(u, v\) 连上一条边,并且 \(S\) 中删掉 \(v\), 在队列之中弹出 \(u\)。
- 最后点集只剩 \(2\) 个点,互相连边。
prufer 序列转原树的过程就是每次跳出最小的一个叶子节点并且将其对应的度删除的过程,显然一一对应。
序列的一些性质
- 每个点出现次数 \(=\) 度数减一 (显然)
- Cayley定理:n个点的无向完全图的生成树的计数为 \(n ^ {n - 2}\) 即 \(n\) 个点有标号无根数计数
- \(n\) 个点,每个点度数为 \(d_i\) 的无根树个数为 \(\frac {(n-2)!}{\prod_{i=1}^{n}(d_i)!}\)。