Prufer序列与树的计数(坑)

时间:2022-08-30 21:40:41

\(prufer\)序列:

无根树转\(prufer\)序列:

不断找编号最小的叶子节点,删掉并在序列中加入他相连的节点。

\(prufer\)转无根树:

找到在目前\(prufer\)序列中未出现且未使用的编号最小的的节点与当前位相连,当前位从\(prufer\)序列中删除,节点标为已使用,剩余最后两个未使用的节点相连。

性质:

\(1.prufer\)序列中某个编号出现的次数就等于这个编号的节点在无根树中的度数-1。
\(2.\)一棵n个节点的无根树唯一地对应了一个长度为\(n-2\)的数列,\(n\)个点的无根树有\(n^{(n-2)}\)种。

树的计数

\(1.\)n个节点度数依次为\(D_1,D_2,D_3...D_n\)的无根树的种类有(可重集的组合):
\((n-2)!/((D_{1}-1)!\times...\times(D_{n}-1)!)\)
\(2.\)\(1\)的基础上,有\(m\)个节点度数未知,剩余\(left\)个位置(prufer中,共n-2个),种类有(先把left挑出来\(\times\)再让m个点分left位置,乘法原理):
\[{(n-2)!}\over{((D_{1}-1)!\times \cdots \times(D_{n-m}-1)!\times left!)\times m^{left}}\]
\(3.n\)个点有标号有根树:\(n^{n-2}\times n=n^{n-1}\)
\(4.n\)个点无标号有根树:坑——生成函数
\(5.n\)个点无标号无根树:坑——生成函数