Prufer codes与Generalized Cayley's Formula学习笔记

(Prufer)序列

在一棵(n)个点带标号无根树里,我们定义这棵树的(Prufer)序列为执行以下操作后得到的序列

1.若当前树中只剩下两个节点,退出,否则执行(2)

2.令(u)为树中编号最小的叶子节点,记(v)为唯一与(u)有边相连的节点,把(u)删去,并将(v)加入到序列的末尾,重复(1)

显然,得到的(Prufer)序列是一个长度为(n-2)的序列

易证每一棵(n)个节点的有标号无根树都唯一对应一个长度为(n-2)(Prufer)序列

无根树对应序列很容易证明,接下来我们要证明的是序列唯一对应无根树。我们只要知道如何根据序列求对应的无根树,并且保证求出的无根树唯一即可

根据序列求无根树,就是重复下列过程

1.令(A={1,2,3,...,n}),不断重复(2)直到(Prufer)序列为空

2.找到(A)中最小的不在(Prufer)序列中的元素,将其与(Prufer)序列首元素连边,同时删除这个点和(Prufer)序列首元素

3.此时(A)中还剩下两个点,将它们连边即可

不难看出,如果一个点在树中度数为(deg_i),那么它在(Prufer)序列中的出现次数为(deg_i-1)

(Cayley's Formula)

因为长度为(n-2),每个元素取值范围为([1,n])的序列个数为(n^{n-2}),根据无根树与(Prufer)序列的一一对应关系,有

(n)个点带标号无根树的个数为(n^{n-2})

另外还有一个拓展

设树中点(i)的度数为(d_i),那么对应的无根树数量为({(n-2)!over prod_{i=1}^n d_i})

(Generalized Cayley's Formula)

(f(n,m))(n)个点构成(m)棵树,且(1,2,3...,m)全都不在同一棵树中,的方案数,有标号,无根

先给结论

[f(n,m)=mn^{n-m-1} ]

(m=1)时有(f(n,1)=n^{n-2}),即为(Cayley's Formula)

证明的话,我们采用归纳法

首先对于边界条件,有(f(1,1)=1,f(n,0)=0)

我们假设对于所有(k<n)(f(k,m)=mk^{k-m-1})恒成立,接下来我们要证明(f(n,m)=mn^{n-m-1})

为了方便起见,我们

我们枚举(1)号点的度数(i),以及与(1)相连的这(i)个点,那么去掉(1)号点之后,会留下(n-1)个点和(m+i-1)棵树,于是有

[f(n,m)=sum_{i=0}^{n-m}{n-mchoose i}f(n-1,m+i-1) ]

根据归纳,因为对于所有(k<n)(f(k,m)=mk^{k-m-1})恒成立,所以

[egin{aligned} f(n,m) &=sum_{i=0}^{n-m}{n-mchoose i}f(n-1,m+i-1)\ &=sum_{i=0}^{n-m}{n-mchoose i}(m+i-1)(n-1)^{n-m-i-1}\ end{aligned} ]

我们把(i)变成(n-m-i),柿子变成

[egin{aligned} f(n,m) &=sum_{i=0}^{n-m}{n-mchoose i}(n-i-1)(n-1)^{i-1}\ &=sum_{i=0}^{n-m}{n-mchoose i}(n-1)(n-1)^{i-1}-sum_{i=0}^{n-m}{n-mchoose i}i(n-1)^{i-1}\ &=sum_{i=0}^{n-m}{n-mchoose i}(n-1)^i-sum_{i=0}^{n-m}{n-mchoose i}i(n-1)^{i-1}\ end{aligned} ]

前面那个东西,根据二项式定理,为(n^{n-m})

后面那个东西,我们把({n-mchoose i}i)化为({n-m-1choose i-1}(n-m))

[egin{aligned} sum_{i=0}^{n-m}{n-mchoose i}i(n-1)^{i-1} &=sum_{i=0}^{n-m}{n-m-1choose i-1}(n-m)(n-1)^{i-1}\ &=(n-m)sum_{i=0}^{n-m-1}{n-m-1choose i}(n-1)^i\ &=(n-m)n^{n-m-1} end{aligned} ]

代入柿子即可

定理拓展

(n)个带权的点,边的权值为连接两点点权之积,树的权值为所有边权值之积,求所有树的权值之和

(i)的度数为(d_i),权值为(val_i),则一棵树的权值即为

[prod_{i=1}^n{val_i}^{d_i} ]

考虑(Prufer)序列,每个点恰出现(d_i-1)次,那么根据乘法分配律,答案为

[left(prod_{i=1}^n{val_i} ight)left(sum_{i=1}^nval_i ight)^{n-2} ]

这个东西似乎包含了上面的所有定理。当所有点权值为(1)时,就是(Cayley's Formula)。当把(1)(m)缩成一个权值为(m)的点时,就是(Generalized Cayley's Formula)

参考资料

https://www.cnblogs.com/HocRiser/p/10390772.html

On Cayley’s Formula for Counting Forests

原文地址:https://www.cnblogs.com/bztMinamoto/p/10661891.html