数据结构与算法(Python版)第2版 课件 chap7.1哈夫曼编码_第1页
数据结构与算法(Python版)第2版 课件 chap7.1哈夫曼编码_第2页
数据结构与算法(Python版)第2版 课件 chap7.1哈夫曼编码_第3页
数据结构与算法(Python版)第2版 课件 chap7.1哈夫曼编码_第4页
数据结构与算法(Python版)第2版 课件 chap7.1哈夫曼编码_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

哈夫曼编码哈夫曼树

在电文传输中,需要将电文中出现的每个字符进行二进制编码和译码。编码是指用不同的0/1序列代表不同的字符。译码是指将已编了码的信息还原成原来的形式。

在设计编码时需要遵守两个原则:(1)要能唯一地译码。(2)编码长度要尽量短。2

编码

等长编码不等长编码。3等长编码假设字符集只含有5个字符A,B,C,D,E。采用三位二进制进行编码,表示为A(000),B(001),C(010),D(011),E(100)。若现在有一段电文为:ABACDDE,则应发送,二进制序列:000001000010011011100,总长度为21位。4不等长编码不等长编码是指将使用频度较高的字符分配一个相对比较短的编码,使用频度较低的字符分配一个比较长的编码。针对如上的电文(ABACDDE),由于A和D使用频率较高,采用较短编码,不妨编码如下:A(01),B(001),C(010),D(10),E(11),则,电文编码为二进制序列:0100101010101011,总长度只为16位,少于等长编码的21位。但是,存在着无法译码的问题,这是因为无法断定01001是AB;还是CA,不能唯一译码。因此,设计不等长编码,必须考虑编码的唯一性,可以采用前缀编码。前缀编码是指在建立不等长编码时必须使任何一个字符的编码都不是另一个字符的前缀。而哈夫曼编码就是前缀编码,哈夫曼编码通过构造哈夫曼树实现。5哈夫曼算法哈夫曼算法步骤如下所示:步骤1:根据给定的n个权值{w1,w2,…,wn},构造n棵二叉树的森林F={T1,T2,…,Tn},其中每棵二叉树中均只含一个带权值为wi的根结点,其左、右子树为空树;步骤2:在F中选取其根结点的权值为最小的两棵二叉树,分别作为左、右子树构造一棵新的二叉树,并置这棵新的二叉树根结点的权值为其左、右子树根结点的权值之和;步骤3:从F中删去这两棵树,同时加入刚生成的新树;步骤4:重复步骤2

温馨提示

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

最新文档

评论

0/150

提交评论