离散数学 图论-树
离散数学中的图的树与生成树的计数

在离散数学中,图是一个由点和边组成的抽象数学模型。
其中,树是一种特殊的图,它是一个无环连通图。
在图论中,树扮演了重要的角色,它具有许多有趣的性质和应用。
而生成树则是树的一个特殊子集,它由给定图中的所有顶点和部分边构成。
本文将介绍图的树的基本概念,并探讨生成树的计数方法。
首先,让我们来看看图的树。
树是一种无环连通图,其中任意两个顶点之间存在唯一一条路径。
它具有以下性质:1.n个顶点的树有n-1条边。
这可以通过归纳法证明:当n=1时,结论成立;假设n=k时成立,那么n=k+1时,只需要添加一个顶点和一条边,即可构成n=k+1个顶点的树。
因此,结论成立。
2.连接树上任意两个顶点的边都是桥。
即如果一条边被删除,那么树就会变成两个或更多个不相连的子树。
3.树是一个高度平衡的结构。
对于一个n个顶点的树,任意两个叶子结点之间的路径长度至多相差1。
4.树的任意两个顶点之间有唯一一条路径,路径长度为顶点之间的边数。
接下来,让我们来讨论生成树的计数方法。
生成树是树的一个特殊子集,它是由给定图中的所有顶点和部分边构成。
生成树的计数在图论中具有重要的意义和应用。
对于一个具有n个顶点的连通图来说,其生成树的个数可以通过Cayley公式计算得到。
Cayley公式是由亚瑟·凯利于1889年提出的,它给出了完全图的生成树数目。
据此,我们可以得到生成树的计数公式为:T = n^(n-2),其中T表示生成树的个数。
此外,还有一种常见的计数方法是基于度数矩阵和邻接矩阵的矩阵树定理。
矩阵树定理由高斯于1847年提出,它提供了一种计算图的生成树个数的方法。
根据矩阵树定理,一个无向图G的生成树数目等于该图度数矩阵的任意一个(n-1)阶主子式的行列式的值。
其中,度数矩阵是一个对角矩阵,它的对角线上的元素为各个顶点的度数。
邻接矩阵则是一个关于顶点间连接关系的矩阵,其中1表示相邻顶点之间存在边,0表示不存在边。
除了数学方法,还存在一种基于图的遍历的计数方法,称为Kirchhoff矩阵树定理。
离散数学中的生成树与生成树计数

离散数学是计算机科学中的重要学科,其中生成树是一个重要的概念。
在图论中,生成树是一棵树,它包含了图中的所有顶点,并且是由图边组成的无环连通子图。
生成树在图论中有着重要的应用,特别是在计算机网络、运筹学和电路设计等领域。
生成树的概念与基础就是组成它的边是有限的,并且连接图中的所有顶点,但没有形成圈回到起点。
生成树通常是用来描述一个系统的最小连接方式。
生成树可以应用于计算机网络的设计中,用于构建最小生成树算法,以便在网络中选择最小的数据传输路径。
此外,在运筹学中,生成树被用于求解最小生成树问题,即为一个加权图找到一棵包含所有顶点的生成树,使得树中边的权重之和最小。
在离散数学中,生成树计数是一个重要的研究分支。
生成树计数是指对给定图,计算其生成树的数目。
生成树计数的问题可以通过使用基于图论和组合数学的算法来解决。
通常,生成树计数的问题与相应图的特性和性质密切相关。
对于一个简单图来说,如果图中任意两点之间至少有一条边,那么该图一定存在生成树。
对于有 n 个顶点的连通图来说,它的生成树数量可以通过Cayley公式计算得到。
Cayley公式表明,一个有 n 个标号的顶点的完全图的生成树数量等于 n^(n-2)。
而对于非完全图,生成树的计数问题则较为困难。
在处理非完全图的生成树计数问题时,可以使用基于递归和动态规划的算法来解决。
一个常见的方法是使用Kirchhoff矩阵树定理,它将生成树计数的问题转化为计算矩阵的行列式的问题。
Kirchhoff矩阵树定理提供了一种计算给定图的生成树数目的有效算法,通过计算图的基尔霍夫矢量的一个特征值,可以得到图的生成树的数目。
另一个常见的方法是使用Prufer编码,它是一个用于描述无环连通图的序列。
通过Prufer编码,我们可以将计算生成树的问题转化为计数树的问题。
通过对无向图进行Prufer编码,我们可以计算出生成树的数目,并且可以根据生成树的数目来确定该无向图的种类和特征。
离散数学图论(图、树)常考考点知识点总结

