【学习笔记】Prufer 序列
定义与构造
用于有标号无根树计数。
-
构造:每次选编号最小的叶子结点,删去这个节点并在序列中记录其父亲。直至剩下 \(2\) 个节点,其中一定有一个为 \(n\)。
-
还原:每次选编号最小的在序列中未出现的节点,将其与队首连边,同时删去队首元素。最后剩下两个节点,连起来即可。
容易发现构造与还原过程都是在找最小,只不过一个连边一个断边。
可以用 set
维护最小,复杂度 \(O(n\log n)\) 大致够用。
性质
然而 Prufer 序列大多数是用来给树计数的。
-
有标号无根树计数:序列与树是双射,因此是 \(n^{n-2}\)。这个东西叫 Cayley 公式。
-
有标号有根树计数:每个无根树有 \(n\) 中赋根可能,因此是 \(n\times n^{n-2}=n^{n-1}\)。
-
一个节点的度数是其在序列中出现次数 \(+1\)。
-
根据上一性质,给定度数的情况下,有标号无根树个数为:$$\dbinom{n-2}{d_1-1,d_2-1,\cdots,d_n-1}=\dfrac{(n-2)!}{\prod_{i=1}^n (d_i-1)!}$$