Prufer 序列

Prufer 序列

基本介绍

Prufer 序列是一个大小为 \(n-2\),值域在 \([1,n]\) 的序列。完全图生成树和 Prufer 序列形成双射。

对树建立 Prufer 序列:每次选择编号最小的叶节点删去,在序列中记录叶节点的父亲,重复 \(n-2\) 次结束。

用 Prufer 序列建立树:计算出每个节点的度数,每次选择一个度数为 1 的编号最小的节点与当前 Prufer 序列中的开头节点连接,两个点度数同时减 1,删去 Prufer 序列的开头,重复 \(n-2\) 次,剩下两个度数为 1 的点连起来。

两种操作均可以线性实现。

生成函数形式

\((x_1+x_2+x_3+\cdots+x_n)^{n-2}=\sum_{T}\prod_ix_i^{d_i-1}\)
其中 \(T\) 是枚举一棵 \(K_n\) 的生成树,\(d_i\) 是生成树中点 \(i\) 的度数。

我们有了这个形式可以很轻松的计算这样一个问题:
对于 \(n\) 个点的有标号图有 \(k\) 个连通块,连通块点数为 \(\{a\}\),我们希望添加 \(k-1\) 条边使得整个图连通,求方案数。

考虑答案即为 \(\sum_{T}\prod_{i=1}^ka_i^{d_i}\),这和上述生成函数形式很接近,我们稍加变换可以得到:
\(\prod_{i=1}^ka_i\sum_{T}\prod_{i=1}^ka_i^{d_i-1}=\prod_{i=1}^ka_i\times n^{k-2}\)

Cayley 公式与扩展 Cayley 公式

Cayley 公式:完全图 \(K_n\)\(n^{n-2}\) 棵生成树。

扩展 Cayley 公式:对于钦定的 \(k\) 个点,完全图 \(K_n\)\(k\cdot n^{n-k-1}\) 个生成森林满足 \(k\) 个点在不同的树中。

证明可以生成函数+拉反。

完全 k 分图的生成树个数

完全 2 分图 \(K_{n,m}\) 的生成树个数是一个经典问题,答案为 \(n^{m-1}m^{n-1}\)。证明可以考虑 Matrix-Tree 或者定义一个魔改的 Prufer 序列。

完全 k 分图的生成树个数的答案是:\(n^{k-2}\prod_{i=1}^k(n-n_i)^{n_i-1}\)。证明可以考虑容斥(完全图挖掉 k 个团,大力容斥每个团选的边)。

posted @ 2023-07-07 20:52  juju527  阅读(19)  评论(0编辑  收藏  举报