数据结构考试哈夫曼编码特辑.docx
- 文档编号:25737764
- 上传时间:2023-06-12
- 格式:DOCX
- 页数:16
- 大小:831.76KB
数据结构考试哈夫曼编码特辑.docx
《数据结构考试哈夫曼编码特辑.docx》由会员分享,可在线阅读,更多相关《数据结构考试哈夫曼编码特辑.docx(16页珍藏版)》请在冰豆网上搜索。
数据结构考试哈夫曼编码特辑
能求哈夫曼树、哈夫曼编码,能求平均编码长度
哈夫曼树:
举个例子
有个序列是(7,9,2,6,32,3,21,10)
叫你求哈夫曼树
注意:
一般小的数放左边,大的放右边。
左右节点可以互换的,编码也有不同。
哈夫曼编码没有唯一性的,它的目的是用最短的代价去表示一系列数。
步骤一:
把这些点都看成是一个只有根结点的树的集合F
步骤二,选2个值最小的树
步骤三:
在这些树的集合F中删除这2棵树
然后把
构成一颗二叉树
变成了
(5=2+3)
然后把这个树加入到集合F
5代表这棵树的权值
然后继续上述步骤
肯定是选5和6
把这2个构成二叉树
在F中删除56加入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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 考试 哈夫曼 编码 特辑