Prufer codes与Generalized Cayley's Formula学习笔记
\(Prufer\)序列
在一棵\(n\)个点带标号无根树里,我们定义这棵树的\(Prufer\)序列为执行以下操作后得到的序列
1.若当前树中只剩下两个节点,退出,否则执行\(2\)
2.令\(u\)为树中编号最小的叶子节点,记\(v\)为唯一与\(u\)有边相连的节点,把\(u\)删去,并将\(v\)加入到序列的末尾,重复\(1\)
显然,得到的\(Prufer\)序列是一个长度为\(n-2\)的序列
易证每一棵\(n\)个节点的有标号无根树都唯一对应一个长度为\(n-2\)的\(Prufer\)序列
无根树对应序列很容易证明,接下来我们要证明的是序列唯一对应无根树。我们只要知道如何根据序列求对应的无根树,并且保证求出的无根树唯一即可
根据序列求无根树,就是重复下列过程
令
1.令\(A=\{1,2,3,...,n\}\),不断重复\(2\)直到\(Prufer\)序列为空
2.找到\(A\)中最小的不在\(Prufer\)序列中的元素,将其与\(Prufer\)序列首元素连边,同时删除这个点和\(Prufer\)序列首元素
3.此时\(A\)中还剩下两个点,将它们连边即可
不难看出,如果一个点在树中度数为\(deg_i\),那么它在\(Prufer\)序列中的出现次数为\(deg_i-1\)
\(Cayley's\ Formula\)
因为长度为\(n-2\),每个元素取值范围为\([1,n]\)的序列个数为\(n^{n-2}\),根据无根树与\(Prufer\)序列的一一对应关系,有
\(n\)个点带标号无根树的个数为\(n^{n-2}\)
另外还有一个拓展
设树中点\(i\)的度数为\(d_i\),那么对应的无根树数量为\({(n-2)!\over \prod_{i=1}^n d_i}\)
\(Generalized\ Cayley's\ Formula\)
设\(f(n,m)\)为\(n\)个点构成\(m\)棵树,且\(1,2,3...,m\)全都不在同一棵树中,的方案数,有标号,无根
先给结论
\[f(n,m)=mn^{n-m-1}\]
当\(m=1\)时有\(f(n,1)=n^{n-2}\),即为\(Cayley's\ Formula\)
证明的话,我们采用归纳法
首先对于边界条件,有\(f(1,1)=1,f(n,0)=0\)
我们假设对于所有\(k<n\),\(f(k,m)=mk^{k-m-1}\)恒成立,接下来我们要证明\(f(n,m)=mn^{n-m-1}\)
为了方便起见,我们
我们枚举\(1\)号点的度数\(i\),以及与\(1\)相连的这\(i\)个点,那么去掉\(1\)号点之后,会留下\(n-1\)个点和\(m+i-1\)棵树,于是有
\[f(n,m)=\sum_{i=0}^{n-m}{n-m\choose i}f(n-1,m+i-1)\]
根据归纳,因为对于所有\(k<n\),\(f(k,m)=mk^{k-m-1}\)恒成立,所以
\[
\begin{aligned}
f(n,m)
&=\sum_{i=0}^{n-m}{n-m\choose i}f(n-1,m+i-1)\\
&=\sum_{i=0}^{n-m}{n-m\choose i}(m+i-1)(n-1)^{n-m-i-1}\\
\end{aligned}
\]
我们把\(i\)变成\(n-m-i\),柿子变成
\[
\begin{aligned}
f(n,m)
&=\sum_{i=0}^{n-m}{n-m\choose i}(n-i-1)(n-1)^{i-1}\\
&=\sum_{i=0}^{n-m}{n-m\choose i}(n-1)(n-1)^{i-1}-\sum_{i=0}^{n-m}{n-m\choose i}i(n-1)^{i-1}\\
&=\sum_{i=0}^{n-m}{n-m\choose i}(n-1)^i-\sum_{i=0}^{n-m}{n-m\choose i}i(n-1)^{i-1}\\
\end{aligned}
\]
前面那个东西,根据二项式定理,为\(n^{n-m}\)
后面那个东西,我们把\({n-m\choose i}i\)化为\({n-m-1\choose i-1}(n-m)\)
\[
\begin{aligned}
\sum_{i=0}^{n-m}{n-m\choose i}i(n-1)^{i-1}
&=\sum_{i=0}^{n-m}{n-m-1\choose i-1}(n-m)(n-1)^{i-1}\\
&=(n-m)\sum_{i=0}^{n-m-1}{n-m-1\choose i}(n-1)^i\\
&=(n-m)n^{n-m-1}
\end{aligned}
\]
代入柿子即可
定理拓展
\(n\)个带权的点,边的权值为连接两点点权之积,树的权值为所有边权值之积,求所有树的权值之和
令\(i\)的度数为\(d_i\),权值为\(val_i\),则一棵树的权值即为
\[\prod_{i=1}^n{val_i}^{d_i}\]
考虑\(Prufer\)序列,每个点恰出现\(d_i-1\)次,那么根据乘法分配律,答案为
\[\left(\prod_{i=1}^n{val_i}\right)\left(\sum_{i=1}^nval_i\right)^{n-2}\]
这个东西似乎包含了上面的所有定理。当所有点权值为\(1\)时,就是\(Cayley's\ Formula\)。当把\(1\)到\(m\)缩成一个权值为\(m\)的点时,就是\(Generalized\ Cayley's\ Formula\)
参考资料
https://www.cnblogs.com/HocRiser/p/10390772.html
On Cayley’s Formula for Counting Forests
Prufer codes与Generalized Cayley's Formula学习笔记的更多相关文章
- Prufer codes与Generalized Cayley's Formula
Prufer序列 在一棵n个节点带标号树中,我们认为度数为1的点为叶子.n个点的树的Prufer序列是经过下面流程得到的一个长度为n-2的序列. 1.若当前树中只剩下两个点,退出,否则执行2. 2.找 ...
- Hook length formula 学习笔记 UVALive 6625
最近做到一个关于杨氏矩阵的题目. UVALive 6625 题目大意是用n以内的数填充杨氏矩阵,要求行严格递增,列不严格递增. 求方案数. 数据范围很小,我直接上爆搜,结果TLE了. 后来发现一位学长 ...
- Codeforces 1109D: generalizations of Cayley's formula证明
做这题的时候发现题解里有提到\(generalizations\ of\ Cayley's\ formula\)的,当场懵逼,Wikipedia里也就带到了一下,没有解释怎么来的,然后下面贴了篇论文. ...
- A.Kaw矩阵代数初步学习笔记 5. System of Equations
“矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...
- A.Kaw矩阵代数初步学习笔记 4. Unary Matrix Operations
“矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...
- IRP IO_STACK_LOCATION 《寒江独钓》内核学习笔记(1)
在学习内核过滤驱动的过程中,遇到了大量的涉及IRP操作的代码,这里有必要对IRP的数据结构和与之相关的API函数做一下笔记. 1. 相关阅读资料 <深入解析 windows 操作系统(第4版,中 ...
- Requests:Python HTTP Module学习笔记(一)(转)
Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...
- Web Service学习笔记(webservice、soap、wsdl、jws详细分析)
Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...
- Web Service学习笔记
Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...
随机推荐
- Maven(五)使用Nexus搭建Maven私服
文章装载于:http://blog.csdn.net/jun55xiu/article/details/39497089 Nexus介绍 Nexus是Maven仓库管理器,如果你使用Maven,你可以 ...
- 【318】C# 学习笔记
笔记 01:C# 数据结构 引用类型(Reference types) 引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用. 换句话说,它们指的是一个内存位置.使用多个变量时,引用类型可以指 ...
- 在spring中使用quartz配置作业的二种方式
- 前端开发之jQuery位置属性和筛选方法
主要内容: 1.jQuery的位置属性及实例 (1)位置属性 (2)实例 --- 仿淘宝导航栏 2.jQuery的筛选方法及实例 (1)筛选方法 (2)实例一:嵌套选项卡 (3)实例二:小米官网滑动 ...
- Go Flow Control
[Go Flow Control] 1.for没有(),必须有{}. 2.for的前后表达式可以为空. 3.没有while,for即是while. 4.无穷循环. 5.if没有(),必须有{}. 6. ...
- y=x^2 vs y=x^(1/2)
[y=x^2 vs y=x^(1/2)] y=x^2,基础函数,废话不多说. y=x^(1/2),指数变成了上式的倒数.x^(1/2)即是,√x.但函数图像会是什么样呢?可以把y=x^(1/2),转变 ...
- 每月IT摘录201806
一.技术 1.架构师的技术升级要点:用两个字来描述:集群,用三个字:分布式,再用多点的文字:把海量的流量和数据合理分摊到数量合适的机器上. 想明白这点,后面就能知道该学哪些了,比如流量分摊时得负载均衡 ...
- 自学jquery,下午实现前后台交互--成为牛逼的女程序员
希望周末能够把搜索质量对比的页面做出来!!! 牛逼的薰衣草程序员,fighting
- 02-SSH综合案例:需求分析(后台)
1.1.7 用户模块:(后台) 不用添加了,添加的话在前台就注册了. 查询所有用户: 修改用户信息: 删除用户信息: 1.1.8 一级分类:(后台) 主要都还是增删改查的操作 查询所有一级分类: ...
- ICG游戏:斐波那契博弈
描述: 有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下: 1)先手不能在第一次把所有的石子取完,至少取1颗: 2)之后每次可以取的石子数至少为1,至多为对手刚取的石子数的2倍: ...