离散数学---树

2024-06-08 10: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.chinasem.cn/article/1041956

相关文章

离散数学------关系理论

一、序偶和笛卡尔积 序偶 两个序偶如果相等,那么他们相对应的第一第二元素分别相等 笛卡尔积 笛卡尔积是集合之间的一种运算,运算的结果是个序偶,第一元素来自前面的集合,第二元素来自后面的集合。  两集合进行笛卡尔积运算后集合里的元素个数=两集合元素个数的乘积 二、关系 定义 每种关系都可以用序偶表示,关系是两集合笛卡尔积的子集。 表示方式 题型一:求两

离散数学中的逻辑应用(2)

目录 引言 1. 逻辑在决策分析中的应用 2. 逻辑在算法设计中的应用 3. 逻辑在数学证明中的应用 4. 逻辑在编程中的应用 5. 逻辑应用工具 6. 总结 引言 在上一篇文章中,我们介绍了逻辑的基本概念和运算。本篇文章将深入探讨如何将逻辑应用于实际问题中,如问题求解、决策分析和数学证明。通过具体的例子和推理步骤,你将能够理解逻辑在离散数学及其他领域中的广泛应用。

离散数学中的逻辑基础(1)

目录 引言 1. 命题及其逻辑运算 2. 逻辑等价与范式 3. 逻辑推理规则 4. 逻辑问题练习 5. 总结 引言 逻辑是离散数学的核心概念之一,它用于精确描述数学命题并分析其关系。逻辑不仅是数学证明的基础,也是计算机科学中算法设计和编程的基石。本篇文章将详细介绍逻辑学中的命题、逻辑运算和推理规则,帮助读者建立扎实的逻辑基础。 1. 命题及其逻辑运算 1.1 命题的定义

组合数学、圆排列、离散数学多重集合笔记

自用 如果能帮到您,那也值得高兴 知识点 离散数学经典题目 多重集合组合 补充容斥原理公式 隔板法题目 全排列题目:

离散数学-代数系统证明题归类

什么是独异点?  运算° 在B上封闭,运算° 可结合,且存在幺元。 学会合理套用题目公式+结合律       零元? 群中不可能有零元 几个结论要熟记: 1.当群的阶为1时,它的唯一元素视作幺元e 2.若群的阶大于1时,且同时存在幺元和零元的话,幺元不等于零元 纯个人理解: 因为零元和什么相乘,依旧是零元。 而零元又不等于幺元。 我们知道,一个

离散数学答疑 5

知识点:单侧连通,强连通,弱连通     前缀码:比如001和00101就不是。因为后者的前三位和前者的重复了  有向图的邻接矩阵求法:横着看 数据结构21-4分钟搞定邻接矩阵_哔哩哔哩_bilibili    可达矩阵是包含自反性的。可达矩阵是一个自反矩阵,这意味着对角线上的元素都是1,表示每个节点到自身是可达的。在图论中,可达矩阵用来描述有向图中所

离散数学答疑 3

~A:A的补集 有时候空集是元素,有时候就是纯粹的空集 A-B的定义:   笛卡尔积:  求等价关系:先求划分再一一列举  不同划分:分几块。一块:两块:三块:分别计算  Ix是X上的恒等关系指包含:<a,a><b,b><c,c> Rc:逆矩阵 比如:<2,1>就变成了<1,2> 交:合取 并:析取 蓝色这里,是指把A补全了,让他变成一个等价关系的东西

破解凯撒密码(离散数学)

首先来看以下恺撒密码。 离散数学的一道作业题。 凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。例如,如果密匙是把明文字母的位数向后移动三位,那么明文字母B就变成了密文的E,依次类推,X将变成A,Y变成B,Z变成C,由此可见,位数就是凯撒密码加密和解密的密钥。 题目如下: It is known t

C++实现离散数学中求合式表达式

在输入任何一个合式公式后,该段程序就会自动检测里面的命题变元,并要求为之输入真假值, 在输入完毕后就会得出该合式公式的真假值,运用的是递归的思想。 ----------YYC #include<iostream> #include<string> #include<map> using namespace std; /* *说明: *     用!表示 否定

C++实现离散数学“五个房子,不同颜色,不同国家...”问题

有五座房子,每座房子的颜色不同,里面分别住着不同国家的人,每个人都有自己养的不同宠物、喜欢喝的不同饮料、抽的不同牌子的烟。现已知以下一些信息: 1>英国人住在红色的房子里; 2>西班牙人养了一条狗; 3>挪威人住在左边的第一个房子里; 4>黄房子里的人喜欢抽kools牌的香烟; 5>抽chesterfields牌香烟的人与养狐狸的人是邻居;