Prufer codes与Generalized Cayley's Formula
Prufer序列
在一棵n个节点带标号树中,我们认为度数为1的点为叶子。n个点的树的Prufer序列是经过下面流程得到的一个长度为n-2的序列。
1.若当前树中只剩下两个点,退出,否则执行2。
2.找到树中编号最小的节点,将与它相连的那个点的编号加入Prufer序列的末尾,并将这个叶子删除。返回1。
显然,每棵树都唯一对应一个Prufer序列,而每个Prufer序列也唯一对应一棵树。可以通过一下流程得到这棵树。
1.令A={1,2,...,n},不断重复2直到Prufer序列为空。
2.找到A中最小的不在Prufer序列中的点,将其与Prufer序列首元素连边,然后同时删除这个点与序列首元素。
3.此时A中还剩下两个点,将这两个点连边。
根据以上流程,不难发现:若点i在树中的度数为a[i],则它在Prufer序列中会出现a[i]-1次。
Cayley's Formula
Prufer序列中的每个元素都可以从1取到n,且每种方案会唯一对应一棵带标号无根树。
所以,由于Prufer序列共有$n^{n-2}$个,n个点的带标号无根树就有$n^{n-2}$种。
拓展:
1.显然,n个点的带标号有根树有$n^{n-2}$种。
2.当树中每个点的度数$a_i$都已经确定后,由Prufer序列得,满足条件的树共有$\frac{(n-2)!}{\prod a_i!}$种。
例题:BZOJ1005,BZOJ1211,BZOJ1430
Generalized Cayley's Formula
已知n,k,求f(n,m)表示n个点组成的共有m棵树的森林,且1,2,...,m分别属于不同的树,的方案数。
先给出结论:$f(n,m)=m\cdot n^{n-m-1}$。
(显然可以发现$f(n,1)=n^{n-2}$)
证明:
显然,$f(1,1)=0$,$f(n,0)=0(n\geq 1)$。
数学归纳,假设对于所有$i<n$的$f(i,j)$都已证明。
考虑1号点属于的那棵树,枚举1号点的度数i,则删除后这张图会变成n-1个点,m+i-1棵树。
$f(n,m)=\sum\limits_{i=0}^{n-m}\binom{n-m}{i}f(n-1,m+i-1)$
将原式代入,有$f(n,m)=\sum\limits_{i=0}^{n-m}\binom{n-m}{i}(m+i-1)(n-1)^{n-m-i-1}=mn^{n-m-1}$
命题得证。
拓展:
显然n个点组成有根树森林的方案为$\sum\limits_{k=1}^{n}n^{n-k-1}\times k\times \binom{n}{k}$
应用:CF1109D
给定n,m,a,b,求有多少个n个点的带标号无根树,满足所有边权在[1,m]中,且a到b的简单路径长度为m。
显然枚举a,b中的边数,那么a,b中间的点有$P_{n-2}^{i-1}$种方案,这中间i条边的边权共有$C_{m-1}^{i-1}$种方案,其余边权有$m^{n-i-1}$种方案,而剩下的就是n个点组成i+1棵树,其中在a,b简单路径上的i+1个点分别属于其中一棵树的方案数,也就是$f(n,i+1)=(i+1)n^{n-i-2}$。
定理拓展:
n个带权的点,定义每条边的权值为相连的两个点的权值之积,定义一棵树的权值是所有边的权值之积,求所有树的权值和。
相当于每棵树中每个点的权值的度数次方的和。考虑Prufer序列,每个点都恰出现度数-1次。于是根据乘法分配律,答案为(所有点权值之积)*(所有点权值之和)^(n-2)。
这个推论包含了上面所有定理。当所有点权值取1时,就是Cayley's Formula。当将点1~m缩成一个权值为m的点时,就是Generalized Cayley's Formula。
以上所有似乎都可以用Matrix Tree那一套理论通过化简行列式得到。
Prufer codes与Generalized Cayley's Formula的更多相关文章
- Prufer codes与Generalized Cayley's Formula学习笔记
\(Prufer\)序列 在一棵\(n\)个点带标号无根树里,我们定义这棵树的\(Prufer\)序列为执行以下操作后得到的序列 1.若当前树中只剩下两个节点,退出,否则执行\(2\) 2.令\(u\ ...
- Codeforces 1109D: generalizations of Cayley's formula证明
做这题的时候发现题解里有提到\(generalizations\ of\ Cayley's\ formula\)的,当场懵逼,Wikipedia里也就带到了一下,没有解释怎么来的,然后下面贴了篇论文. ...
- CF1109DSasha and Interesting Fact from Graph Theory(数数)
题面 传送门 前置芝士 Prufer codes与Generalized Cayley's Formula 题解 不行了脑子已经咕咕了连这么简单的数数题都不会了-- 首先这两个特殊点到底是啥并没有影响 ...
- Codeforces Round #539 div2
Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...
- prufer编码 cayley定理
背景(在codeforces 917D 报废后,看题解时听闻了这两个玩意儿.实际上917D与之“木有关西”,也可以认为是利用了prufer的一些思路.) 一棵标号树的Pufer编码规则如下:找到标号最 ...
- 图论:Prufer编码-Cayley定理
BZOJ1430:运用Cayley定理解决树的形态统计问题 由Prufer编码可以引申出来一个定理:Cayley 内容是不同的n结点标号的树的数量为n^(n-2) 换一种说法就是一棵无根树,当知道结点 ...
- 树的计数 Prufer序列+Cayley公式
先安利一发.让我秒懂.. 第一次讲这个是在寒假...然而当时秦神太巨了导致我这个蒟蒻自闭+颓废...早就忘了这个东西了... 结果今天老师留的题中有两道这种的:Luogu P4981 P4430 然后 ...
- luogu P4430 小猴打架(prufer编码与Cayley定理)
题意 n个点问有多少种有顺序的连接方法把这些点连成一棵树. (n<=106) 题解 了解有关prufer编码与Cayley定理的知识. 可知带标号的无根树有nn-2种.然后n-1条边有(n-1) ...
- 树的计数 + prufer序列与Cayley公式(转载)
原文出处:https://www.cnblogs.com/dirge/p/5503289.html 树的计数 + prufer序列与Cayley公式 学习笔记(转载) 首先是 Martrix67 的博 ...
随机推荐
- Spring 学习01
一.Spring概念 1 spring是开源的轻量级框架 2 spring核心主要两部分: (1)aop:面向切面编程,扩展功能不是修改源代码实现 (2)ioc:控制反转, - 比如有一个类,在类里面 ...
- JMS学习(四)-一个简单的聊天应用程序分析
一,介绍 本文介绍一个简单的聊天应用程序:生产者将消息发送到Topic上,然后由ActiveMQ将该消息Push给订阅了该Topic的消费者.示例程序来自于<JAVA 消息服务--第二版 Mar ...
- [iOS]深拷贝/浅拷贝区别
来点鸡汤: // 所谓拷贝 就是在原有的对象的基础上产生一个新的副本对象.有两点原则: // 1. 改变原对象的属性和行为不会影响副本对象 // 2. 改变副本对象的属性和行为不会影响原对象 ...
- html5 canvas 对角线渐变
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [整理]Error: [ngRepeat:dupes]的解决方法
sdfsadf <div class="pageNum middle PT10"> <a href="javascript:void(0);" ...
- 关于Asp.Net中的编程实现下载
经常在论坛看见有人求Asp.Net中编程实现下载的代码,有些还希望能断点续传什么的.其实问题的关键在于权限.B/S和C/S不仅仅是外观上的区别而已. 下载,顾名思义是客户端要下,所以载.你硬塞給人家那 ...
- 【转】XMPP_3920_最靠谱的中文翻译文档
CHENYILONG Blog XMPP_3920_最靠谱的中文翻译文档 Fullscreen © chenyilong. Powered by Postach.io Blog
- 五个案例让你明白GCD死锁(转)
转自:http://ios.jobbole.com/82622/ 死锁一直都是在使用多线程时,需要注意的一个问题.以前对同步.异步,串行.并行只有一个模糊的概念,想想也是时候整理一下了.再看看之前的博 ...
- Linux下内存泄漏工具【转】
转自:http://www.cnblogs.com/guochaoxxl/p/6970090.html 概述 内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况 ...
- 使用css实现移动端导航条滚动
<div class="tab"> <div class="table-item"> <span class="tab- ...