- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章树分析
5.8 哈夫曼树 5.8.3 哈夫曼树的应用 1. 判定问题 在解决某些判定问题时,利用哈夫曼树可以得到最佳判定算法。 5.8 哈夫曼树 例:编制一个将百分制转换成五级分制的程序 0~59 ———————————————————— bad 60~69 ———————————————————— pass 70~79 ———————————————————— general 80~89 ———————————————————— good 90~100 ———————————————————— excellent if (a60) b=“bad”; else if (a70) b=“pass”; else if (a80) b=“general”; else if (a90) b=“good”; else b=“excellent”; ………………………5% ………………………15% ………………………40% ………………………30% ………………………10% a60 不及格 Y N a70 及格 Y N a80 中等 Y N a90 良好 Y N 优秀 根据出现的频率决定比较的次数 判定树 出现的频率: 10 15 30 40 5 15 5 10 15 30 30 60 40 100 70~79 80~89 0~59 60~69 90~100 70≤a80 Y N 中等 80≤a90 Y N 良好 60≤a70 N Y 及格 a60 Y N 优秀 不及格 改造成每个判定框只有一次比较的判定树: a80 Y N a90 Y N 良好 Y 及格 a60 Y N 优秀 不及格 a70 N 中等 实践证明:按照此棵判定树,输入10000个输入数据,原判定树需 进行31500次比较,此判定树需进行22000次比较 2.赫夫曼编码??????? 在电报通讯中,电文是以二进制的0,1序列传送的: 在发送端,发送的电文 二进制序列 在接收端,接到的二进制序列 电文 编码 译码 赫夫曼编码提出的背景: (1) 如何使电报编码变短,非前缀编码出现二义性; (2) 用二叉树可以构造前缀编码; (3) 由哈夫曼树得到最优编码 赫夫曼(Huffman)编码是一种常用的压缩编码方法,是Huffman于1952年为压缩文本文件建立的。 它的基本原理是频繁使用的数据用较短的代码代替,较少使用的数据用较长的代码代替,每个数据的代码各不相同。 编码方式: 1)等长编码 例:假设传送的电文为英文序列‘ABACCDA’ A B C D 00 01 10 11 则电文编码为“00010010101100”,总长14, 译码时:两位1分 2)不等长编码 一般,在英文字母a—z中,e的使用频率比q,z要大得多 使用频率高的用短码 使用频率低的用长码 使用频率: 3 1 2 1 A B C D 0 00 1 10 电文编码“000011010”,总长9 译码:AAAA 或 BB 或 ABA 原因:A(0)为B(00)的前缀 编码不等长,但大部分情况下电文长度会减少 如何得到使电文长度最短的二进制前缀编码? 假设电文中每种字符出现的次数为Wi, 其编码长度为li ,电文中有n种字符,则电文总长为: 3)前缀编码 设计不等长编码时,任一字符的编码不是另一字符编码的前缀,这种编码称为前缀编码。 使它最小,
文档评论(0)