哈夫曼编码

原文地址 http://www.daileinote.com/computer/math/43

霍夫曼编码(Huffman Coding)又译为哈夫曼编码、赫夫曼编码,是一种用于无损数据压缩的熵编码(权编码)算法。由美国计算机科学家大卫·霍夫曼(David Albert Huffman)在1952年发明

霍夫曼树常处理符号编写工作。根据整组数据中符号出现的频率高低,决定如何给符号编码。如果符号出现的频率越高,则给符号的码越短,相反符号的号码越长。假设我们要给一个英文单字"F O R G E T"进行霍夫曼编码,而每个英文字母出现的频率如下图

下面是算法过程:

进行霍夫曼编码前,我们先创建一个霍夫曼树

⒈将每个英文字母依照出现频率由小排到大,最小在左

⒉每个字母都代表一个终端节点(叶节点),比较F.O.R.G.E.T六个字母中每个字母的出现频率,将最小的两个字母频率相加合成一个新的节点,发现F与O的频率最小,故相加2+3=5

⒊比较5.R.G.E.T,发现R与G的频率最小,故相加4+4=8

⒋比较5.8.E.T,发现5与E的频率最小,故相加5+5=10

⒌比较8.10.T,发现8与T的频率最小,故相加8+7=15

⒍最后剩10.15,没有可以比较的对象,相加10+15=25。

最后产生的树状图就是霍夫曼树

进行编码:

1.给霍夫曼树的所有左链接'0'与右链接'1'

2.从树根至树叶依序记录所有字母的编码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值