离散数学图论(图、树)常考考点知识点总结图的定义和表示1.图:一个图是一个序偶<V , E >,记为G =< V ,E >,其中:① V ={V1,V2,V3,…, Vn}是有限非空集合,Vi 称为结点,V 称为节点集② E 是有限集合,称为边集,E中的每个元素都有V中的结点对与之对应,称之为边③与边对应的结点对既可以是无序的,也可以是有序的表示方法集合表示法,邻接矩阵法2.邻接矩阵:零图的邻接矩阵全零图中不与任何结点相邻接的结点称为孤立结点,两个端点相同的边称为环或者自回路3.零图:仅有孤立节点组成的图4.平凡图:仅含一个节点的零图无向图和有向图5.无向图:每条边都是无向边的图有向图:每条边都是有向边的图6.多重图:含有平行边的图(无向图中,两结点之间包括结点自身之间的几条边;有向图中同方向的边)7.线图:非多重图8.重数:平行边的条数9..简单图:无环的线图10.子图,真子图,导出子图,生成子图,补图子图:边和结点都是原图的子集,则称该图为原图的子图真子图(该图为原图的子图,但是不跟原图相等)11.生成子图:顶点集跟原图相等,边集是原图的子集12.导出子图:顶点集是原图的子集,边集是由顶点集在原图中构成的所有边构成的图完全图(任何两个节点之间都有边)13.完全图:完全图的邻接矩阵主对角线的元素全为0,其余元素都是114.补图:完全图简单图15.自补图:G与G的补图同构,则称自补图16.正则图:无向图G=<V,E>,如果每个顶点的度数都是k,则图G称作k-正则图17.结点的度数利用邻接矩阵求度数:18.握手定理:图中结点度数的总和等于边数的两倍推论:度数为奇数的结点个数为偶数有向图中,所有结点的入度=出度=边数19.图的度数序列:出度序列+入度序列20.图的同构:通俗来说就是两个图的顶点和边之间有双射关系,并且每条边对应的重数相同(也就是可任意挪动结点的位置,其他皆不变)21.图的连通性及判定条件可达性:对节点vi 和vj 之间存在通路,则称vi 和vj 之间是可达的22.无向图的连通性:图中每两个顶点之间都是互相可达的23..强连通图:有向图G 的任意两个顶点之间是相互可达的判定条件:G 中存在一条经过所有节点至少一次的回路24.单向连通图:有向图G 中任意两个顶点之间至少有一个节点到另一个节点之间是可达的判定条件:有向图G 中存在一条路经过所有节点25.弱连通图:有向图除去方向后的无向图是连通的判定条件:有向图邻接矩阵与转置矩阵的并是全一的矩阵26.点割:设无向图G=<V,E>为联通图,对任意的顶点w  V,若删除w及与w相关联的所有边后,无向图不再联通,则w称为割点;27.点割集:设无向图G=<V,E>为连通图,若存在点集 ,当删除 中所有顶点及与V1顶点相关联的所有边后,图G不再是联通的;而删除了V1的任何真子集 及与V2中顶点先关的所有边后,所得的子图仍是连通图,则称V1是G的一个点割集设无向图G=<V,E>为连通图,任意边e  E,若删除e后无向图不再联通,则称e 为割边,也成为桥28.边割集:欧拉图,哈密顿图,偶图(二分图),平面图29.欧拉通路(回路):图G 是连通图,并且存在一条经过所有边一次且仅一次的通路(回路)称为拉通路(回路)30.欧拉图:存在欧拉通路和回路的图31.半欧拉图:有通路但没有欧拉回路32.欧拉通路判定:图G 是连通的,并且有且仅有零个或者两个奇度数的节点欧拉回路判定:图G 是连通的,并且所有节点的度数均为偶数有向欧拉图判定:图G 是连通的,并且所有节点的出度等于入度33.哈顿密图:图G 中存在一条回路,经过所有点一次且仅一次34..偶图:图G 中的顶点集被分成两部分子集V1,V2,其中V1nV2= o ,V1UV2= V ,并且图G 中任意一条边的两个端点都是一个在V1中,一个在V2中35.平面图:如果把无向图G 中的点和边画在平面上,不存在任何两条边有不在端点处的交叉点,则称图G 是平面图,否则是非平面图36.图的分类树无向树和有向树无向树:连通而不含回路的无向图称为无向树生成树:图G 的某个生成子图是树有向树:一个有向图,略去所有有向边的方向所得到的无向图是一棵树最小生成树最小生成树:设G -< V . E 是连通赋权图,T 是G 的一个生成树,T 的每个树枝所赋权值之和称为T 的权,记为W ( T . G 中具有最小权的生成树称为G 的最小生成树最优树(哈夫曼树)设有一棵二元树,若对所有的树叶赋以权值w1,w2… wn ,则称之为赋权二元树,若权为wi 的叶的层数为L ( wi ),则称W ( T )= EWixL ( wi )为该赋权二元树的权,W )最小的二元树称为最优树。
《离散数学》课件-第16章树

