prufer序列

背景:

最近在学习数论,好久没有写博客了,今天学习了一种新东西......



构造:

注意:这是一个迭代的过程,且只剩两个点时结束。

每一次找到一个度为1的点(显然是叶子结点),将其删除,将它连出的点加入prufer序列,最后将它连出去的边删除。

重复此过程即可。


如此图(百度百科用这张图):

(1)找到2,将3加入prufer序列,删除这两个点之间的边;

(2)找到4,将5加入prufer序列,删除这两个点之间的边;

(3)找到5,将1加入prufer序列,删除这两个点之间的边;

(4)找到1,将3加入prufer序列,删除这两个点之间的边;

(5)只剩下两个点(3,6),结束。

最后的结果就为{3,5,1,3}。



逆构造:

即将prufer序列转化为树。

假设有n个点,对于一个集合,每次从prufer序列序列中取出最前面的一个点,与S集合未在prufer序列中出现的数连边,将两个数再起分别所在的地方删除,重复n-2次(必然prufer序列为空了),最后将集合中剩余的两个点连边。


如:

有n=6,这一棵无根树的prufer序列为{3,5,1,3}。

则S={1,2,3,4,5,6}。

(1)在prufer序列中取出最前面的一个点3,在S中找到在prufer序列中出现的数2,2与3连边, 将其分别删除。此时,prufer序列为{5,1,3},S集合为{1,3,4,5,6};

(2)在prufer序列中取出最前面的一个点5,在S中找到在prufer序列中出现的数4,4与5连边, 将其分别删除。此时,prufer序列为{1,3},S集合为{1,3,5,6};

(3)在prufer序列中取出最前面的一个点1,在S中找到在prufer序列中出现的数5,1与5连边, 将其分别删除。此时,prufer序列为{3},S集合为{1,3,6};

(4)在prufer序列中取出最前面的一个点3,在S中找到在prufer序列中出现的数1,1与3连边, 将其分别删除。此时,prufer序列为,S集合为{3,6};

(5)最后将3与6连边即可。

就得到了此图:




性质:

[1]:一个n个节点的无根树唯一对应了一个n-2长度的prufer序列。

[2]:prufer序列中某一编号的出现的次数等于这个编号的节点在无根树的度数-1。

上面两个比较显然,难的出现了。

[3]:n个点的无根树的方案数:

                                                                   

[4]:推广到:已知n个点的度分别为d1,d2,d3,...,dn,其无根树的方案数:

                                                            

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值