Huffman赫夫曼编码的工作原理

谈到压缩这玩意儿,大家可能会想到 忘记压缩密码 将巨大文档变成一个神秘的小文件,而且你还通过这个小文件来恢复这个巨大文档。但是,大家一定都想过,为什么压缩能这么神奇呢?

 

首先抛开那些什么二叉树,二分查找的。假如让人帮忙复述这一段话:

 

  •  
中华人民共和国于公元2008年在北京举办了奥林匹克运动会。

 

他可能会说成:

 

  •  
中国2008年在北京举办了奥运会。

 

一下子短了将近一半!这是怎么回事儿啊?

 

我们都知道,中国就是指中华人民共和国,奥运会就是指奥林匹克运动会。而公元2008年,即使不加公元,人们也会明白你的意思。所以,这其实就是用一些固定的短语(例如中国)来替代比较长的名词(中华人民共和国)。这种方法在压缩算法中叫做字典

 

但是,让机器来做这件事就难多了,因为机器对什么汉语英语一窍不通,更不知道什么中国美国。他无法理解短语、句子,连字是什么他也不关心。所以,我们要想让机器能恢复你的大文档,就必须给他一本厚厚的‘字典’ (当然,机器也不喜欢背字典),这本字典中包含着这个文档中用到的名词,以及比这个名词更短的短语。所以,压缩文件中的内容实际上是:

 

  •  
字典 和 被字典替换过的新句子(比原句子更短ÿ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
哈夫曼编码是一种通过字符出现概率构造的平均编码长度最短的编码方式。它使用变长编码表对源符号进行编码,其中变长编码表是通过评估来源符号出现机率的方法得到的。在哈夫曼编码中,出现机率高的符号会被赋予较短的编码,而出现机率低的符号则会被赋予较长的编码。这样做的目的是为了降低编码之后的字符串的平均长度和期望值,从而实现无损压缩数据的效果。哈夫曼编码也是一种非前缀码,要求任一字符的编码都不能是另一字符编码的前缀。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [哈夫曼编码原理](https://blog.csdn.net/xk_moving/article/details/114006075)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [哈夫曼编解码原理与实现【转载】](https://blog.csdn.net/baidu_38172402/article/details/105240060)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值