数据结构考试-哈夫曼编码特辑.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构考试-哈夫曼编码特辑

能求哈夫曼树、哈夫曼编码,能求平均编码长度 哈夫曼树: 举个例子 有个序列是(7,9,2,6,32,3,21,10) 叫你求哈夫曼树 注意:一般小的数放左边,大的放右边。左右节点可以互换的,编码也有不同。哈夫曼编码没有唯一性的,它的目的是用最短的代价去表示一系列数。 步骤一:把这些点都看成是一个只有根结点的树的集合F ? 步骤二,选2个值最小的树 ? 步骤三:在这些树的集合F中删除这2棵树 ? 然后把 构成一颗二叉树 变成了(5 = 2 + 3) 然后把这个树加入到集合F ? ? 5代表这棵树的权值 然后继续上述步骤 肯定是选 5 和 6 把这2个构成二叉树 ? 在F中删除5 6 加入11这棵树 变成了 ? ? 继续上述步骤 选7 和 9 ? 在F中删除7 和9 加入16这棵树 变成了 ? ? 继续上述步骤 选 10 和11 ? 在F中删除10 和11 加入21这棵树 ? ? ? 继续上述步骤 选16和21 (有2个21,随便选哪个) 我选那个只有一个根结点的21好了 16和21构成二叉树 ? 在F中删除这16和21这两棵树 加入37这棵树 ? 继续上述步骤 选21和32 构成二叉树 ? 在F中删除21和32这2两棵树 加入53这棵树 ? 还是继续上面步骤 把F中的两棵树合并成一棵树 ? 完成了! 这个就是哈夫曼树 哈夫曼编码: 以上图结果为例,左边为0,右边为1,进行编码,结果如下图: {7,9,2,6,32,3,21,10}编码为: 7的编码为000 9的编码为001 2的编码为10100 6的编码为1011 32的编码为11 3的编码为10101 21的编码为01 10的编码为100 以上述结果为例,如果题目为: 要输出的字符集D={A,B,C,D,E,F,G,H} 字符出现频率w={0.07,0.09,0.02,0.06,0.32,0.03,0.21,0.10} 对应编码就是: (A)0.07的编码为000 (B)0.09的编码为001 (C)0.02的编码为10100 (D)0.06的编码为1011 (E)0.32的编码为11 (F)0.03的编码为10101 (G)0.21的编码为01 (H)0.10的编码为100 以上述结果为例,求 平均编码长度: 3*0.07+3*0.09+5*0.02+4*0.06+2*0.32+5*0.03+2*0.21+3*0.10=2.33 以3*0.07为例, 0.07为频率w里面的0.07,因为编码是000,有3位数,所以是3。公式是:编码位数*频率w。 以上述结果为例,如果题目为: 若用这三位二进制数(0…7)对这8个字母进行等长编码,则哈夫曼编码的平均码长是等长编码的百分之几?它使电文总长平均压缩多少? 答:用三位二进行数进行的等长编码平均长度为3 2.33/3=0.77=77% 其平均码长是等长码的77%。 所以平均压缩率为23%。 注释:三位二进制数(0…7)对这8个字母进行等长编码意思是: (0)A=000,(1)B=001,(2)C=010,(3)D=011,(4)E=100,(5)F=101,(6)G=110,(7)H=111 12 / 12

文档评论(0)

yaobanwd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档