实例

一串消息包含A,B,C,D,E共5类符号,其内容为AABBBBAAAACCCCCCCCCEEEEEEDDDDEEEEEEEEEEEEE,分别对其进行香农编码和霍夫曼编码

我们可以看到内容总共含42个符号,其中6个A,4个B,9个C,4个D,19个E,其对应的概率分别为1/7,2/21,3/14,2/21,19/42
可以看到其概率分布如下

A B C D E
1/7 2/21 3/14 2/21 19/42

信息熵计算为2.043

香农编码

编码步骤

(1)将信源符号按概率从大到小顺序排列,为方便起见

(2)按计算第i个符号对应的码字的码长(取整);

(3) 计算第i个符号的累加概率 ;

(4)将累加概率变换成二进制小数,取小数点后 位数作为第i个符号的码字。

实例演示

E C A B D
19/42 3/14 1/7 2/21 2/21


最终编码结果:

E C A B D
00 01 10 110 111
A B C D E
6 4 9 4 19

霍夫曼编码

香农-范诺编码算法并非总能得到最优编码。1952年, David A. Huffman提出了一个不同的算法,这个算法可以为任何的可能性提供出一个理想的树。

香农-范诺编码是从树的根节点到叶子节点所进行的的编码,哈夫曼编码算法却是从相反的方向,暨从叶子节点到根节点的方向编码的。

编码步骤

1.为每个符号建立一个叶子节点,并加上其相应的发生频率
2.当有一个以上的节点存在时,进行下列循环:

  1. 把这些节点作为带权值的二叉树的根节点,左右子树为空
  2. 选择两棵根结点权值最小的树作为左右子树构造一棵新的二叉树,且至新的二叉树的根结点的权值为其左右子树上根结点的权值之和。
  3. 把权值最小的两个根节点移除
  4. 将新的二叉树加入队列中。

3.最后剩下的节点暨为根节点,此时二叉树已经完成。

实例演示

E C A B D
19/42 3/14 1/7 2/21 2/21


E C A B D
0 10 110 1110 1111
A B C D E
6 4 9 4 19

比较

香农编码:

霍夫曼编码:

理论熵:2.043
可以看到霍夫曼编码的压缩率更好

参考资料

香农-范诺编码

图文实例带你了解香农编码和霍夫曼编码相关推荐

  1. labview霍夫曼编码_香农编码与霍夫曼编码

    一.香农-范诺编码 香农-范诺(Shannon-Fano)编码的目的是产生具有最小冗余的码词(code word).其基本思想是产生编码长度可变的码词.码词长度可变指的是,被编码的一些消息的符号可以用 ...

  2. 霍夫曼树和霍夫曼编码以及霍夫曼编码的应用

    文章目录 霍夫曼树介绍 1.1霍夫曼树的定义 1.2霍夫曼树的几个概念 1.3构建霍夫曼树的过程 1.4代码实现霍夫曼树 霍夫曼编码介绍 什么是霍夫曼编码 通信领域的应用 字符串压缩 1.构造霍夫曼树 ...

  3. 算法导论——贪心算法:哈夫曼编码(霍夫曼编码)

    2019独角兽企业重金招聘Python工程师标准>>> package org.loda.greedy;import org.junit.Test; import org.loda. ...

  4. 灵光一现的创造——霍夫曼编码

    点击上方"LiveVideoStack"关注我们 作者 | Alex 技术审校 | 赵军 霍夫曼 声影传奇 #004# 作为一名科学家和老师,我真的非常执着.如果我觉得自己还没有找 ...

  5. 图像处理—霍夫曼编码

    图像压缩编码是专门研究图像数据压缩的技术,就是尽量减少表示数据图像所需要的数据量. 本章主要介绍图像压缩编码的基础知识,重点讲解常用的图像压缩编码方法,如霍夫曼编码.香农编码.算术编码.行程编码和预测 ...

  6. JPEG 编解码器 霍夫曼编码

    arm11中的JPEG 编解码器 霍夫曼编码是一种被广泛应用而且非常有效的数据压缩技术,根据待压缩数据的特征,一个可压缩掉20%~90%.这里考虑的数据指的是字符串序列.要理解霍夫曼编码,先要理解霍夫 ...

  7. 数据结构与算法 / 霍夫曼树、霍夫曼编码和解码

    一. 诞生原因 找出存放一串字符所需的最少的二进制编码. 二. 构造方法 首先统计出每种字符出现的频率,即:概率.权值. 例如:频率表 A:60,    B:45,   C:13   D:69   E ...

  8. 算法科普:有趣的霍夫曼编码

    前言 霍夫曼编码 ( Huffman coding ) 是一种可变长的前缀码.霍夫曼编码使用的算法是 David A. Huffman 还是在MIT 的学生时提出的,并且在 1952 年发表了名为&l ...

  9. 信息论霍夫曼编码c语言,Huffman 信息论与编码 - 下载 - 搜珍网

    霍夫曼编码/Shiyan4/Shiyan.sln 霍夫曼编码/Shiyan4/Shiyan.suo 霍夫曼编码/Shiyan4/Shiyan.v11.suo 霍夫曼编码/Shiyan4/Shiyan4 ...

  10. Python实现英文文本的霍夫曼编码压缩

    霍夫曼编码作为变长码,在已知字符出现的频率的前提下,将频率高的字符用短码表示,频率低的字符用长码表示,实现用最短的码符号完整的表示出一段文本的信息. 例如 对于 这样一文本,进行字符频率统计,部分结果 ...

最新文章

  1. R语言ggplot2可视化绘制多条基本线图(Basic line plot)、使用gghighlight包突出高亮其中的某一条线图(highlight line plot)
  2. visio二次开发___事件篇___事件分类
  3. celery 学习笔记 01-介绍
  4. go mysql recover_golang recover后怎么返回
  5. javascript 基础 转
  6. php ldap 模块,不重新编译为PHP增加LDAP模块的支持
  7. java c 面向对象比较教程_c语言初学指针,对于java面向对象的初理解
  8. Python基础---OS模块 (二)
  9. 第二章 人工智能专题之Python进阶 - Matplotlib库
  10. 软件测试中单元测试,集成测试,系统测试,验收测试的区别
  11. tair ldb存储引擎性能测试方案
  12. 如何鉴别真假苹果原装20W快充头
  13. YUVPlayer: 基于Android平台的YUV视频原始数据播放器
  14. DICOM:开源DICOM服务框架DCM4CHE 安装
  15. 咕咕机_GT1,能放到口袋里的迷你打印机
  16. 前端JS请求网络图片报错GET https://xxx.png 404 (Not Found)的解决办法
  17. [复现]蝉知cms 5.6 前台注入
  18. python实现智能语音翻译
  19. 模拟ATM机存取款管理系统C语言课程设计
  20. Flash--散件与元件相互转换

热门文章

  1. oracle删库语句,oracle删除表语句是什么?_数据库
  2. Django思维导图-模板
  3. 城市综合杆道路智慧路灯多杆合一项目解决方案解析
  4. Agisoft Photoscan/Mateshape 相机参数XML解读
  5. 城市数据派(多尺度地理加权回归理论与应用——关于地理加权回归GWR和多尺度地理加权回归MGWR)
  6. 说课稿模板计算机,计算机说课稿
  7. 2001-2019各省产业结构高级化指数(三产与二产比值)
  8. 国自然的技术路线图?用PPT试试
  9. 在vue中使用html表格
  10. 【解决方法】VMware Horizo​​n View创建虚拟桌面失败,报错:View Composer Agent初始化错误(16):无法激活软件许可证