离散数学---树

news2024/11/23 2:51:44

目录

1.基本概念及其相关运用

2.生成树

3.有向树

4.最优树

5.前缀码


1.基本概念及其相关运用

(1)无向树:连通而且没有回路的无向图就是无向树;

森林就是有多个连通分支,每个连通分支都是树的无连通的无向图;

树叶就是这个无向图里面的度数是1的节点,分支点就是度数大于等于2的节点,简单的讲就是没有其他的分支的顶点就叫做树叶,还可以从这个地方继续细分的顶点就叫做分支点;

(2)无向树的特点

无向树的三个特点,边数等于顶点数减去1,连通而且没有回路;

(3)随堂测验:对于无向树的进一步理解

无向树的任意的一条边都是桥(就是割边);任意的两个不同的节点之间只有一条路径可以抵达(因为无向树里面要求是没有回路,如果有第二条路径可以抵达不就是构成回路了,这样的话就不满足这个无向树的定义了),无向树就是一个简单图,不相邻的节点之间添加一条边就会形成初级的回路;

 实际问题:求解这个树叶的数量,我们需要用到握手定理,就是度数和等于边数的两倍,边的数量根据  边数等于顶点数减去1  这个等量关系得出,最后根据握手定理进行求解,反正就是要用到这个无向树的性质和握手定理求解树叶的个数;

(4)实战演练

这个试画出六阶的无向树,这个六阶的表示是这个树有6个顶点,根据这个定理,无向树里面的边数等于顶点数减去1,说明这个无向树是有5条边,我们在根据这个握手定理,就可以的出来这个 无向树的度数和就是边数的两倍,也就是10,这个时候我们再进行列举所有的可能会出现的情况,因为是6个顶点,最大的数字度数就只能是5,否则就会出现重边和环,不满足这个无向树的定义了,其中的第四种情况是可以画出来两种可能的情况的;

这个就是利用握手定理,度数和等于边数的两倍,边数等于顶点数减去1,利用这两个等量关系就可以基本上解决这个无向树里面的所有的相关问题;在这个等量关系里面,边数是发挥了桥梁的作用,因为这个边数是顶点数减去1,边数的两倍就是度数和,边数这个变量把握手定理和无向树里面的定理给串联了起来;

(5)综合练习

树都是二部图,这个是没有问题的,因为这个二部图的判定定理就是没有奇数圈,而我们的数是不会有回路的,所以肯定就没有圈,肯定是满足二部图的定义的;

哈密顿图的定义就是经过所有的节点返回,判定定理就是这个没有奇度数的顶点,这个时候我们的数如果有树叶的话,肯定是有奇度数的顶点的,不一定是欧拉图;树里面的平凡树是哈密顿图,也是欧拉图,其他的数都不是哈密顿图和欧拉图;

平面图的要求就是不交叉,这个树肯定不会交叉,我们正常情况下去画一棵树都是不会交叉的,Krs就是一个二部图,rs分别表示的是两个不同的集合里面的节点的个数,k10就是一个数,只有一片树叶的树,k11和k12都是树,所以这个krs有的是树,有的不是树;

2.生成树

(1)生成树和余树

对于右边的一个平面图,包括这个红色的和黑色的,如果这个平面图的生成子图是一棵树,我们就把这个生成子图叫做这个平面图的生成树,生成树里面涉及到这个平面图里面的边我们叫做数值,没有包括到生成树里面的边我们叫做弦,这些弦组成的图形叫做余树;

什么是生成子图,首先这个生成子图肯定是一个平面图的子图,这个是很明显的,其次生成子图还需要满足这个生成子图需要包括这个原来的平面图上面的所有的顶点,而且没有重边,没有环;实际上对于一个图而言,是可以有很多个生成子图的,所以一个连通图可以有很多个不同的生成树;

虽然这个生成子图剩下的弦的集合叫做余树,但是这个并不是真正的树,因为显然这个余树是不联通的,不符合树的定义; 

(2)最小生成树

我们上面介绍的生成树是可能有多个的,这些情况里面的这个权重最小的就是最小生成树,最小生成树同样也不是唯一的;

