$Prufer$序列

\(Prufer\)序列

\(Prufer\)序列与树的相互转换:

树->\(Prufer\)序列

找到一个编号最小的叶子结点,把这个点删掉并且把跟他连着的那个点的编号加入\(Prufer\)序列。

\(Prufer\)序列->树

设集合\(S={1,\cdots,n}\)
找到一个不在\(Prufer\)序列中且在\(S\)中的数,将它与\(Prufer\)序列中的第一个元素连边,并将这个数和\(Prufer\)序列的第一个元素删掉。
最后\(S\)会剩下最后两个元素,把这两个元素连边。

性质

性质\(1\)

\(Prufer\)序列与无根树一一对应。

性质\(2\)

\(n\)个点有编号的无根树有\(n^{n-2}\)个。
\(n\)个点的完全图的生成树个数有\(n^{n-2}\)个。

性质\(3\)

度数为\(d\)的点在\(Prufer\)序列中出现\(d-1\)次。

例题

[HNOI2004]树的计数

给定度数\(d_1\sim d_n\),求有多少树。
定理:给定度数\(d_1\sim d_n\)的无根树有\(\frac{(n-2)!}{\prod\limits_{i=1}^n{(d_i-1)!}}\)
证:
\(Prufer\)序列中\(i\)元素出现\(d_i-1\)次。
\(n-2\)个元素的排列有\((n-2)!\)
然后每一种元素自己内部的排列有\((d_i-1)\)
相除即可。实际上就是可重排列。

[HNOI2008]明明的烦恼

\(n\)个点给定\(k\)个点的度数\(d_1\sim d_k\),求有多少树。
这题是上一道题的拓展。
我们先设\(s=\sum\limits_{i=1}^k (d_i-1)\)
\(Prufer\)序列中这\(k\)个点会出现\(s\)次,这里的方案数为\({n-2}\choose{s}\)
然后我们考虑这\(k\)个点的排列,跟上一问一样的计算,方案数为\(\frac{s!}{\prod\limits_{i=1}^k (d_i-1)}\)
最后我们考虑剩下\(n-2-s\)个位置,每个位置可以填\(n-k\)个数中的一个,方案数为\((n-k)^{n-2-s}\)
所以总的答案就是\({{n-2}\choose{k}}\frac{s!}{\prod\limits_{i=1}^k (d_i-1)}(n-k)^{n-2-s}\)

转载于:https://www.cnblogs.com/cjoierShiina-Mashiro/p/11439661.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值