18
16.3 根树及其应用
19
定义(有向树)设D是有向图,如果D的基图是无向 树,则称D为有向树。
在有向树中最重要的是根树。 定义16.6(根树)一棵非平凡的有向树,如果恰有 一个顶点的入度为O,其余所有顶点的入度均为1,则称该 树为根树。 入度为0的顶点称为树根,入度为1出度为0的顶点称 为树叶,入度为1出度不为0的点称为内点,内点和树根统 称为分支点。 树根到一个顶点的有向通路的长度称为该顶点的层数。 层数最大顶点的层数称为树高。 平凡树也称为根树。
2
16.1 树及其性质
3
定义16.1(树和森林) 连通且无回路的无向图称为无向树,简称为树,常用
T表示树。 平凡图为树,称为平凡树。 非连通且每个连通分支是树的无向图称为森林。 T中度数为1的顶点(悬挂顶点)称为树叶,度数大于
1的顶点称为分支点。 称只有一个分支点,且分支点的度数为n-1的n(n≥3)
定义16.8(子树)设T为一棵根树,则其任一顶点v 及其后代导若将层数相同的顶点都 标定次序,则称T为有序树。
根据每个分支点的儿子数以及是否有序,可将根树 分成如下若干类:
定义(跟树分类)设T为一棵根树 (1)若T的每个分支点至多有r个儿子,则称T为r叉 树。又若r叉树是有序的,则称它为r叉有序树。 (2)若T的每个分支点恰好有r个儿子,则称T为r叉 正则树。又若r叉正则树是有序的,则称它为r叉正则有 序树。 (3)若T为r叉正则树,且每个树叶的层数均为树高, 则称T为r叉完全正则树。又若r叉完全正则树是有序的, 则称它为r叉完全正则有序树。
8
平均编码长度为:L = ∑ P( i )× l( i ) = 2.53bit i=1
离散数学 树

离散数学树
离散数学中的树(Tree)是一种常见的图论结构,它是一种无向、连通且没有简单回路的无向图,或者是一个有向连通图,其中每个节点都只有唯一一个父节点(除了根节点)。
树形结构中的每一个节点都可以视为一个子树的根节点,因为它下面连接了若干个子节点,这样就形成了一棵向下生长的树状结构。
树形结构还有一个重要的特点就是它具有很好的递归性质,因为每个节点下面都可以再建立一棵子树,这样就可以逐层递归地构建出整棵树。
在离散数学中,树被广泛应用于算法设计、数据结构以及对计算机网络和信息系统进行建模等领域。
树的深度和广度优先遍历、树的一些基本性质(如高度、度、叶子节点等)以及树的遍历应用在图的搜索算法、排序、哈夫曼编码、抽象语法树等算法中都有广泛的应用。
树分解定理

