prufer序列与Cayley公式(学习笔记)

给定 n n n个结点有标号的无根树,与长度为 n − 2 n-2 n2的prufer序列为一一映射。
又因为序列的每个数有 n n n种选择,所以 n n n个结点有标号无根树的不同个数有: n n − 2 n^{n-2} nn2种。
与此对应:因为根有 n n n种选择,所以 n n n个结点有标号有根树的不同个数有: n n − 1 n^{n-1} nn1种。

推广: n n n个结点度数依次为: d 1 , d 2 , d 3 … d n d_1,d_2,d_3\dots d_n d1,d2,d3dn的无根树有: ( n − 2 ) ! [ ( d 1 − 1 ) ! × ( d 2 − 1 ) ! ⋯ × ( d n − 1 ) ! ] \dfrac{(n-2)!}{[(d_1-1)!\times(d_2-1)!\dots\times(d_n-1)!]} [(d11)!×(d21)!×(dn1)!](n2)! ,其中prufer编码中的数字 i i i恰好出现 d i − 1 d_i-1 di1次。
且需要满足: ∑ i = 1 n d [ i ] − 1 = n − 2 \sum\limits_{i=1}^n d[i]-1=n-2 i=1nd[i]1=n2
此外需要注意特判 n = = 1 n==1 n==1的情况, d [ i ] = = 0 d[i]==0 d[i]==0 只有唯一解,否则无解。

该公式的乘法形式为:组合数的形式。每次从剩下的数中选出 d [ i ] − 1 d[i]-1 d[i]1个。
即公式为:
n n n个组合数相乘
C ( n − 2 , d [ 1 ] − 1 ) C ( n − 2 − ( d [ 1 ] − 1 ) , d [ 2 ] − 1 ) C ( n − 2 − ( d [ 1 ] − 1 ) − ( d [ 2 ] − 1 ) , d [ 3 ] − 1 ) … C ( d [ n ] − 1 , d [ n ] − 1 ) C(n-2,d[1]-1)\\C(n-2-(d[1]-1),d[2]-1)\\C(n-2-(d[1]-1)-(d[2]-1),d[3]-1)\\\dots\\C(d[n]-1,d[n]-1) C(n2,d[1]1)C(n2(d[1]1),d[2]1)C(n2(d[1]1)(d[2]1),d[3]1)C(d[n]1,d[n]1)

证明传送门