Prufer序列

Prufer序列

Prufer 序列可以将一个带标号\(n\)个结点的无根树用\(n-2\)\([1,n]\)的整数表示。也可以理解为完全图的生成树与数列之间的双射。

带标号无根树与\(Prufer\)序列是一一对应的。

无根树转Prufer序列

有一棵带标号无根树。它的\(Prufer\)序列构造如下:

 每次选择一个编号最小的叶结点并删掉它,然后在序列中记下和它相邻的那个结点的编号。反复执行操作直到只剩下两个结点。

Prufer序列转无根树

有一个\(Prufer\)序列和\(n\)个点的点集。转回无根树就是:

 每次取出\(Prufer\)序列中最前面的元素\(x\),和点集中编号最小的不在\(Prufer\)序列的元素\(y\),给\(x,y\)连边之后分别删去。最后点集中剩下两个结点,把它们连边。

性质

  • \(Prufer\)序列中每个编号出现次数等于该结点在原树中的度数-1。(只有作为叶子被删去时不会加入序列中)

Cayley′s Formula

因为\(Prufer\)序列和原树是一一对应的关系,所以

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

\(Ex\)

1.如果给定每个点度数$d_1,d_2,\dots,d_n $,那么

  • 对应的无根树的数量为\(\frac{(n-2)!}{\prod_{i=1}^n(d_i-1)!}\)

    相当于是已经确定了序列中的元素,现在只用算多重集的排列数。

2.\(n\)个点其中\(k\)个给定度数,令\(s=\sum_{i=1}^k(d_i-1)\)

  • 对应的无根树数量\(\binom{n-2}{s}\frac{s!}{\prod_{i=1}^k(d_i-1)!}(n-k)^{n-2-s}\)

    就是这\(s\)个排列了之后剩下的位置随便填。

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

​ 设点\(i\)的权值为\(val_i\),度数为\(d_i\),那么一棵树的权值就是\(\prod_{i=1}^nval_i^{d_i}\)

​ 考虑利用\(Prufer\)序列计算。根据乘法分配率

  • 答案是\((\prod_{i=1}^nval_i)(\sum_{i=1}^nval_i)^{n-2}\)

    第一项就是考虑到每个点在\(Prufer\)序列恰出现\(d_i-1\)次,所以要补一次。

Generalized Cayley′s Formula

\(n\)个点构成\(m\)棵有标号无根树,且指定其中\(m\)个点不在同一棵树上。

  • 方案数为\(f(n,m)=mn^{n-m-1}\)

\(m=1\)时有\(f(n,1)=n^{n-2}\),即Cayley′s Formula。

可以归纳证明:首先对于任意\(n\)\(f(n,0)=0\)\(f(n,1)=n^{n-2}\),这是边界。

我们假设对于所有\(i<n\)\(f(i,m)=mi^{i-m-1}\)恒成立。要证\(f(n,m)=mn^{n-m-1}\)

方便起见,我们枚举1号点的度数\(i\),以及与1号点相连的那\(i\)个点,那么在去掉1号点之后,会留下\(n-1\)个点和\(m+i-1\)棵树(常用的缩小规模手段要学会)。即:

\[\begin{align} f(n,m)=&\sum\limits_{i=0}^{n-m}\binom{n-m}{i}f(n-1,m+i-1)\\ =&\sum\limits_{i=0}^{n-m}\binom{n-m}{i}(m+i-1)(n-1)^{n-m-i-1}\\ \end{align} \]

\(i=n-m-i\),则有:

\[\begin{align} f(n,m)=&\sum\limits_{i=0}^{n-m}\binom{n-m}{i}(n-i-1)(n-1)^{i-1}\\ =&\sum\limits_{i=0}^{n-m}\binom{n-m}{i}(n-1)^i-\sum\limits_{i=0}^{n-m}\binom{n-m}{i}i(n-1)^{i-1}\\ =&\sum\limits_{i=0}^{n-m}\binom{n-m}{i}(n-1)^i-\sum\limits_{i=1}^{n-m}\binom{n-m}{i}i(n-1)^{i-1} \end{align} \]

第二步到第三步是因为\(i=0\)时这一项乘了个\(i\)所以结果就是0。

前面一项,用二项式定理变成\(n^{n-m}\);后面一项把\(i\)丢进组合数里约分,\(\binom{n-m}{i}i\)变成\((n-m)\binom{n-m-1}{i-1}\)

\[\begin{align} f(n,m)=&n^{n-m}-(n-m)\sum\limits_{i=1}^{n-m}\binom{n-m-1}{i-1}(n-1)^{i-1}\\ =&n^{n-m}-(n-m)\sum\limits_{i=0}^{n-m-1}\binom{n-m-1}{i}(n-1)^{i}\\ =&n^{n-m}-(n-m)n^{n-m-1}\\ =&mn^{n-m-1} \end{align} \]

\(Q.E.D.\)

图联通方案数

Problem to solve\(n\)个点\(m\)条边的带标号无向图形成\(k\)个联通块。添加\(k-1\)条边使得图联通的方案数。

\(s_i\)表示第\(i\)个联通块中点的数量。我们现在是要对\(k\)个联通块构造\(Prufer\)序列。但是因为每个联通块连接方式很多,所以不能直接简单构造。

考虑设\(d_i\)为第\(i\)个联通块的度数。有\(\sum\limits_{i=1}^kd_i-1=k-2\)(两边同时加\(k\)就是\(\sum\limits_{i=1}^kd_i=2k-2\),即度数和是边数的两倍),那么对于给定\(d\)序列构造\(Prufer\)序列的方案数有

\[\binom{k-2}{d_1-1,d_2-1,\dots,d_k-1}=\frac{(k-2)!}{(d_1-1)!(d_2-1)!\dots(d_k-1)!} \]

这和Cayley′s Formula的\(Ex1.\)是一样的。

对于第\(i\)个联通块,它的连接方式有\(s_i^{d_i}\)种,因为每一条边可以选择任意点连接。那么对于给定\(d\)序列的图,使其联通的方案数为

\[\binom{k-2}{d_1-1,d_2-1,\dots,d_k-1}\cdot \prod\limits_{i=1}^ks_i^{d_i} \]

所有方案就是再枚举一个\(d\)序列:

\[\sum\limits_{d_i\geq 1,\sum_{i=1}^kd_i=2k-2}\binom{k-2}{d_1-1,d_2-1,\dots,d_k-1}\cdot \prod\limits_{i=1}^ks_i^{d_i} \]

由多元二项式定理:

\[(x_1+x_2+\dots+x_m)^p=\sum\limits_{c_i\ge0,\sum_{i=1}^mc_i=p}\binom{p}{c_1,c_2,\dots,c_m}\cdot \prod x_i^{c_i} \]

\(e_i=d_i-1\),原式变成:

\[\begin{align} &\sum\limits_{e_i\geq 0,\sum_{i=1}^ke_i=k-2}\binom{k-2}{e_1,e_2,\dots,e_k}\cdot \prod\limits_{i=1}^ks_i^{e_i+1}\\ &=(s_1+s_2+\dots+s_k)^{k-2}\cdot \prod\limits_{i=1}^ks_i \end{align} \]

转自:

https://oi-wiki.org/graph/prufer/

https://blog.csdn.net/weixin_34227447/article/details/93649135

posted @ 2020-01-07 23:00  Fruitea  阅读(268)  评论(0编辑  收藏  举报