\(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学习笔记的更多相关文章

  1. Prufer codes与Generalized Cayley's Formula

    Prufer序列 在一棵n个节点带标号树中,我们认为度数为1的点为叶子.n个点的树的Prufer序列是经过下面流程得到的一个长度为n-2的序列. 1.若当前树中只剩下两个点,退出,否则执行2. 2.找 ...

  2. Hook length formula 学习笔记 UVALive 6625

    最近做到一个关于杨氏矩阵的题目. UVALive 6625 题目大意是用n以内的数填充杨氏矩阵,要求行严格递增,列不严格递增. 求方案数. 数据范围很小,我直接上爆搜,结果TLE了. 后来发现一位学长 ...

  3. Codeforces 1109D: generalizations of Cayley's formula证明

    做这题的时候发现题解里有提到\(generalizations\ of\ Cayley's\ formula\)的,当场懵逼,Wikipedia里也就带到了一下,没有解释怎么来的,然后下面贴了篇论文. ...

  4. A.Kaw矩阵代数初步学习笔记 5. System of Equations

    “矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...

  5. A.Kaw矩阵代数初步学习笔记 4. Unary Matrix Operations

    “矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...

  6. IRP IO_STACK_LOCATION 《寒江独钓》内核学习笔记(1)

    在学习内核过滤驱动的过程中,遇到了大量的涉及IRP操作的代码,这里有必要对IRP的数据结构和与之相关的API函数做一下笔记. 1. 相关阅读资料 <深入解析 windows 操作系统(第4版,中 ...

  7. Requests:Python HTTP Module学习笔记(一)(转)

    Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...

  8. Web Service学习笔记(webservice、soap、wsdl、jws详细分析)

    Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...

  9. Web Service学习笔记

    Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...

随机推荐

  1. my sql存储过程 基本使用

    --------------创建不带参数的存储过程----------------- DELIMITER;; drop PROCEDURE if EXISTS selectStudent; creat ...

  2. 迷你MVVM框架 avalonjs 0.97发布

    在本版本中,王之三柱臣全部就位! mmRouter: https://github.com/RubyLouvre/mmRouter mmAnimate: https://github.com/Ruby ...

  3. react-native 组件的导入、导出

    一.前言背景: 学习react native的关键在于组件,依靠组件的拼接达到想要的效果,由此可见,组件就像一块块功能各异的零件,最终搭建出我们想要的效果. 今天我们就从组件的导入.导出开始 下面是我 ...

  4. php 共享内存学习(APC扩展)

    问题:希望可以在进程间共享变量,为共享数据提供快速访问 解决方案:使用APC扩展的数据存储功能 (cli模式下没有作用) //获取原来的值 $population = apc_fetch('popul ...

  5. C#获取MAC地址的几种方法

    首先需要用到的一些方法和类: public enum NCBCONST { NCBNAMSZ = 16, MAX_LANA = 254, NCBENUM = 0x37, NRC_GOODRET = 0 ...

  6. 基于 EntityFramework 的数据库主从读写分离服务插件

    基于 EntityFramework 的数据库主从读写分离服务插件 1. 版本信息和源码 1.1 版本信息 v1.01 beta(2015-04-07),基于 EF 6.1 开发,支持 EF 6.1 ...

  7. centos7之salt命令随笔笔记

    打印当前服务器python下的redis版本 python -c 'import redis; print redis.VERSION' 如果salt-master报错: No minions mat ...

  8. 五款免费的UML建模工具

    1.免费UML建模工具推荐:JUDE–community 2.免费UML建模工具推荐:UMLet 3.免费UML建模工具推荐:ArgoUML 4.免费UML建模工具推荐:BOUml 5.免费UML建模 ...

  9. msys2 + clion安装所需的mingw64编译环境

    pacman -S mingw-w64-x86_64-toolchain 输出结果为: $ pacman -S mingw-w64-x86_64-toolchain:: 在组 mingw-w64-x8 ...

  10. MyEclipse不能自动编译解决办法总结

    yEclipse在debug模式下,有时会碰到修改的文件无法自动编译的问题,以下的方法可以逐一尝试一下. 1.确保:Project->build automatically 已经被选上. 2.p ...