- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章树和二叉树4
第5章 树和二叉树 ;5.4.1 哈夫曼树的基本概念
5.4.2 哈夫曼树的构造算法
5.4.3 哈夫曼编码
5.4.4 哈夫曼编码的算法实现
;5.4.1 哈夫曼树的基本概念
1.路径: 从树中一个结点到另一个结点之间的分支构成两个结点之间的路径.
2.路径长度:是指从根结点到该结点的路径上分支的数目。
3.树的路径长度: 从树根到每个结点的路径长度之和。完全二叉树就是这种路径长度最短的二叉树.;4.结点的带权路径长度:是从该结点到树根之间的路径长度与结点上权值的乘积.
5.树的带权路径长度:树中所有叶子结点的带权路径长度之和.通常记作:
n
WPL =∑ wklk
k=1
;6.哈夫曼树(最优二叉树)
是指对于一组带有确定权值的叶子结点构造的具有最小带权路径长度的二叉树。即:
设有给定的 n 个权值 {w1, w2, …, wn},
构造一棵由 n个叶子结点的, 每个叶子结点的带权为 wi,则其中带权路径长度 WPL最小的二叉树称为最优树或哈夫曼树.;; 根据给定的 n 个权值 {w1, w2, …, wn},
构造 n 棵二叉树的集合
F = {T1, T2, … , Tn},
其中每棵二叉树中均只含一个带权值
为 wi 的根结点,其左、右子树为空树;; 在 F 中选取其根结点的权值为最小的两棵二叉树,分别作为左、右子树构造一棵新的二叉树,并置这棵新的二叉树根结点的权值为其左、右子树根结点的权值之和;; 从F中删去这两棵树,同时加入
刚生成的新树;;例如: 已知权值 W={ 8, 6, 2, 4 }
构造哈夫曼树的过程;第四步:;由哈夫曼树的定义,一棵二叉树要使其WPL值最小,必须使权值越大的叶子结点越靠近根结点,而权值越小的叶子结点越靠远离根结点。;
在构造哈夫曼树时,可设置一个结构数组HuffNode保存各结点的信息,数组HuffNode的大小为:2n-1,数组元素的结构形式:
;1.前缀编码
在电报传送的过程中,传送的电文以二进制代码作为电报编码.
例如:电文:“ABAACCBADCA”,电文中只含四个字符:A,B,C,D,每个字符用两位定长编码,例如:A:00 ; B:01 ; C:10 ; D:11.
则上述电文可译为:
0001000010100100111000
A B AA CC B A D C A
总长22位,接收方按两位一组译码即可.; 由于采用定长编码的电文总长无法缩短,因此,对字符采用不定长编码.且让电文中出现次数较多的字符采用尽可能短的编码,从而尽可能的减小电文总长.
例如:上例中,A,C出现的频率较高,对A,B,C,D的编码分别为:0,00,1,01,则电文总长:14位的二进制串:“00000110000110”,长度缩短了但译码出现的困难.
前缀编码:是指任何一个字符的编码都不是另一个字符编码的前缀.
;2.哈夫曼编码
以每种字符在电文中出现的次数为Wi,其编码长度为li,电文中可能出现的字符有n种,则电文总长为:
n
WPL =∑ wili
i=1
正好是对应的哈夫曼树的WPL.因此以哈夫曼树来设计的二进制前缀编码使得电文总长最短.;具体设计如下:
将可能出现的字符作为叶子结点,电文中字符出现的频率为各个叶子结点的权值,设计一棵哈夫曼树,树的左分支表示二进制数0,右分支表示二进制数1,则从根结点到每一个叶子结点(字符)的路经上分支字符组成的字符串,即为该字符的二进制前缀编码,又称为哈夫曼编码.
例如: 字符A,B,C,D出现的频率为0.4,0.2,0.3,0.1则得到如图所示的哈夫曼树及哈夫曼编码。;哈夫曼编码:
A:0
C:10
B:110
D :111;9;9;补充习题;4. 有一份电文中共使用5个字符:a,b,c,d,e,他们的出现频率依次为4,7,5,2,9,试画出对应的哈夫曼树(请按左子树根结点的权小于等于右子树根结点的权的次序构造),并求出每个字符的哈夫曼编码。
5. 如下图所示 ,以数据集{4,5,6,7,10,12,18}为结点权值所构成的哈夫曼树为____,其带权路
原创力文档


文档评论(0)