树分解定理树分解定理(Tree decomposition theorem)是离散数学中一项重要的定理,它与图的分解和图的算法密切相关。
树分解定理描述了任意图都可以根据其边集的某个树分解表达。
首先,我们来介绍一下树分解的概念。
树分解是对一个无向图进行分解的一种方法。
给定一个无向图G=(V,E),其中V表示图的顶点集,E表示图的边集。
树分解是将图G分解成一些子图的集合,这些子图采用树的结构组织,且满足如下条件:1. 每个子图都是图G的子图。
2. 每个顶点都属于一个或多个子图。
3. 任意两个子图之间要么没有公共顶点,要么有且只有一个公共顶点。
根据树分解的定义,我们可以得到一个关键结论:每个子图都可以用一个包含该子图所有顶点的集合作为标记。
这就是树分解的核心思想。
树分解定理指出,对于任意的无向图G=(V,E),存在一个树分解{(B_x, X_x)},其中B_x是一个子图,X_x是子图B_x的标记集合,满足以下三个条件:1. 图G的每个顶点都属于某个子图,即图G中所有的顶点在树分解的所有子图的标记集合中都有。
2. 图G的每条边都关联于某个子图,即图G中所有的边连接的顶点在树分解的某两个子图的标记集合中都有。
3. 任意的顶点v在树分解的所有子图中的标记集合的交集,称为顶点v的袋,即B_v = ∩{X_x|v∈X_x}。
树分解的每个子图袋的大小要小于等于某个常数k,即B_x ≤ k。
树分解定理的证明非常复杂,可以依靠递归的方法得到。
首先,我们定义以v为根的子图B_v和相应的标记集合X_v。
然后,我们选择树G的深度最大的顶点u,将其从图中删除并得到一个新的图G'。
此时,原图G的每个顶点都属于G'的一个子图,并形成一个包含u的袋B_u。
我们再次选择G'中深度最大的顶点,重复上述操作,直到最后得到只包含一个顶点并且没有边的子图。
这样就得到了一个树分解。
树分解的主要应用领域是图算法和计算理论。
离散数学——树ppt课件

无向树的性质
定理16.2 设T是n阶非平凡的无向树,则T中至少有两片树叶。
证明
设T有x片树叶,由握手定理及定理16.1可知,
2(n 1) d(vi ) x 2(n x)
由上式解出x≥2。
12
例16.1
例16.1 画出6阶所有非同构的无向树。
解答 设Ti是6阶无向树。 由定理16.1可知,Ti的边数mi=5, 由握手定理可知,∑dTi(vj)=10,且δ(Ti)≥1,△(Ti)≤5。 于是Ti的度数列必为以下情况之一。
(1) 1,1,1,1,1,5 (2) 1,1,1,1,2,4 (3) 1,1,1,1,3,3 (4) 1,1,1,2,2,3 (5) 1,1,2,2,2,2
(4)对应两棵非同构的树, 在一棵树中两个2度顶点相邻, 在另一棵树中不相邻, 其他情况均能画出一棵非同构 的树。
13
例16.1
人们常称只有一个分支点,且分支点的度数为n-1的 n(n≥3)阶无向树为星形图,称唯一的分支点为星心。
知,G-e已不是连通图, 所以,e为桥。
9
(5)(6)
如果G是连通的且G中任何边均为桥,则G中没有回路,但在任 何两个不同的顶点之间加一条新边,在所得图中得到唯一的 一个含新边的圈。
因为G中每条边均为桥,删掉任何边,将使G变成不连通图, 所以,G中没有回路,也即G中无圈。
又由于G连通,所以G为树,由(1) (2)可知,
u,v∈V,且u≠v,则u与v之间存在唯一的路径Г,
则Г∪(u,v)((u,v)为加的新边)为G中的圈, 显然圈是唯一的。
10
(6)(1)
如果G中没有回路,但在任何两个不同的顶点之间加一条新边, 在所得图中得到唯一的一个含新边的圈,则G是树。
图论5树

