【转载】完全图的生成树

经典证明:Prüfer编码与Cayley公式(转Matrix67)


Cayley公式是说,一个完全图K_n有n^(n-2)棵生成树,换句话说n个节点的带标号的无根树有n^(n-2)个。今天我学到了Cayley公式的一个非常简单的证明,证明依赖于Prüfer编码,它是对带标号无根树的一种编码方式。
给定一棵带标号的无根树,找出编号最小的叶子节点,写下与它相邻的节点的编号,然后删掉这个叶子节点。反复执行这个操作直到只剩两个节点为止。由
于节点数n>2的树总存在叶子节点,因此一棵n个节点的无根树唯一地对应了一个长度为n-2的数列,数列中的每个数都在1到n的范围内。下面我们只

需要说明,任何一个长为n-2、取值范围在1到n之间的数列都唯一地对应了一棵n个节点的无根树,这样我们的带标号无根树就和Prüfer编码之间形成一
一对应的关系,Cayley公式便不证自明了。

注意到,如果一个节点A不是叶子节点,那么它至少有两条边;但在上述过程结束后,整个图只剩下一条边,因此节点A的至少一个相邻节点被去掉过,节
点A的编号将会在这棵树对应的Prüfer编码中出现。反过来,在Prüfer编码中出现过的数字显然不可能是这棵树(初始时)的叶子。于是我们看到,没

有在Prüfer编码中出现过的数字恰好就是这棵树(初始时)的叶子节点。找出没有出现过的数字中最小的那一个(比如④),它就是与Prüfer编码中第

一个数所标识的节点(比如③)相邻的叶子。接下来,我们递归地考虑后面n-3位编码(别忘了编码总长是n-2):找出除④以外不在后n-3位编码中的最小

的数(左图的例子中是⑦),将它连接到整个编码的第2个数所对应的节点上(例子中还是③)。再接下来,找出除④和⑦以外后n-4位编码中最小的不被包含的

数,做同样的处理……依次把③⑧②⑤⑥与编码中第3、4、5、6、7位所表示的节点相连。最后,我们还有①和⑨没处理过,直接把它们俩连接起来就行了。由

于没处理过的节点数总比剩下的编码长度大2,因此我们总能找到一个最小的没在剩余编码中出现的数,算法总能进行下去。这样,任何一个Prüfer编码都唯
一地对应了一棵无根树,有多少个n-2位的Prüfer编码就有多少个带标号的无根树。

一个有趣的推广是,n个节点的度依次为D1, D2, ..., Dn的无根树共有(n-2)! / [ (D1-1)!(D2-1)!..(Dn-1)! ]个,因为此时Prüfer编码中的数字i恰好出现Di-1次。

时间: 2024-08-28 21:25:47

【转载】完全图的生成树的相关文章

luogu P2144 [FJOI2007] 轮状病毒 矩阵(da)生成树(biao)+高精

传送门 明显的生成树 所以矩阵统计完全图的生成树计数就OK ......原地懵逼 并不会行列式 等等 完全图 果断列了一个矩阵(主对角线N*(N-1)/2,其他(N-1)) (当然是3*3矩阵和4*4矩阵) 然后搞了一个互相推 ....30minutes later...... 两个矩阵推不出来 试试三个 (当然是2,3,4) ....20minutes later...... 发现满足f[n] = f[n-1] * 3 - f[n-2] + 2 (鬼知道我是怎么发现的) 1和2可以手胡 然后n

【BZOJ】【1430】小猴打架

