哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近()
给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。
哈夫曼树(霍夫曼树)又称为最优树.
1、路径和路径长度
在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长
哈夫曼树 (3张)
度为L-1。
2、结点的权及带权路径长度
若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。
3、树的带权路径长度
树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为WPL。
构造
假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:
(1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);
(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;
(3)从森林中删除选取的两棵树,并将新树加入森林;
(4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。
哈夫曼编码
在数据通信中,需要将传送的文字转换成二进制的字符串,用0,1码的不同排列来表示字符。例如,需传送的报文为“AFTER DATA EAR ARE ART AREA”,这里用到的字符集为“A,E,R,T,F,D”,各字母出现的次数为{8,4,5,3,1,1}。现要求为这些字母设计编码。要区别6个字母,最简单的二进制编码方式是等长编码,固定采用3位二进制,可分别用000、001、010、011、100、101对“A,E,R,T,F,D”进行编码发送,当对方接收报文时再按照三位一分进行译码。显然编码的长度取决报文中不同字符的个数。若报文中可能出现26个不同字符,则固定编码长度为5。然而,传送报文时总是希望总长度尽可能短。在实际应用中,各个字符的出现频度或使用次数是不相同的,如A、B、C的使用频率远远高于X、Y、Z,自然会想到设计编码时,让
哈夫曼树 (4张)
使用频率高的用短码,使用频率低的用长码,以优化整个报文编码。
为使不等长编码为前缀编码(即要求一个字符的编码不能是另一个字符编码的前缀),可用字符集中的每个字符作为叶子结点生成一棵编码二叉树,为了获得传送报文的最短长度,可将每个字符的出现频率作为字符结点的权值赋予该结点上,显然字使用频率越小权值越小,权值越小叶子就越靠下,于是频率小编码长,频率高编码短,这样就保证了此树的最小带权路径长度效果上就是传送报文的最短长度。因此,求传送报文的最短长度问题转化为求由字符集中的所有字符作为叶子结点,由字符出现频率作为其权值所产生的哈夫曼树的问题。利用哈夫曼树来设计二进制的前缀编码,既满足前缀编码的条件,又保证报文编码总长最短。
哈夫曼静态编码:它对需要编码的数据进行两遍扫描:第一遍统计原数据中各字符出现的频率,利用得到的频率值创建哈夫曼树,并必须把树的信息保存起来,即把字符0-255(2^8=256)的频率值以2-4BYTES的长度顺序存储起来,(用4Bytes的长度存储频率值,频率值的表示范围为0--2^32-1,这已足够表示大文件中字符出现的频率了)以便解压时创建同样的哈夫曼树进行解压;第二遍则根据第一遍扫描得到的哈夫曼树进行编码,并把编码后得到的码字存储起来。
哈夫曼动态编码:动态哈夫曼编码使用一棵动态变化的哈夫曼树,对第t+1个字符的编码是根据原始数据中前t个字符得到的哈夫曼树来进行的,编码和解码使用相同的初始哈夫曼树,每处理完一个字符,编码和解码使用相同的方法修改哈夫曼树,所以没有必要为解码而保存哈夫曼树的信息。编码和解码一个字符所需的时间与该字符的编码长度成正比,所以动态哈夫曼编码可实时进行。
2、哈夫曼译码
在通信中,若将字符用哈夫曼编码形式发送出去,对方接收到编码后,将编码还原成字符的过程,称为哈夫曼译码。
哈夫曼树:
给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。
哈夫曼树的构造:
假设给定的权值如下:3,5,7,8,10,15;
首先取集合中最小的两个数:3+5=8,再删除集合中3和5的值,把8放入原集合,
原集合变成:7,8,8,10,15;
8
/ \
3 5
再从7,8,8,10,15中再取2个最小的数构成一个树
15
/ \
8 7
/ \
3 5
再从8,10,15,15中再取2个最小的数构成一个树:
18
/ \
8 10
再从15,15,18中取两个最小数:15,15,构成树:
30
/ \
15 15
/ \
8 7
/ \
3 5
最后把18,30构成树(此时集合中已经没元素了,就形成了哈夫曼树):
48
/ \
30 18
/ \ / \
15 15 8 10
/ \
8 7
/ \
3 5
希望你能看懂!!
这句话是错的。书上说过是带权路径最短的二叉树,以树表达与以二叉树表达完全不同。
在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。
结点的权及带权路径长度若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。
扩展资料:
哈夫曼树也可以是k叉的,只是在构造k叉哈夫曼树时需要先进行一些调整。构造哈夫曼树的思想是每次选k个权重最小的元素来合成一个新的元素,该元素权重为k个元素权重之和。但是当k大于2时,按照这个步骤做下去可能到最后剩下的元素少于k个。
对给定的n个权值构造k叉哈夫曼树时,可以先考虑增加一些权值为0的叶子节点,使得叶子节点总数为(k-1)nk+1这种形式,然后再按照哈夫曼树的方法进行构造即可。
哈夫曼树的定义是构造一棵最短的带权路径树,所以这种树为最优二叉树。最优二叉树的度只有0或者2。
给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。
扩展资料:
1951年,当霍夫曼在麻省理工学院攻读博士学位时,他和他的学生们在一门信息理论课程上必须选择是完成一篇学期论文还是参加期末考试。
导师罗伯特·法诺的学期论文题目是:找到最有效的二进制代码。由于无法证明哪些现有代码是最有效的,霍夫曼放弃了对现有代码的研究,转向了新的探索。最后,他发现了基于有序频率的二叉树编码的思想,并很快证明了这种方法是最有效的。
树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。
树的路径长度是从树根到每一结点的路径长度之和,记为WPL=(W1*L1+W2*L2+W3*L3+...+Wn*Ln),N个权值Wi(i=1,2,...n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,...n)。可以证明哈夫曼树的WPL是最小的。
不是
结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。
数的带权路径长度为所有叶子节点的带权路径长度之和。
而不是单纯的权值之和。
错误,是最短的二叉树,二叉树和树是不同的概念。
正确,构造赫夫曼树就可以了
什么是带权最优二元树
最优二叉树,又称哈夫曼树,是一类带权路径长度最短的树,有着广泛的应用.我们首先给出路径和路径长度的概念.从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径,路径上的分支数目称做路径长度.树的路径长度是从树根到每一结点的路径长度之和.这种路径长度最短的二叉树是.若将上述概念推广...
树有带权路径长度吗?
以下来自百科:1、路径和路百径长度 在一棵树中,从一个结点往下可以达到的孩子或子孙结点之间的度通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。2、结点的权及带权路径长度 若将树中结点赋给一个有着某种含义的数值问,则这个...
赫夫曼树及赫夫曼编码
比如说下图中整棵树的带权路径长度WPL为:220. 其中树的带权路径长度(WPL)最小的二叉树称为赫夫曼树。 既然要使得树的路径长度最小,那么权值越大的节点理应离根节点越近 知道了赫夫曼树的定义后,那么如果给定一串权值,我们如何构建一颗赫夫曼树呢? 构造赫夫曼树的算法描述: 1.根据给定的...
哈夫曼树根结点的权值与带权路径长度一样吗
不一样。有一道题目:一棵哈夫曼树的带权路径长度等于其中所有分支结点的权值之和(X)其中“哈夫曼树根结点的权值”就是指“其中所有分支结点的权值之和”应该说:树中所有的叶结点的权值乘上其到根结点的路径长度。不是分支节点权值的和。望采纳!!!
{4,5,6,7,8}作为权值构造Huffman树,带权路径长度?
先是4和5合并为9,再就是6和7合并为13,接着是8和9合并为17,最后是13和17合并为30,所以WPL = (6+7+8)*2 + (4+ 5)*3= 69。例如:假设有n个权值,则构造出的哈夫曼树有n个叶子结点,n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:(1) 将w1、w2、…,wn看成是有...
有N个结点的哈夫曼树中,叶子结点个数是5个,那么度为2的结点个数是多少...
哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度。若根结点为0层,叶结点到根结点的路径长度为叶结点的层数,树的路径长度是从树根到每一结点的路径长度之和,记为WPL=(W1*L1+W2*L2+W3*L3+...+Wn*Ln)...
初步认识哈夫曼树
(6)树的带权路径长度:树中所有叶子结点的带权路径长度之和。例图:2*7+2*5+2*2+2*4=36 (7)赫夫曼树(Huffman):最优二叉树,带权路径长度最小的树 哈夫曼树的特点 –权值大的结点到根结点的路径长度短;–权值小的结点到根结点的路径长度长。Ø哈夫曼编码树中没有度为1的结点...
哈夫曼树的原理证明
树的带权路径长度记为WPL=(W1*L1+W2*L2+W3*L3+...+Wn*Ln),N个权值Wi(i=1,2,...n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,...n)。可以证明哈夫曼树的WPL是最小的。哈夫曼在上世纪五十年代初就提出这种编码时,根据字符出现的概率来构造平均长度最短的编码...
哈夫曼树左小右大是指什么
最优二叉树的运算规则。哈夫曼树即为最优二叉树,其在进行计算时所使用的运算规则为左小右大,是求带权路径长度的运算方式。哈夫曼树是在叶子结点和权重确定的情况下,带权路径长度最小的二叉树。
哈夫曼树的构造规则是什么?
于是频率小编码长,频率高编码短,这样就保证了此树的最小带权路径长度效果上就是传送报文的最短长度。因此,求传送报文的最短长度问题转化为求由字符集中的所有字符作为叶子结点,由字符出现频率作为其权值所产生的哈夫曼树的问题。利用哈夫曼树来设计二进制的前缀编码,既满足前缀编码的条件,又保证报文...
高群艾叶:[答案] 只有带权路径长度最小的二叉树,才是哈夫曼树.当然是可以证明带权路径长度最小
苍山县18543905614: 赫夫曼树是否唯一 - ?
高群艾叶: 不唯一,因为没有限定左右子树,并且有权值重复时,可能树的高度都不唯一,唯一的只是带权路径长度之和最小. 给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为...
苍山县18543905614: 哈夫曼树是什么?求解 - ?
高群艾叶: 哈夫曼编码是哈夫曼树的一个应用.哈夫曼编码应用广泛,如JPEG中就应用了哈夫曼编码.首先介绍什么是哈夫曼树.哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树.所谓树的带权路径长度,就是树中所有的叶结点的权值乘上...
苍山县18543905614: 什么是带权最优二元树 - ?
高群艾叶:[答案] 一棵带权二元树的代价就是树中所有根结点权之和.代价最小的带权二元树称为最优二元树.问题转化为求最优带权二元树. 那么,什么是最优带权二元树呢? 最优二叉树,又称哈夫曼树,是一类带权路径长度最短的树,有着广泛的应用. 我们首先给出...
苍山县18543905614: 到底什么是哈夫曼树啊,求例子 - ?
高群艾叶: 哈夫曼树是给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree).哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近. 例子: 1、将w...
苍山县18543905614: 哈夫曼树和哈夫曼编码 - ?
高群艾叶: 给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree).哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近. 哈夫曼树(霍夫曼树)又称为最...