这个求解最小生成树的算法有这个避圈法,这个方法的主要逻辑就是躲避开所有的圈,按照从小到大的权重进行相应的排列,不能形成圈,满足这个树的定义;

3.有向树

(1)有向树就是指那些不关注方向的情况下,这个是一棵树,我们就可以称之为有向树;

有向树里面有这个根数(只有一个入度是0的顶点,其余的顶点的入度是1),这个入度是0的顶点我们称之为树根;

这个树根就是这个图里面的最上面的那个点,出度是0的节点我们称之为树叶,出度大于等于1 的节点我们叫做内点,内点和树根就组成了这个分支点,这个树高和树的层数也是我们关注的,这个定义和我们在数据结构里面的定义是有所区别的,我们这里定义的树高指的就是从根树开始经过的边的个数 ,所以这个图里面的红色节点的层数就是3,因为这个树根只需要经过三条边就可以到达这个节点的位置;

(2)根树的分类

(3)随堂演练

这个题目上面的五元正则树表示这个树如果有子节点那么就必须要有5个子节点,我们根据题目的要求画出这个正则树,分支点就是这个树根和内点的总称,这个图里面有1个树根,两个内点,所以这个分支点的个数就是3个;

 (4)根树的相关证明

这个二元正则树就是如果有节点,需要有两个节点,第一个证明就是用的握手定理和这个边数,树叶数和这个顶点数之间的转换,我们需要先画出来这个已知的图形,射出一个变量n表示这个树的顶点的数量,根据这个握手定理,树根的度是2,树叶的度是1,剩下的这个内点的个数就是n-1-t,其中这个里面1表示的就是树根,t就是这个树里面的树叶的数量,剩下的就是内点,一个内点的度是3,因此我们就可以根据这个度数等于边数的两倍列方程,m=n-1联立即可求解;

r元正则树其实是一样的逻辑,就是这个内点的度数是r+1,i-1求出来的就是这个内点的数量,第一个r表示的就是这个树根的度数,第三个t表示的就是所有的树叶的度数和;

我们通过这连个证明就可以发现,只要是相关的题目,必须同时拥有边数和顶点数这两个变量,第一个是给出来了边数,我们需要自己设一个变量n表示顶点数,第二个是给出了分支节点的个数,树叶的个数,实际上就是给出了所有的节点的个数,我们需要定义一个变量m表示边数;

4.最优树

(1)权重乘上对应的长度,求和就是该带权二叉树的权(这里的权重求和并不是这个树上面的所有节点,而是树叶节点),在所有的二叉树里面,权值最小的我们称之为最优二叉树;

(2)哈夫曼算法求解最优树问题

这个算法就是在原来的权重集合的基础上面,不断的更新这个权重,让这个最小的两个权重组成新的 权重集合,不断的更新这个分支节点和树叶,直到形成一个完整的树为止;

 (3)算法运用

这个题目就是哈弗曼编码的一个应用,题目上面给出的就是出现的权重 和对应的频率,我们就是根据这个频率的大小进行排序的,首先按照从小到大的顺序进行排列,选出来这个权重最小的59组成14,重新对于这个权重集合进行排序,再从这个剩下的5个权重里面选择最小的12和13相加得到25,再对于这个集合重新排列,接下来就是把这个14 16组成新的权重,依次进行下去,直到形成最终的最优树为止;

实际上我们可以发现这个最优树上面除了我们的权重之外,还有这个01这些标识,这个就是我们接下来要介绍的前缀码的知识;

5.前缀码

(1)相关定义

前缀码就是一个集合里面的某些元素是不是其他某个元素的前缀码,这个如果是的话,就会出现歧义的现象,因此这个我们把如果这个集合里面没有一个序列是另外的一个序列的前缀,我们就把这样的序列结合叫做前缀码; 

(2)前缀码的定理

这样我们学习了前缀码之后,就可以使用这个前缀码解决上面的问题了,这个01就是一种二叉的标识,我们根据这个就可以写出任意的二叉树的前缀码,同理,我们根据任意的一个前缀码都是可以画出这个与之对应的二叉树的;

