数据结构(Python Java)(微课版) 课件 5.4 哈夫曼树_第1页
数据结构(Python Java)(微课版) 课件 5.4 哈夫曼树_第2页
数据结构(Python Java)(微课版) 课件 5.4 哈夫曼树_第3页
数据结构(Python Java)(微课版) 课件 5.4 哈夫曼树_第4页
数据结构(Python Java)(微课版) 课件 5.4 哈夫曼树_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构与算法设计哈夫曼树的相关概念哈夫曼算法哈夫曼编码5.4哈夫曼树路径若树中存在某个节点序列k1,k2,…,kj满足Ki是ki+1的双亲则该节点序列是树上的一条路径路径长度路径经过的边数,称为路径长度树的路径长度从树根到树中每一个节点的路径长度之和哈夫曼树的相关概念节点的权给树的节点赋以一定意义的数值,称为节点的权节点的带权路径长度从树根到某节点的路径长度与该节点的权的积树的带权路径长度(WPL)

树中所有叶子节点的带权路径长度之和哈夫曼树相关概念2357例:4个节点的权值分别为2,3,5,7。以下是以它们为叶子节点构造二叉树,计算各二叉树的带权路径长度WPL。WPL=2*3+3*3+5*2+7*1=32WPL=2*2+3*2+5*2+7*2=34WPL=2*1+3*2+5*3+7*3=44由n个带权叶子节点构成的二叉树具有不同形态其中带权路径长度(WPL)最小的二叉树又叫最优二叉树,或最佳判定树哈夫曼树的概念最佳判定树以各分数段人数的比例为权值构造最佳判定树使得大部分数据经过较少次数的比较得到结果最佳判定树构造哈夫曼树的方法——哈夫曼算法根据给定的n个权值{w1,w2,……wn},构造n棵只有根节点的二叉树,令其权值为分别wj在森林中选取两棵根节点权值最小的树作左右子树,构造一棵新的二叉树置新二叉树根节点权值为其左右子树根节点权值之和在森林中删除这两棵树,并将新得到的二叉树加入森林中重复上述步骤,直到只含一棵树为止这棵树即哈夫曼树哈夫曼算法例:已知权值集合{2,4,6,7,8},构造哈夫曼树。哈夫曼编码电报通讯中,电文以二进制的0,1序列传送发送端将电文中的字符转换成0,1的二进制序列接收端将收到的0,1序列转换成对应的字符序列(译码)假定电文是英文,电文字符串由26个英文字母组成,需要编码的字符集是{A,B,C,D,…,Z}方法一:等长的二进制编码方法二:不等长的二进制编码

A:010B:0101C:01011前缀码任一字符的编码,不能是其他字符的前缀哈夫曼编码假设字符集D={d1,d2,d3,…,dn}每个字符di的编码长度为li每个字符di在电文中出现的次数是ci

则电文的总长度为:∑ci*li每个字符di在电文中出现频度的概率是wi

每个字符di的编码长度为li则电文的平均总长度为:∑wi*li

哈夫曼编码寻找最优前缀码的方法用d1,d2,d3,…,dn作为叶子节点用w1,w2,w3,…,wn作为叶子节点的权构造最优二叉树将树中每个节点的左分支置为0,右分支置为1从根到叶子节点的一个标号序列,就是该叶子节点的编码例:设某语言有ABCDEF六种字母,出现的概率分别为0.11,0.12,0.13,0.15,0.22,0.27。A:0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论