数据结构作业-严蔚敏-5.2.(3)

本文探讨了一组特定频率的8个字母如何使用哈夫曼编码和等长编码进行编码。哈夫曼编码是一种最优前缀编码,通过构建哈夫曼树实现,能有效减少数据存储空间。等长编码则为每个字符分配固定长度的二进制码,实现简单但可能浪费空间。对于给定的频率分布,哈夫曼编码的平均路径长度(WPL)为2.61,而等长编码的WPL为3,显示哈夫曼编码在压缩效率上更优。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、题目说明

假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19, 0.02, 0.06, 0.32, 0.03, 0.21, 0.10。
1)试为这8个字母设置哈夫曼编码。
2)试设计另一种由二进制表示的等长编码方案。
3)对于上述实例,比较两种方案的优缺点。

二、解答

1)可以将频率放大100倍,以方便计算,不影响哈夫曼树的构造。

w={7, 19, 2, 6, 32, 3, 21, 10},根据哈夫曼树的构造规则(参考博文:哈夫曼树和哈夫曼编码)得出以下的哈夫曼树:

在这里插入图片描述

2)哈夫曼编码和定长编码如下表所示:

字母编号出现频率哈夫曼编码等长编码
10.071010000
20.1900001
30.0210000010
40.061001011
50.3211100
60.0310001101
70.2101110
80.101011111

注意:构造出的哈夫曼树可能不同从而使得编码不同,这是因为左右子树的位置不是固定的,但是往往我们习惯于左子树根权值小于右子树,两子树权值相同时较矮的子树在左边。虽然哈夫曼树可能不同,但是WPL必然相同并且最优。
3)对于上述的两种方案。定长编码明显比哈夫曼编码更加简单。但是,哈夫曼编码是最优前缀编码。对于n个字符的数据文件来说,分别以它们的出现次数为权值构造哈夫曼树,则该树对应的哈夫曼编码对文件进行编码,能够使得该文件压缩过后对应的二进制文件的长度最短
哈夫曼编码对应二叉树的WPL为:
WPL=2*(0.19+0.32+0.21)+4*(0.07+0.06+0.10)+5*(0.02+0.03)=2.61
等长编码对应二叉树的WPL为:
WPL=3*(0.19+0.32+0.21+0.07+0.06+0.10+0.02+0.03)=3

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值