Q11.3.4 哈弗曼编码

本文通过实例介绍如何使用哈弗曼编码对字符串进行编码,并详细解释了哈弗曼树的构建过程及其编码方式。

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

问题:

用二进制来编码字符串“abcdabaa”,需要能够根据编码,解码回原来的字符串,最少需要多长的二进制字符串?

分析:

哈弗曼编码根据字符出现的概率来构造平均长度最短的码字,是一种文本压缩算法。

1,先统计各字符出现的频率;

2,构造哈弗曼树,左边为0,右边为1,每次选取最小权的两棵树组成新树,直到最终形成一棵最优哈弗曼编码树。

此题,

4个a, 2个b,1个c,1个d


第一次,挑两个最小的 c 和 d


第二次,再挑选两个最小的


最后,组成一棵哈弗曼编码树。


所以,a 的编码是 0,b的编码是 10, c 的编码是110, d的编码是111.

最短是 1*4 + 2*2 + 3*1 + 3*1 = 14.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值