首页 > 其他分享 >浅谈 $prufer$ 序列

浅谈 $prufer$ 序列

时间:2024-10-05 13:11:00浏览次数:9  
标签:浅谈 cayley 定理 最小 序列 prufer 节点

\(purfer\) 序列,是为了证明 \(cayley\) 定理。具体来说,是将一个树映射到一个数组上,在数组上可以使得很多东西更加清晰的展示。

构造 \(prufer\) 序列

\(prufer\) 是将一个大小为 \(n\) 的树映射到长度 \(n - 2\) 的序列上。从一个无根树开始,我们将树入度为 \(1\) 的点找出来,及叶子节点。 将编号最小的节点的链接的点加入 \(prufer\) 序列。再将这个点删除。重复操作直到只有两个节点。

\(prufer\) 序列还原树

\(prufer\) 序列中存在的树一定不是叶子节点,由于我们是先将最小的删除所以我们确定了当前不在 \(prufer\) 序列中的最小点的父亲。再将当前点去掉,重新求最小的不在 \(prufer\) 序列树,重复操作就可以了。

\(prufer\) 带来了什么

\(prufer\) 序列是最短的描述树的方式。首先,\(prufer\) 的最小先出的思想完善了每个树的父亲。最后可以留下两个点是因为根节点没有父亲,以及另一个非根节点的父亲确定,如果有 \(3\) 个节点很容易证明无法确定。

这样我们得到了最小的表示树的序列。同时,以为 \(prufer\) 描述了根节点和没节点的父亲,使得树也确定了下来。

\(prufer\) 不同,构造出来的树也不同,也就十分显然了。

\(cayley\) 定理

\(cayley\) 定理表达了一个完全图的生成树的个数有 \(n ^{n - 2}\) 个,我们很容易通过 \(prufer\) 序列的唯一性。把 \(cayley\) 定理抽象成长度为 \(n - 2\) 的序列,序列每个元素大小为正整数且小于等于 \(n\) 的序列有多少个。我们由小学学习的方式都可以得到有 \(n ^{n - 2}\) 个。这证明了cayley 定理。

\(prufer\)序列应用

笔者学习 \(prufer\) 的初衷是构造一个深度更深的树。

我们直接随机一个 \(prufer\) 序列进行试验。

可以神奇的发现:构造出来的序列还原回去的树高来到了 \(\sqrt{n}\) 的大小。比直接随机的树更加优秀。

但是,这还不是上线,因为 \(prufer\) 序列的一一对应,我们任意得到的序列都可以构造出一个树。深度和 \(prufer\) 序列的元素个数有关,所有我们甚至可以钦定 \(prufer\) 元素个数,再重构。

标签:浅谈,cayley,定理,最小,序列,prufer,节点
From: https://www.cnblogs.com/sirkey2119/p/18447777

相关文章

  • 浅谈IT行业的未来发展趋势
    浅谈IT行业的未来发展趋势随着科技的不断进步,IT行业的发展进入了一个崭新的阶段。今天,我们就来浅谈一下IT行业的未来发展趋势,探讨那些可能会改变我们生活的技术。1.人工智能与自动化人工智能(AI)和自动化技术已经在各个领域崭露头角。未来,随着AI算法的进一步优化和硬件性......
  • 【题解】B - 三元上升子序列
    目录题目内容DescriptionInputOutput数据规模与约定思路代码题目内容DescriptionErwin最近对一种叫thair的东西巨感兴趣。。。在含有\(n\)个整数的序列\(a_1,a_2,\ldots,a_n\)中,三个数被称作thair当且仅当\(i\ltj\ltk\)且\(a_i\lta_j\lta_k\)。求一个序列中thair......
  • java 反序列化 cc6 复现
    复现环境:common-collections版本<=3.2.1,java版本随意.我们观察java高于8u71的版本会发现sun.reflect.annotation.AnnotationInvocationHandler类被进行了修改,其中的readObject不去调用setvalue方法,而是创建了一个LinkedHashMapvar7去重新进行操作,使我们之前的利用链中断.p......
  • Leetcode 1498. 满足条件的子序列数目
    1.题目基本信息1.1.题目描述给你一个整数数组nums和一个整数target。请你统计并返回nums中能满足其最小元素与最大元素的和小于或等于target的非空子序列的数目。由于答案可能很大,请将结果对109+7取余后返回。1.2.题目地址https://leetcode.cn/problems/num......
  • prufer序列
    ps.之前刷题太快,现在考试碰到这种已经忘记了。定义:一种将带编号的树用唯一的一个整数序列表示的方法,即可以把一颗带标号的n个节点的树序列化为一个长度为n−2的唯一的序列。也就相当于完全图的生成树与数列之间的双射。构造方法:每次选择一个编号最小的叶节点并删掉它,并把其......
  • 全网最适合入门的面向对象编程教程:55 Python字符串与序列化-字节序列类型和可变字节字
    全网最适合入门的面向对象编程教程:55Python字符串与序列化-字节序列类型和可变字节字符串摘要:在Python中,字符编码是将字符映射为字节的过程,而字节序列(bytes)则是存储这些字节的实际数据结构,字节序列和可变字节字符串的主要区别在于其可变性和用途,bytearray是可变的字节序列......
  • VisionTS:基于时间序列的图形构建高性能时间序列预测模型,利用图像信息进行时间序列预测
    构建预训练时间序列模型时面临的主要挑战是什么?获取高质量、多样化的时间序列数据。目前构建基础预测模型主要有两种方法:迁移学习LLM:通过针对时间序列任务定制的微调或分词策略,重新利用预训练的大型语言模型(LLM),如GPT-4或Llama。从零训练:构建大规模时间序列数据集,并从头开始预训......
  • 代码随想录算法训练营 | 贪心算法:455.分发饼干,376. 摆动序列,53. 最大子序和
    455.分发饼干题目链接:455.分发饼干文档讲解︰代码随想录(programmercarl.com)视频讲解︰分发饼干日期:2024-10-02想法:大饼干喂大孩子Java代码如下:classSolution{publicintfindContentChildren(int[]g,int[]s){Arrays.sort(g);Arrays.sort(s);......
  • 代码随想录算法训练营 | 491.递增子序列,46.全排列,47.全排列 II
    491.递增子序列题目链接:491.递增子序列文档讲解︰代码随想录(programmercarl.com)视频讲解︰491.递增子序列日期:2024-10-02想法:根据题目nums[i]的范围在-100到100,可以用数组做记录是否同一层使用过Java代码如下:classSolution{List<Integer>path=newArrayList<>();......
  • 【Ubuntu】PlantUML工具 | 安装 | 语法 | 使用工具画序列图
    ......