首页 > 其他分享 >Prufer序列

Prufer序列

时间:2023-10-01 16:46:07浏览次数:39  
标签:删除 还原 序列 引理 Prufer 节点

Prufer序列的转化方法见这篇博客(这篇文章里这道模板题的高精处理方法也看看)

这里主要是对这篇博客的一些说明。

首先:为什么Prufer序列与无根树一一对应?

我们要先知道两个引理:出现在Prufer序列中的点一定是原无根树的非叶子节点,没有出现在Prufer序列中的一定是原无根树的叶子节点

第一个引理比较简单,因为他根本没有儿子节点让他被添加到Prufer序列中

第二个引理,我们用反证。设某个原无根树的非叶子节点没有被添加到Prufer序列中。

如果这个节点已经被删除了(不是最后剩下的那两个节点中的其中一个),那么在这个节点被删除的时候,它一定只剩了一条边。由于它原来不是叶子节点,所以他最开始的边是多于一条边的,那么这些边任何一个被删除的时候都会把这个点添加到Prufer序列中,矛盾

如果这个节点是最后剩下的两个中的其中一个,那么这个点最后只剩下了一条边,同理,他在删除任何一条边的时候都会被添加到Prufer序列中,矛盾

综上,两个引理得证

那么我们在还原的时候,就可以按照这篇博客里面说的去还原了,肯定就是对的了

注意在还原的过程中,由于每个点只会被删除一次,所以如果某个点在经过这次还原后已经不再Prufer序列里面了,一定要在非Prufer序列集合里面增加这个点。因为对此时剩下的图来说,这个点已经是叶子节点了

那么我随便写一个Prufer序列一定都是合法的吗?

答案是肯定的。因为Prufer序列的长度是n-2,假设我们已经还原了k个节点,那么按照博客里面的方法,至多还有n-k个节点没有被选择,然而此时Prufer序列里面只有n-2-k个节点,即没有被选择的节点至少还有两个可以选择,所以在任意时刻都不会找不到供选择的节点

标签:删除,还原,序列,引理,Prufer,节点
From: https://www.cnblogs.com/dingxingdi/p/17738964.html

相关文章

  • C 序列(seq)
    Day\(|\Sigma|\)。模拟赛里面的题,早上降智没调出来。题意大概就是求区间所有子区间的只出现在子区间内的数的最大值的和。记录一个数\(i\)的最左出现位置\(l_i\)和最右出现位置\(r_i\),一个数只在\([L,R]\)中出现当且仅当\([l_i,r_i]\subseteq[L,R]\)。考虑扫描线,统一......
  • 给PG数据库已有表,已存在列添加序列并设置序列当前值为自增列的最大值
    CREATEORREPLACEFUNCTION"public"."add_sequence_to_table"("p_table_name"text,"p_column_name"text)RETURNS"pg_catalog"."void"AS$BODY$DECLAREmax_valueINTEGER;sequence_nametext;B......
  • Leetcode 1143. 最长公共子序列
    https://leetcode.cn/problems/longest-common-subsequence/description/?envType=study-plan-v2&envId=top-100-liked给定两个字符串text1和text2,返回这两个字符串的最长公共子序列的长度。如果不存在公共子序列,返回0。一个字符串的子序列是指这样一个新的字符串:它......
  • 《Java编程思想第四版》学习笔记32--关于static字段的序列化
    //:CADState.java//Savingandrestoringthestateofa//pretendCADsystem.importjava.io.*;importjava.util.*;abstractclassShapeimplementsSerializable{publicstaticfinalintRED=1,BLUE=2,GREEN=3;privateintxPos,yPos,dimension;p......
  • 最大上升子序列和
    题目概述:给定一个序列,求解该序列的最大上升子序列的和解题思路:我们在LIS的集合定义为:以i结尾的上升子序列的最大长度,那其实我们只需要将集合定义改为:以i结尾的上升子序列的最大和即可。#include<iostream>#include<algorithm>#include<cstring>#include<set>#include<v......
  • R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证
    全文链接:http://tecdat.cn/?p=31162最近我们被客户要求撰写关于SV模型的研究报告,包括一些图形和统计输出。本文做SV模型,选取马尔可夫蒙特卡罗法(MCMC)、正则化广义矩估计法和准最大似然估计法估计。模拟SV模型的估计方法:  sim<-svsim(1000,mu=-9,phi=0.97,sigma......
  • R语言Copula对债券时间序列数据的流动性风险进行度量|附代码数据
    全文链接:http://tecdat.cn/?p=32707原文出处:拓端数据部落公众号在金融市场中,债券的流动性风险一直是一个备受关注的问题。流动性风险是指在市场上,债券价格的波动程度受到市场流动性的影响,这种影响可能导致债券价格的剧烈波动,从而影响投资者的收益。因此,对于债券流动性风险的度量......
  • Java序列serialVersionUID字段
    Spring框架默认使用Java的序列化机制,也就是说,Spring默认使用Java的内置序列化器。Java的序列化机制中,每个序列化的对象都有一个serialVersionUID字段,这个字段用来标识序列化对象的版本。Java的序列化机制是这样的:当一个对象被序列化时,Java会先检查对象的类是否有一个名为"serialV......
  • 《prufer 序列》小记
    今天模拟赛被卡科技了,学一下这个东西,之前也看到很多次,只不过一直都没学。算法简介这是一种可以将带标号的树,转成唯一的整数序列表示的方法。而在“数树”题中也有大用。算法流程大概是将带标号的\(n\)个节点的数用\([1,n]\)中的\(n-2\)个整数来表示一个树。也可以理解成......
  • 【UVA 536】Tree Recovery 题解(根据遍历序列还原二叉树)
    小瓦伦丁非常喜欢玩二叉树。她最喜欢的游戏是随机构建查找节点中带有大写字母的二叉树。这是她创作的一个例子:为了给后代记录她的树,她为每棵树写下了两个字符串:预订单遍历(根、左子树、右子树)和有序遍历(左子树、根、右子树。对于上面绘制的树,预序遍历是DBACEGF,有序遍历是ABCDEFG......