首页 > 其他分享 >Prüfer 序列

Prüfer 序列

时间:2023-08-25 22:22:19浏览次数:28  
标签:Pr 度数 个点 根树 fer 序列

用于解决带标号的生成树计数问题,一般用于计数问题。

建立 Prüfer 序列

重复下列操作 \(n-2\) 次,得到长度为 \(n-2\) 的 Prüfer 序列。

  1. 取出编号最小的叶子节点 \(x\),将与 \(x\) 相连的节点加入 Prüfer 序列中。

  2. 将 \(x\) 和与 \(x\) 相连的边删去。

明显的,每个点在 Prüfer 序列里出现了 \(d_x-1\) 次(\(d_x\) 表示点 \(x\) 的度数,下同)。

Prüfer 序列重建树

因为每个点在 Prüfer 序列里出现了 \(d_x-1\) 次,所以我们可以得知每个点的度数(存在数列 \(a\) 中)。

重复下列操作 \(n-2\) 次:

  1. 选择点的度数为 \(1\) 的编号最小的点 \(x\),将 \(x\) 和 Prüfer 序列的第一个数 \(y\) 连接。
  2. \(d_x\gets d_x-1\),\(d_y\gets d_y-1\),将 Prüfer 序列的第一个数删去。

Prüfer 序列的性质以及定理

性质

一棵树和其 Prüfer 序列形成双射。

在构建 Prüfer 序列中,剩下的两个点其中一个必定为 \(n\)。

每个点在 Prüfer 序列里出现了 \(d_x-1\) 次。

定理

有标号无向完全图的不同生成树数

若该有标号无向完全图有 \(n\) 个点则该无向完全图的不同生成树数为 \(n^{n-2}\)。

Prüfer 序列的值域为 \([1,n]\),长度为 \(n-2\),所以一共有 \(n^{n-2}\) 个不同的 Prüfer 序列,也就是有 \(n^{n-2}\) 个不同的生成树。

\(n\) 个点的有根树计数

不同的有根树个数为 \(n^{n-1}\)。

有根树个数等于无根树个数乘以 \(n\),即 \(n^{n-1}\)。

\(n\) 个点的无根树计数(点的度数已知)

设 \(0!=1\),点 \(x\) 的度数为 \(d_x\)。则 Prüfer 序列中 \(x\) 出现 \(d_x-1\) 次。也就是可重元素的全排列个数问题。即 \(\frac{(n-2)!}{\prod_{i=1}^{n}(d_i-1)!}\)。

标签:Pr,度数,个点,根树,fer,序列
From: https://www.cnblogs.com/dadidididi/p/17658063.html

相关文章

  • spring项目启动报错的处理
    自学spring,之前工程突然间无法启动,控制台有如下错误: ErrorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith'debug'enabled.2023-08-2521:24:26.473ERROR1303---[main]o.s.b.d.LoggingFailureAnalysisRepo......
  • 安装celery后,提示WARNING/MainProcess...you should set broker_connection_retry_on_
    调用了Celery的config_from_object方法,并新建文件celery_config.py存放设置 在celery中设置broker_connection_retry_on_startup=True 效果没有提示了。 ......
  • Spring Boot 的约定优于配置
    3.首先,约定优于配置是一种软件设计的范式,它的核心思想是减少软件开发人员对于配置项的维护,从而让开发人员更加聚焦在业务逻辑上。4.SpringBoot就是约定优于配置这一理念下的产物,它类似于Spring框架下的一个脚手架,通过SpringBoot,我们可以快速开发基于Spring生态下的......
  • 剑指 Offer 59 - I. 滑动窗口的最大值
    题不难,但理解思路很重要。做法是单调队列。如果求滑动窗口的最大值,那么必须在单调队列保持严格单调递减(只能小于,小于等于也不行),为啥不行还不是很清楚。并且,单调队列一定存储的是数组的索引!!否则无法确定滑动窗口的开始位置以及开始时的队列存储最大值的情况。classSolution{......
  • 12.Acwing基础课第799题-简单-最长连续不重复子序列
    12.Acwing基础课第799题-简单-最长连续不重复子序列题目描述给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0∼1050∼105范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不......
  • Spring事务源码原理详解(保姆级)
    ✅本文案例源码,基于最新SpringBoot版本2.7.5,Spring版本是5.3.23回顾SpringAOP⭐SpringAOP是Spring中除了依赖注入外(DI)最为核心的功能,AOP即为面向切面编程。⭐SpringAOP通过CGlib和JDK动态代理等方式来实现运行期动态方法增强,目的是将与业务无关的代码单独抽离......
  • 关于SpringBoot中出现的循环依赖问题
    环境:SpringBoot2.7.8背景:在增加出库订单时需要对物品表的的数量进行修改因此我在OutboundController中创建了几个公共方法,并将其注入到Spring中,结果给我报了这一串错误。Description:Thedependenciesofsomeofthebeansintheapplicationcontextfo......
  • 剑指 Offer 48. 最长不含重复字符的子字符串(中等)
    题目:classSolution{//本题采用双指针滑动窗口的方法public:intlengthOfLongestSubstring(strings){map<char,int>m;//map里面存放的是**每个字符对应的下一个索引**intresult,l=0,r=0;while(r<s.size()){i......
  • 【MySQL 8.0】--通过组复制实现primary的switchover与failover
    [mysql@node01~]#uuidgen8d1945a5-5c74-4ba0-8240-e9d731110753[mysql@node01~]$vim/etc/my.cnfserver_id=101log_bin=mysql-binbinlog_cache_size=16Mmax_binlog_size=128M......
  • 原来你是这样的SpringBoot--Async异步任务
    本节我们一起学习一下SpringBoot中的异步调用,主要用于优化耗时较长的操作,提高系统性能和吞吐量。一、新建项目,启动异步调用首先给启动类增加注解@EnableAsync,支持异步调用@EnableAsync@SpringBootApplicationpublicclassCathySpringbootDemoApplication{publicstat......