哈夫曼(Haffman)编码

哈夫曼编码又称赫夫曼编码,是赫夫曼为了解决当年远距离通信(主要是电报)的数据传输的最优化问题提出的。哈夫曼编码是一种可变字长的编码方式,主要目的是根据使用频率来最大化节省字符(编码)的存储空间。

哈夫曼树

如何绘制哈夫曼树呢?假设我们在网络传输一段文字CADABCADAEFC,一般会转换为二进制0和1进行传输。

字母      A    B    C    D    E   F
二进制   000  001  010  011  100  101

上面字母二进制编码串:010 000 011 000 001 010 000 011 000 100 101   010   36个字符

根据各个字母出现的频率绘制哈夫曼树来规划:A出现4次 B出现1次 C出现3次 D出现2次 E和F各1次,从小到大排序为BEFDCA

区出现频率最小的B、E两个字符作为起始,其总出现频率为2次,大于F的1次,那么F在左,2在右,依次进行比较,比较完成后左枝干标记为0,右枝干标记为1,就形成了哈夫曼树,如下图:

哈夫曼编码:

字母     A    B    C    D     E      F
二进制   0  11110  10   110  11111  1110   

新编码二进制:100 110 011 110 100 110 011 111 111 010  30个字符

节约了大概17%的存储和传输成本,现实中字符长度会很长,那么这个压缩效果会更明显。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值