(3)实际应用

 

 

 上面的这个就是一个实际的问题,通信里面的八进制的不同的数字的使用的次数是不一样的,这个是用我们使用哈夫曼算法对于这个问题求解他的最优树,他的百分比就可以理解为这个对应的权重,按照上面的方法不断地合并,并对于这个新的序列集合排序,得到了这个最优树,我们通过这个树叶节点的权重乘上对应的层数(从树根开始到这个节点的经过的边数)得到的就是285,平均下来的一个就是2.85,我们如果想要传输10的n次方数据,就需要二进制数字2.85*10的n次方个,但是使用等长码就需要3*10的n次方个,这个也显示出来我们使用哈夫曼编码的优势;

通过上面的例子,我们也可以知道对于这个不同的数字,在于我们的日常使用中的频率是不一样的,在这个最优二叉树里面,我们经常使用的数字靠近树根,而且这个前缀码简洁,那些不是很经常使用的数字就远离这个树根,而且对应的前缀码就会比较复杂,这个也是变长编码的一大特点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1801170.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【CVE-2024-4577】PHP CGI 远程代码执行漏洞

# 转载 本文出自:【CVE-2024-4577】PHP CGI 远程代码执行漏洞 - 极核GetShell (get-shell.com) # 漏洞描述 PHP 语言在设计时忽略Windows 作业系统内部对字元编码转换的Best-Fit特性,导致未认证的攻击者可透过特定的字元序列绕过旧有CVE-2012-1823的保…

【CSS】opacity 父元素设置透明度影响子元素显示效果解决方案

