离散数学---树
目录
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次方个,这个也显示出来我们使用哈夫曼编码的优势;
通过上面的例子,我们也可以知道对于这个不同的数字,在于我们的日常使用中的频率是不一样的,在这个最优二叉树里面,我们经常使用的数字靠近树根,而且这个前缀码简洁,那些不是很经常使用的数字就远离这个树根,而且对应的前缀码就会比较复杂,这个也是变长编码的一大特点。
相关文章:
离散数学---树
目录 1.基本概念及其相关运用 2.生成树 3.有向树 4.最优树 5.前缀码 1.基本概念及其相关运用 (1)无向树:连通而且没有回路的无向图就是无向树; 森林就是有多个连通分支,每个连通分支都是树的无连通的无向图&…...
【栈】1106. 解析布尔表达式
本文涉及知识点 栈 LeetCode 1106. 解析布尔表达式 布尔表达式 是计算结果不是 true 就是 false 的表达式。有效的表达式需遵循以下约定: ‘t’,运算结果为 true ‘f’,运算结果为 false ‘!(subExpr)’,运算过程为对内部表达式…...
u盘内容无故消失了是什么原因?u盘部分内容无故消失了怎么恢复
在数字化时代,U盘作为便携存储设备,承载着许多重要的数据。然而,有时我们可能会遭遇U盘部分内容无故消失的情况,这无疑给我们的工作和生活带来了不小的困扰。本文将为您解析U盘内容消失的可能原因,并分享几招实用的数据…...
glm-4v-9b 部署
glm-4v-9b 模型文件地址 GLM-4 仓库文件地址 官方测试 硬件配置和系统要求 官方测试硬件信息: OS: Ubuntu 22.04Memory: 512G…...
Ansible——unarchive模块
目录 参数总结 基础语法 常见的命令行示例 示例1:解压缩文件到指定目录 示例2:解压缩文件并设置权限 示例3:远程URL解压缩 示例4:强制覆盖现有文件 具体步骤和示例 示例5:只要文件解压后,如果存在…...
Ansible——get_url模块
目录 主要用途 参数总结 基本语法示例 使用示例 示例1:下载文件 示例2:使用校验和验证文件 示例3:使用 HTTP 基本认证 示例4:通过代理服务器下载文件 示例5:设置文件权限、所有者和组 示例6:强制…...
macbook本地部署 pyhive环境连接 hive用例
前言 公司的测试和生产环境中尚未提供基于Hive的客户端。若希望尝试操作Hive表,目前一个可行的方案是使用Python语言,通过借助pyhive库,您可以对Hive表进行各种操作。以下是一些示例记录供您参考。 一、pyhive是什么? PyHive是一…...
物理安全防护如何创新强化信息安全体系?
物理安全防护是信息安全体系的重要组成部分,它通过保护实体设施、设备和介质等,防止未授权访问、破坏、盗窃等行为,从而为信息系统提供基础的安全保障。要创新强化信息安全体系中的物理安全防护,可以从以下几个方面着手࿱…...
【JAVASE】日期与时间类(上)
一:概述 从JAVA SE 8开始提供了java.time包,该包中有专门处理日期和时间的类。 LocalDate LocalDateTime 和LocalTime 类的对象封装和日期、时间有关的数据,这三个类都是final类,而且不提供修改数据的方法,即这…...
如果需要精确的答案,请避免使用float和double
float和double主要为了科学计算和工程计算而设计,执行二进制浮点运算,这是为了在广泛的数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不适合用于需要精确结果的场合,尤其是…...
大模型,也在卷价格
“百模大战”已从算力战、规模战蔓延到了价格战。 5月15日,字节跳动宣布豆包主力模型(小于等于32K)在企业市场的定价只有0.0008元/千Tokens,0.8厘就能处理1500多个汉字,比行业便宜99.3%;5月21日࿰…...
开关电源中电感设计
开关电源设计中电感 只有充分理解电感在DC/DC电路中发挥的作用,才能更优的设计DC/DC电路。本文还包括对同步DC/DC及异步DC/DC概念的解释。 在开关电源的设计中电感的设计为工程师带来的许多的挑战。工程师不仅要选择电感值,还要考虑电感可承受的电流,绕线电阻,机械尺寸等…...
机器视觉——硬件常用基础知识
光源 机器视觉中光源的作用 1)强化特征,弱化背景 2)光源打得好,图好了,后期算法更简化 3)图好了,测试速度更高 各种光源的综合性能对比及为啥使用LED灯 光的颜色的选择 白色光:通常用…...
宝塔 php7.4 安装SQLserver扩展
一、加入微软源 curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssqlrelease.repo二、安装odbc驱动程序 yum install msodbcsql mssql-tools unixODBC-devel 三、安装php7.4对应的pdo_sqlsrv扩展包 # 下载 wget http://pecl.php.net/…...
C++中的常见I/O方式
目录 摘要 1. 标准输入输出(Standard I/O) 2. 文件输入输出(File I/O) 3. 字符串流(String Stream) 4. 低级文件I/O(Low-level File I/O) 5. 内存映射文件(Memory-Mapped File I/O) 6. 网络I/O(Network I/O) 服务器端 客户端 摘要 C++中的输入输出操作(…...
Java Web学习笔记23——Vue项目简介
Vue项目简介: Vue项目-创建: 命令行:vue create vue-project01 图形化界面:vue ui 在命令行中切换到项目文件夹中,然后执行vue ui命令。 只需要路由功能。这个路由功能,开始不是很理解。 创建项目部保存…...
[UE 虚幻引擎] DTLoadFbx 运行时加载FBX本地模型插件说明
本插件可以在打包后运行时动态加载FBX模型。 新建一个Actor 并添加一个 DT Runtime Fbx Component。 然后直接调用组件的函数 LoadFile 加载显示模型(注:不支持模型动画) FilePath : 加载模型的绝对路径。 Create Collision : 是否创建碰撞…...
mysql log_bin
MySQL 开启配置binlog以及通过binlog恢复数据 https://blog.csdn.net/weixin_44606481/article/details/133344235 CentoS7 安装篇十二:mysql主从搭建(xtrackbackup不停机搭建) https://blog.csdn.net/chengxuyuanjava123/article/details/1…...
数据整理操作及众所周知【数据分析】
各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…...
maven的install不报错但deploy到nexus报400错误
一.情况描述 mvn install工程正常构建完成,但我mvn deploy报400错误,局域网maven组件仓库nexus也是正常的,deploy的帐号密码都是对的。报错信息如下: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plu…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