排列组合 蛮逗的…… 这题题干描述的就一股浓浓的Kruskal的气息……很容易就想到是求一个n个点的完全图的生成树个数,然后由于有序,再乘一个n-1的排列数(n-1条边的全排列)即(n-1)! 但是我一下就卡在了 完全图的生成树个数这个地方……怎么也想不出来……后来看了题解,原来这是一个奇葩的结论:[n^(n-2)] 好吧剩下的就是水了……完全无压力…… Cayley公式 1 /***********************************************************

n阶完全生成图的数量

有些事不是看到了希望才去坚持,而是坚持了才会看到希望 问题 I: 星际之门(一) 时间限制: 1 Sec 内存限制: 128 MB 提交: 8 解决: 2 [提交][状态][讨论版] 题目描述 公元3000年,子虚帝国统领着N个星系,原先它们是靠近光束飞船来进行旅行的,近来,X博士发明了星际之门,它利用虫洞技术,一条虫洞可以连通任意的两个星系,使人们不必再待待便可立刻到达目的地. 帝国皇帝认为这种发明很给力,决定用星际之门把自己统治的各个星系连结在一起. 可以证明,修建N-1条虫洞就可以把这N个

星际之门(一)

星际之门(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 公元3000年,子虚帝国统领着N个星系,原先它们是靠近光束飞船来进行旅行的,近来,X博士发明了星际之门,它利用虫洞技术,一条虫洞可以连通任意的两个星系,使人们不必再待待便可立刻到达目的地. 帝国皇帝认为这种发明很给力,决定用星际之门把自己统治的各个星系连结在一起. 可以证明,修建N-1条虫洞就可以把这N个星系连结起来. 现在,问题来了,皇帝想知道有多少种修建方案可以把这N个星系用N-1条虫洞连结起来?

bzoj 4766: 文艺计算姬 -- 快速乘

4766: 文艺计算姬 Time Limit: 1 Sec  Memory Limit: 128 MB Description "奋战三星期,造台计算机".小W响应号召,花了三星期造了台文艺计算姬.文艺计算姬比普通计算机有更多的艺 术细胞.普通计算机能计算一个带标号完全图的生成树个数,而文艺计算姬能计算一个带标号完全二分图的生成树 个数.更具体地,给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图K_{n,m},计算姬能快 速算出其生成树个数.小W不知道计算姬算的对

BZOJ4766: 文艺计算姬

Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 737  Solved: 402[Submit][Status][Discuss] Description "奋战三星期,造台计算机".小W响应号召,花了三星期造了台文艺计算姬.文艺计算姬比普通计算机有更多的艺 术细胞.普通计算机能计算一个带标号完全图的生成树个数,而文艺计算姬能计算一个带标号完全二分图的生成树 个数.更具体地,给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二

「Luogu4430」小猴打架

「Luogu4430」小猴打架 题目描述 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打架之后,整个森林的小猴都会成为好朋友. 现在的问题是,总共有多少种不同的打架过程. 比如当N=3时,就有{1-2,1-3}{1-2,2-3}{1-3,1-2}{1-3,2-3}{2-3,1-2}{2-3,1-3}六种不同的打架过程. 输入输出格式 输入格式: 一个整数N. 输出格式: 一行,方案

初识prufer序列

前言 \(prufer\)序列应该是一个比较实用的东西. 据\(hl666\)大佬说,一切与度数有关的树上计数问题,都可以用它以及它的性质来解决. 而听说\(ZJOI\)最近特别喜欢出计数题,所以有必要学一学. 转化\(1\):从无根树到\(prefur\)序列 现在,给你一棵树,我们要考虑如何把它变成\(prefur\)序列. 我们需要重复进行以下操作,直至树中只剩下两个点: 找到一个度数为\(1\),且编号最小的点.(其中编号最小保证了后面将会提到的\(prufer\)序列的唯一对应性,同时

prefur序列

prefur序列是一颗无根树的唯一映射 构造:每次找到度数为1且编号最小的点,把这个点的父亲加入序列,然后删除这个点,重复直到树中只剩2个点 复原:取出序列最前面的点,再取出在点集中且不在序列中的最小元素,连结两个点 性质&结论: 度数为\(d\)的点在序列中出现\(d-1\)次 一个\(n\)个节点的完全图的生成树个数为\(n^{n-2}\) 对于一个\(n\)个点的无根树,它的\(prufer\)序列长为\(n?2\),而每个位置有\(n\)种可能性,因此可能的\(prufer\)序列有\(