<div class"father"><div class"children"></div> </div>.father{background:#000000,opacity:0.6 } 给父元素设置透明度时&#xff0c;子元素显示效果会搜到父元素透明度的影响&#xff0c;如下图 解决方法&#xff1a; .fathe…

1867java银证转账系统系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java银证转账系统系统是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助采用了java设计&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&a…

本地运行feishu-chatgpt项目结合内网穿透实现无公网IP远程访问

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 本文主要介绍如何在飞书中创建chatGPT机器人并且结合内网穿透工具…

【静夜思】小时候的回忆

为什么大家都会对自己童年时期的评价很高&#xff1f;甚至是一些模糊都快到想不起来的记忆&#xff1f; 博主是00后&#xff0c;那时候小学的我非常喜欢看动画片&#xff0c;像经典的喜羊羊、熊出没、胡图图等等&#xff0c;太多了。等上了高中后&#xff0c;博主也成为了一名…

西门子学习笔记10 - MCGS和西门子1200进行通讯设置

1、博图软件的设置 1、修改PLC的ip地址为192.168.1.1 2、打开put&#xff0c;get通讯功能 3、设置通讯变量&#xff0c;可以是M区也可以是DB块的数据 2、MCGSE组态环境设置 1、新建项目&#xff0c;在设备窗口界面进入设备窗口 2、添加设备如下 3、双击进入配置界面 4、添加变…

[office] Excel教学:Excel通配符怎么用? #其他#职场发展

Excel教学&#xff1a;Excel通配符怎么用&#xff1f; 尽管Excel使用了很多年&#xff0c;但很多人都还是忽略了Excel通配符的存在&#xff0c;不知道通配符是什么&#xff0c;不知道如何使用它。今天我就完整地介绍一下通配符&#xff0c;让你彻底地认识通配符。 关于通配符…

kafka-集群-生产消费测试

文章目录 1、集群生产消费测试1.1、消费者消费消息1.2、生产者生产消息 1、集群生产消费测试 1.1、消费者消费消息 [rootlocalhost ~]# kafka-console-consumer.sh --bootstrap-server 192.168.74.148:9095,192.168.74.148:9096,192.168.74.148:9097 --topic my_topic11.2、生…

Gopherus工具的下载、使用

目录 概览 Gopherus工具的作用 Gopherus工具下载 Windows Linux Gopherus工具的使用帮助 Gopherus支持的Payload种类 总结 免责声明 本文所提供的文字和信息仅供学习和研究使用&#xff0c;请读者自觉遵守法律法规&#xff0c;不得利用本文所提供的信息从事任何违法活动…

亚马逊测评是什么?它为什么这么重要?测评又能够带来什么优势呢?

亚马逊对于所有的跨境电商行业的卖家来说都不陌生&#xff0c;随着越来越多的商家进入了这个市场&#xff0c;亚马逊的竞争力也在不断上升 在亚马逊这个平台&#xff0c;Review影响着亚马逊对卖家账号进行评定的各项因素&#xff0c;影响着产品Listing的曝光量和流量&#xff…

【机器学习】【深度学习】优化器(Optimizer)

一、概述 什么是优化器&#xff1f; 优化器(Optimizer)是深度学习中的一个核心的概念&#xff0c;用于更新神经网络的权重&#xff0c;以减少或最小化损失函数(loss function)的值。损失函数衡量了模型的预测值与真实值之间的差异&#xff0c;而优化器的目标是通过调整网络参…

Windows 11中删除分区的几种方法,总有一种适合你

序言 想从Windows 11 PC中删除一个分区,以便将空间重新分配给现有分区或创建一个新分区吗?我们将为你介绍删除Windows 11分区的多种方法。 删除Windows上的分区时会发生什么 删除分区时,Windows会擦除该分区的内容,并将该分区从电脑上的任何位置删除。你将丢失保存在该分…

Java进阶_重写与重载

重写(Override) 重写概念描述&#xff1a; 重写&#xff08;Override&#xff09;是指子类定义了一个与其父类中具有相同名称、参数列表和返回类型的方法&#xff0c;并且子类方法的实现覆盖了父类方法的实现。 即外壳不变&#xff0c;核心重写&#xff01; 重写的好处在于子类…

【Redis】构建强韧的远程Redis连接与端口保障机制完美指南

【Redis】构建强韧的远程Redis连接与端口保障机制完美指南 大家好 我是寸铁&#x1f44a; 总结了【Redis】构建强韧的远程Redis连接与端口保障机制完美指南✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 在当今的软件开发领域中&#xff0c;远程访问和操作数据存储是极为常见…

深入解析MongoDB中的锁机制

目录 一、MongoDB简介 二、MongoDB锁机制 三、锁的实践影响 3.1 高并发写入导致的写锁案例 一、MongoDB简介 MongoDB 作为一种非关系型文档数据库&#xff0c;在现代应用中扮演着极其重要的角色&#xff0c;尤其在处理大规模、高并发、灵活数据模型的场景下。MongoDB 具有如…

聆思CSK6大模型开发板英语评测类开源SDK详解

离线英文评测算法SDK 能力简介 CSK6 大模型开发套件可以对用户通过语音输入的英文单词进行精准识别&#xff0c;并对单词的发音、错读、漏读、多读等方面进行评估&#xff0c;进行音素级的识别&#xff0c;根据用户的发音给出相应的建议和纠正&#xff0c;帮助用户更好地掌握单…

【C++进阶】深入STL之list:模拟实现深入理解List与迭代器

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;初步了解 list &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀STL之list &#x1f4d2;1. list…

最大乘法算式-第13届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第80讲。 最大乘法算式&…

Vue CLI 环境变量使用指南

一、简介 Vue CLI 是一个强大的前端工程化工具&#xff0c;它提供了丰富的配置选项&#xff0c;包括环境变量的管理。环境变量允许开发者根据不同的运行环境&#xff08;如开发、测试和生产&#xff09;应用不同的配置&#xff0c;而无需更改代码。本文将详细介绍如何在 Vue C…

OlSoul系统调校程序v2024.06.05

软件介绍 OlSoul是一款能够适配用于Win各个系统的系统调校软件&#xff0c;OlSoul内置有众多调校功能可以直接使用&#xff0c;如有启用无线网络功能、启用打印机功能、系统快速休眠与休眠开关、快捷方式小箭头去除功能等&#xff0c;具体的调校功能多达几十项&#xff0c;可自…