哈夫曼编码

概述:

1.计算每个字符出现的频率,得到频率表。

2.将最小的两个频率进行组合,画出哈夫曼树。

3.合并频率时,要给哈夫曼树的枝干赋值,可以给大的概率赋值1,小的赋值0,也可以相反,但前后必须一致。

核心:给出现频率高的字符较短的编码,出现频率低的字符较长的编码。用来缩短总码长。

例1:

已知频率表:

写出哈夫曼树和编码结果:(哈夫曼树可自己写)

 

 

tip:注意码长的含义,是指码字的位数。

计算平均码长:2×0.3+4×0.08+4×0.11+1×0.37+3×0.14=2.15(位)。而采用等长码长对5个字符进行编码需要的码长是3位。

前缀码:

1.表示最优前缀码的二叉树总是一棵完全二叉树,即树中任一结点都有2个儿子结点。

2.使平均码长达到最小的前缀码编码方案称为给定编码字符集C最优前缀码

3.哈夫曼提出构造最优前缀码的贪心算法,由此产生的编码方案称为哈夫曼编码

哈夫曼编码的代码部分参考:https://blog.csdn.net/kelvinmao/article/details/51347755

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值