资料整理

本文介绍了Prufer编码的构造方法及其与无根树之间的唯一对应关系,并利用这一关系证明了Cayley公式,即一个完全图K_n有n^(n-2)棵生成树。同时,还探讨了Prufer编码与节点度数间的有趣推广。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

周五出发去武汉,华中区程序设计大赛,虽然是作为机动名额去的,但是也要加油!!!争取拿牌,加油!!!整理一下以前的资料【以前写在百度空间的】

Prufer编码——构造方法如下:从树中去掉编号值最小的叶子节点(仅与一条边邻接的节点),以及与它邻接的边后,记下与它邻接的节点的编号。在树中重复这个过程,直到只剩下一个节点(总是编号为n的节点)为止。记下的n-1个编号序列就是树的Prufer编码。

cayley公式:一个完全图K_n有n^(n-2)棵生成树,换句话说n个节点的带标号的无根树有n^(n-2)个。

证明过程:对于任意一棵树,肯定有一个prufer编码and任何一个Prüfer编码都唯一地对应了一棵无根树。对于n阶的树,一共有n-1条边,可以建成长度为n-2的序列(无根树,节点数n>2的树才存在叶子节点,最后一个节点是可以确定的),而这种序列有n^n-2中取法,所以,公式成立。

二者的联系:任何一个Prufer编码都唯一地对应了一棵无根树

证明过程:

如果一个节点A不是叶子节点,那么它至少有两条边;当整个图只剩下一条边,节点A的至少一个相邻节点被去掉过,节点A的编号将会在这棵树对应的Prüfer编码中出现。反过来,在Prufer编码中出现过的数字显然不可能是这棵树(初始时)的叶子。即没有在Prüfer编码中出现过的数字恰好就是这棵树(初始时)的叶子节点。找出没有出现过的数字中最小的那一个a1,它就是与Prüfer编码中第一个数所标识的节点相邻的叶子。接下来,递归地考虑后面n-3位编码(别忘了编码总长是n-2):找出除a1以外不在后n-3位编码中的最小的数将它连接到整个编码的第2个数所对应的节点上。。。。。。最后两个没处理过的节点,连在一起(其中一个点一定出现过 已经确定了序列)。由于没处理过的节点数总比剩下的编码长度大2,因此我们总能找到一个最小的没在剩余编码中出现的数,算法总能进行下去。这样,任何一个Prüfer编码都唯一地对应了一棵无根树,有多少个n-2位的Prufer编码就有多少个带标号的无根树。

一个有趣的推广:n个节点的度依次为D1, D2, …, Dn的无根树共有(n-2)! / [ (D1-1)!(D2-1)!..(Dn-1)! ]个

证明过程:节点的度数为Di,Prufer编码中的数字i恰好出现Di-1次。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值