赫夫曼编码原理分析

赫夫曼编码原理分析

通信领域中信息的处理1 – 定长编码

例:can you can a can as a can canner can a can.
第一步:将上面的字符转化成ASCII码

99 97 110 32 121 111 117 32 99 97 110 32 97 32 99 97 110 32 97 115 32 97 32 99 97 110 32 99 97 110 110 101 114 32 99 97 
110 32 97 32 99 97 110 46

第二步:将ASCII码转换成二进制

01100011 01100001 01101110 00100000 01111001 01101111 01110101 00100000 01100011 01100001 01101110 00100000 01100001 00100000 01100011 01100001 01101110 00100000 01100001 01110011 00100000 01100001 00100000 01100011 01100001 01101110 00100000 01100011 01100001 01101110 01101110 01100101 01110010 00100000 01100011 01100001 01101110 00100000 01100001 00100000 01100011 01100001 01101110 00101110 
定长编码的优缺点:定长编码 我的理解是将一串字符 首先转换成ASCII码 然后在转换成计算机所能认识的二进制编码 
定长编码所需要的是固定长度的编码, 而固定长度所需要的数会太长 所以不是很有好。

通信领域中信息的处理2 – 非定长编码

例:can you can a can as a can canner can a can.
第一步:统计每个字母出现的次数

r:1 , s:1 , e:1  ,u:1   ,  y:1 ,.:1  ,  o:1   , c:7  ,   n:8   ,  [ ]:11   ,   a:11

第二步:将出现频率最高的设置为最短

0=a  , 1=[ ]   ,  10=n ,  11=c ,  100=o ,  101=.  , 110=y ,  111=e  , 1000=u  , 1001=s ,  1010=r

第三步:对应的数字进行编码

10 1 10  1 110 100 11010 11 100 1010011 ············
非定长编码的缺点:计算机传值是不会出现空格,而计算机在解码是会出现失误
前缀编码 : 字符的编码都不能是其他字符编码的前缀,符合此要求的编码叫做前缀编码

通信领域中信息的处理3 – 赫夫曼编码

例:can you can a can as a can canner can a can.
第一步:统计每个字母出现的次数

r:1 , s:1 , e:1  ,u:1   ,  y:1 ,.:1  ,  o:1   , c:7  ,   n:8   ,  [ ]:11   ,   a:11

第二步:放入树中

设置编码:左节点为0,右节点为1,字母为对应的节点,数字为对应的权

在这里插入图片描述
所对应的节点为:

111 10 00 01 110010 11000 110100 01 111 10 00 01 10 01 111 10 00 01 10 110110 01 10 01 111 10 11 01 111 10 00 00 110101 
110111 01 111 10 00 01 10 01 111 10 11 110011
针对于定长编码、非定编码以及赫夫曼编码的总结:定长编码如上面例子 长度是396 而且都需要固定长度编码;非定长编码:不会出现定长编码的固定长度,但是在解码时有可能会出现前缀编码相同的两个字符,所以可能会造成解码失误;赫夫曼编码 如上图例子 长度是 122 压缩了70% 在解码时也很少会出现解码失误的情况。

注:计算机在转换二进制编码是不会出现空格的情况 上述例子出现空格 是为了在书写的时候好确认信息

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值