离散数学图论第五节树、有向树、有序树定义连通而不含回路的无向图称为无向树、树。
非循环的连通无向图定理若G=<V,E>为n阶无向图,则下列等价1) G是连通的和非循环的;2) G无自圈,且当v,v’∈V时,皆有唯一一条从v到v’的基本路径;3) G连通,且当v,v’∈V时,e=(v,v’)∈E,G+{e}有唯一的一回路4) G连通,当e∈E 时,G-e是非连通的5) G连通,且n(E)=n-1;6) G是非循环的,且n(E)=n-1定理阶大于1的树至少有两个端点定义每个分支都是树的无向图称为森林定理若森林有n个顶点,m条边和k个分支,则m=n-k定义若树T是无向图G的生成子图,则称T 为G的生成树;T中的边称为树枝,G中不属于T的边称为弦若森林F是无向图G的生成子图,则称F为G的生成森林定理每个无向图都有生成森林,无向图G有生成树当且仅当G连通。
定理设T是连通无向图G=<V,E>的生成树,则在T上添加任一弦e可产生唯一的一个G中只含弦e其余边都是枝的圈。
求连通无向图G的生成树的方法:破圈法、避圈法。
破圈法:找出G的一个回路,删除回路上一条边,此过程一直进行到图中不再含有回路为止。
最后得到的不含回路的连通图就是G的生成树。
例求下图的最小生成树定义设G是无向连通加权图,T为G的生成树,T的所有枝的权之和称为T的权,记为w(T)。
G中权最小的生成树称为G的最小生成树。
1 Kruskal 算法设无向连通图G=<V,E>, G中边e 1,…,e m以按权的递增次序排列,即w(e 1) ≤…≤w(e n)。
第1步:置T为空集,j=1;}不含回路,则第2步:若T∪{ejT←T ∪{e j},转第3步;否则转第3步第3步:j=j+1。
若j≤m,转第2步;否则结束。
上述算法也可用于求一般无向连通图的生成树,只要将各边的权当作1。
也称为避圈法。
2 Prim算法第1步:置T为空集;第2步:在V中任选一个顶点t,令M={t};第3步:在E中选取权尽可能小的边(u,v),其中u∈M,v ∈ V-M,将(u,v)放进T,v放进M;第4步:若M≠V,转第3步;否则结束例求下图的最小生成树例下加权图表示7个城市及架起城市间直接通信线路的预测造价,使给出一个设计方案使得各城市间能够通信且总造价最小定义一个有向图D,若不考虑有向边的方向所得的无向图为无向树,称D为有向树。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中序遍历(次序:左-根-右) 前序遍历(次序:根-左-右) 后序遍历(次序:左-右-根) b 中序遍历: c b e d g f a I k h j 前序遍历: a b c d e f g h i k j 后序遍历: c e g f d b k i j h a
例:给定二叉树,写出三种访问 结点的序列
是否为根树
(a) (no)
(b) (no)
(c) (yes)
从树根到T的任意顶点v的通 路(路径)长度称为v的层数。 v5的层数为 层。
层数最大顶点的层数称为树 高.将平凡树也称为根树。 右图中树高为( )。
v1
v2 v3
v4 v8v5Fra bibliotekv6v7 v10
v9
在根树中,由于各有向边的方向是一 致的,所以画根树时可以省去各边上的所 有箭头,并将树根画在最上方.
等长码:0-000;1-001;2-010;3-011;4-100; 5-101;6-110;7-111. 总权值: W2=3*100=300
4、二叉树的周游(遍历)
二叉树的周游:对于一棵二叉树的每一个结点都访问一次且 仅一次的操作 1)做一条绕行整个二叉树的行走路线(不能穿过树枝) 2)按行走路线经过结点的位臵(左边、下边、右边) 得到周游的方法有三种: 中序遍历(路线经过结点下边时访问结点) 访问的次序:左子树-根-右子树 前序遍历(路线经过结点左边时访问结点) 访问的次序:根-左子树-右子树 后序遍历(路线经过结点右边时访问结点) 访问的次序:左子树-右子树-根
2、根树中顶点的关系
定义:设T为一棵非平凡的根树, v2 ∀vi,vj∈V(T),若vi可达vj,则称vi为 vj的祖先,vj为vi的后代; v4 v5 若vi邻接到vj(即<vi,vj>∈E(T),称 vi为vj的父亲,而vj为vi的儿子 v8 若vj,vk的父亲相同,则称vj与vk是兄 弟
v1
3、前缀编码 在通信中,常用二进制编码表示符号. 1, 10, 01, 101, 0101 1)等长编码与不等长编码: a, b, c , d , e 不等长编码可以使总电文总长度较短 2)不等长编码中编码的问题:如何识别? 3) 前缀编码定义:设a1a2,…,an-1an为长为n的符号串, 称其子串a1, a1a2, …, a1a2…an-1分别为该符号串的 长度为1, 2, …, n-1的前缀. 设A={b1,b2,…bm }为一个符号串集合,若对于任意的bi, bj∈A (i≠ j) bi与bj互不为前缀,则称A为前缀码. 若符号串bi(i=1,2,…,m)中只出现0,1两个符号,则 称A为二元前缀码 {1,10,101,0101,1010,0100,01001 }不是前缀码 {1,00,011,0101,01001,01000 } 为前缀码. { 1,01,111,1100,0111 } 不是前缀码
a h d i j
c
例:无向树T中度为4、3、2的结点各一个,其余为树叶,树叶=? 4+3+2+k = 2(3+k-1)
4) 阶数n比较小的所有非同构的无向树. 例1:画出6阶所有非同构的无向树. m=n-1=5 从树的节点之和来分析:结点之和为10分配给6个结点 1 1 1 1 1 5 1 1 1 1 2 4 1 1 1 1 3 3 1 1 1 2 2 3 1 1 2 2 2 2 例2:7阶无向树中有3片树叶和1个3度顶点,其余3个顶点的度数均无1和3.试 画出满足要求的所有非同构的无向树. 解答:从树的节点之和来分析:7阶无向树的边数m = ( ), 于是∑d(vi)=12=3+3 + d(v5)+d(v6)+d(v7) 1 1 1 2 2 2 3 加入2,2,2 如何组成结点的度数序列使之不同构 主要分析:度为3的结点v与其三个邻接点的关系 邻接关系不同就能得到不同构的树 三个邻接点度数:1 1 2 1 2 2 2 2 2
通路长度).
在所有有t片树叶,带权w1,w2,…,wt的二叉树中, 总权值W(T)最小的二叉树称为最优二叉树 三棵带权二叉树
W(T1)=2(2+2)+3*3+5*3+3*2=38 W(T2)=4(3+5)+3*3+2*2+2=47 W(T3)=3*(3+3)+5*2+2(2+2)=36
2.Huffman算法(在给定权值下,如何构造最优二叉树) 给定实数(权值):w1,w2,…,wt,按从小到大 排序为w1≤w2≤…≤wt. (1) 连接权为w1,w2的两片树叶,得一个分支点,其权 为w1+w2 (2) 在w1+w2,w3,w4…,wt中选出两个权最小的, 连接它们对应的顶点(不一定是树叶),得新分支点及 所带的权. (3) 重复(2),直到形成t-1个分支点,t片树叶为止.
v1
v2 v4 v8 v5
二叉 v3 有序 v6 v7 树
v10
v1
v2 v4 v5 v3
v6 v7
v9
v8 v9 v10 v11 v12 v13 v14 v15
二叉 完全 正则 有序 树
(a)
(b)
(c)
四叉树
4、r叉树的子树
定义: 设T为一棵根树,∀v∈ V(T),
称v及其后代的导出子图Tv为T的以v为根的根子树.
(5)G中没有回路,但在任何两个不同的顶点之间加一条新边,在所得图中得到 惟一的一个含新边的初级回路. (6)G是连通的,但删去任何一条边后,所得图不连通. G连通:若存在二个结点无通路,则在二个结点添加边后不会出现回路
3)树的性质
对于给定的无向图—树是边数最小的连通图(m<n-1则不连通) 树是边数最多的无回路图(m>n-1则有回路) 结点的度: Σd(vi) = 2m =2(n-1) 定理:设T是n阶非平凡的无向树,则T中至少有 设:有x片树叶,其余结点度数至少为2 x + 2(n-x) <= 2(n-1) 片树叶
等长的编码一定不是最好的,考虑利用二元前缀码。
3)最优二元前缀码 给定所需编码的字符的频率,构造字符的二元前缀 编码,使其总电文长度为最短-称为最优二元前缀 码。
先利用哈夫曼算法,生成最优二叉树;
再得到最优二元前缀码
例:传输100个八进制的数字,其出现的频率分别为: 0-25%, 1-20%, 2-15%, 3-10%, 4-10%, 5-10%, 6-5%, 7-5%。 用最优二元前缀码传输需要多少二进制数字? 用等长码传输需要多少二进制数字? 先得到最优二元前缀码 利用哈夫曼算法, 生成最优二叉树, 以频率为权值, 5,5,10,10,10,15,20,25 6,7,3, 4, 5, 2, 1, 0
2)利用二叉树产生二元前缀码 规定二叉树的左子树的边为0,右子树的边为1
则将从根到叶子结点的通路中边的序列即为叶子 的二元前缀编码
0 0 a b 0 1 1 0 1
a: b: c: d: e:
00 010 011 10 111
d 1
c
1 e
通信中,每个字符出现的频率不同,如何使得 传输效率最高?
3、带权图的最小生成树
(1) 定义5 设无向连通带权图G=<V,E,W> ,T是G的一棵生成树. T的各边权之和称为T的权,记作W(T); G的所有生成树中权最小的生成树称为G的最小生成树。 (2) 最小生成树的求法(这里介绍避圈法Kruskal算法) 设n阶无向连通带权圈G=<V,E, W> 有m条边, 不妨设G中没有环(否则,可以将所有的环先删去),将m条边按权从小到 大顺序排列,设为e1,e2,…,em; 取e1在T中,然后依次检查e2,e3,…,em.若ej(j≥2)与已在T中的边 不能构成回路,则取ej在T中,否则弃去ej; 算法停止时得到的T为G的最小生成树。
例: 求2,2,3,3,5的最优二叉树
例: 求2,2,3,3,5的最优二叉树 (1) 2,2,3,3,5 (2) 3,3,4,5 (3) 4,5,6 (4) 6,9
3 3 2 2 9 6 4 5 3 15 6 3
最优二叉树总的原则是:权值较大的叶子距根较近, 权值较小的可以距根较远
例:给定一组权值3,5,6,9,11,14,16,18构造 相应的最优二叉树
v3 v6 v7 v10
v9
v1为v5的祖先,v5为v1的后代; v2为v5的父亲,而v5为v2的儿子; v4与v5是兄弟
3、有序树 设T为根树,若将T中层数相同的顶点都标定次序, 则称T为有序树 根据根树T中每个分支点儿子数以及是否有序,可 以将根树分成下列各类: (1)若T的每个分支点至多有r个儿子,则称T为r叉树; 又若r叉树是有序的,则称它为r叉有序树. (2)若T的每个分支点都恰好有r个儿子,则称T为r叉正 则树; 又若T是有序的,则称它为r叉正则有序树. (3)若T是r叉正则树,且每个树叶的层数均为树高,则 称T为r叉完全正则树, 又若T是有序的,则称它为r叉完全正则有序树。
0 6
7 3
4
5
2
1
5,5,10,10,10,15,20,25 6,7,3, 4, 5, 2, 1, 0 编码:6-0000;7-0001; 3-001;4-010;5-011; 2-100;1-101,0-11
0
6 7 3 4 5 2 1
总权值:(100个字符的bit数)
W(T)=(5+5)*4+(10+10+10+15+20)*3+25*2=285
避圈法Kruskal算法(n-1次)
1
(1) 5 2 1
2 1 (2)
2 1 (3)
4
4
(4)
破圈法
3
5 2 1
(1)
64
3
5 2 1