香农-范诺编码

  • 香农-范诺编码
    • 简介
    • 算法
    • 示例

香农-范诺编码

简介

香农-范诺编码(Shannon–Fano Coding)是一种基于一组符号集及其出现的或然率(估量或测量所得),从而构建前缀码的技术。
一般过程:符号从最大可能到最少可能排序,将排列好的信源符号分化为两大组,使两组的概率和近于相同,并各赋予一个二元码符号0和1。只要有符号剩余,以同样的过程重复这些集合以此确定这些代码的连续编码数字。依次下去,直至每一组的只剩下一个信源符号为止。当一组已经降低到一个符号,显然,这意味着符号的代码是完整的,不会形成任何其他符号的代码前缀。

算法

Shannon-Fano的树是根据旨在定义一个有效的代码表的规范而建立的。实际的算法很简单:

  1. 对于一个给定的符号列表,制定了概率相应的列表或频率计数,使每个符号的相对发生频率是已知。
  2. 排序根据频率的符号列表,最常出现的符号在左边,最少出现的符号在右边。
  3. 清单分为两部分,使左边部分的总频率和尽可能接近右边部分的总频率和。
  4. 该列表的左半边分配二进制数字0,右半边是分配的数字1。这意味着,在第一半符号代都是将所有从0开始,第二半的代码都从1开始。
  5. 对左、右半部分递归应用步骤3和4,细分群体,并添加位的代码,直到每个符号已成为一个相应的代码树的叶。

示例

五个可被编码的字母有如下出现次数:

符号 A B C D E
计数 15 7 6 6 5
概率 0.38461538 0.17948718 0.15384615 0.15384615 0.12820513

从左到右,所有的符号以它们出现的次数划分。在字母B与C之间划定分割线,得到了左右两组,总次数分别为22,17。这样就把两组的差别降到最小。通过这样的分割, A与B同时拥有了一个以0为开头的码字, C,D,E的码子则为1。随后,在树的左半边,于A,B间建立新的分割线,这样A就成为了码字为00的叶子节点,B的码字为01。经过四次分割,得到了一个树形编码。


在最终得到的树中,拥有最大频率的符号被两位编码,其他两个频率较低的符号被三位编码。

符号 A B C D E
编码 00 01 10 110 111

最终的平均码字长度(平均比特率)=((15+7+6)*2bit+(6+5)*3bit)/39=2.28bit。

香农-范诺编码(Shannon–Fano Coding)相关推荐

  1. java实现.费诺编码_香农费诺编码的matlab实现.doc

    香农费诺编码的matlab实现.doc 信息论与编码实验香农费诺编码的matlab实现学院班级-姓名学号摘要 用预先规定的方法将文字.数字或其他对象编成数码,或将信息.数据转换成规定的电脉冲信号.编码 ...

  2. 香农码字matlab,香农--费诺编码的matlab实现

    香农--费诺编码的matlab实现 信息论与编码实验香农 --费诺编码的 matlab 实现学院:------班级:-----姓名:----学号:----摘要:用 预 先 规 定 的 方 法 将 文 ...

  3. 香农费诺编码 c语言实现,信息论课程设计(香农、费诺编码)

    <信息论课程设计(香农.费诺编码)>由会员分享,可在线阅读,更多相关<信息论课程设计(香农.费诺编码)(34页珍藏版)>请在人人文库网上搜索. 1.华北科技学院信息论基础课程设 ...

  4. 香农费诺编码 c语言实现,对于香农编码、费诺编码和哈夫曼编码,编码方法惟一的是()。...

    问题标题 对于香农编码.费诺编码和哈夫曼编码,编码方法惟一的是(). 2019-8-15来自ip:15.170.14.227的网友咨询 浏览量:533 手机版 问题补充: 题目类型:[填空题] 对于香 ...

  5. CN_@物理层@信噪比@分贝单位@奈奎斯特定理@香农公式@常用编码方式(曼彻斯特编码/差分曼彻斯特编码)波形图

    文章目录 CN_@信噪比@分贝单位@奈奎斯特定理@香农公式@常用编码方式(曼彻斯特编码/差分曼彻斯特编码)波形图 通信基础概念 数据 (data) 信号 (signal) 基带信号 模拟信号 (ana ...

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

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

  7. 图像压缩编码——香农/哈夫曼编码

    图像压缩编码--香农/哈夫曼编码 一.信息熵 二.香农-范诺编码 2.1 香农-范诺编码简述 2.2 特例详解 三.哈夫曼编码 3.1 哈夫曼编码简述 3.2 特例详解 四.RGB图像压缩 Endin ...

  8. 计算信源熵和香农编码C语言,信息论与编码课程设计报告-统计信源熵与香农编码.pdf...

    信息论与编码课程设计报告 设计题目: 统计信源熵与香农编码 专业班级 电 信 12-06 学 号 学生姓名 指导教师 教师评分 2015 年 3 月 30 日 目 录 - 0 - 一.设计任务与要求 ...

  9. 克劳德・香农(Claude Shannon)于1937年发表《对继电器和开关电路中的符号分析》

    1911年:6月15日,华尔街金融投资家弗林特(C.Flent)投资霍列瑞斯的制表机公司,成立了全新的CTR公司,但公司创立之初并没有涉足任何电子领域,反而生产诸如碎纸机或者土豆削皮机之类的产品. 1 ...

最新文章

  1. 别再乱打日志了,这样才是定位 bug 打日志的方式!
  2. Nginx——location配置
  3. python伪造邮件发件地址_python写一个邮箱伪造脚本
  4. MQTT之mosquitto_passwd命令使用
  5. ASP.NET AJAX入门系列(9):在母版页中使用UpdatePanel
  6. Nand Flash基础知识与坏块管理机制的研究
  7. 自定义GrildView实现单选功能
  8. 【Lintcode】018.Subsets II
  9. freebsd java 能用吗_在FreeBSD 4.9下安装JAVA环境
  10. 解决Docker容器时区不一致的问题
  11. linux redis客户端怎么使用,linux 下安装redis并用QT写客户端程序进行连接
  12. ubuntu下安装ettercap
  13. vue 项目路由配置
  14. vdbench(一)
  15. c语言炉石传说测试数据库,炉石传说:王师傅微博分享算法入门题 网友:快把C语言播完吧!...
  16. maven - filtering标签
  17. mysql ndb集群_MySQL集群 NDB 7.5介绍
  18. Nginx 配置问题 server directive is not allowed here in /etc/nginx/nginx.conf:69
  19. 酷派android最新版本,酷云手机版下载
  20. Mac Raw 恢复|还原Raw格式硬盘或Raw分区数据恢复

热门文章

  1. 人工智能 知识总结
  2. 【ESD专题】ESD和EOS有什么差异?
  3. Spring源码解析(一)---spring源码的下载编译
  4. Opencv中的convertTo
  5. 2021年高考安庆10中成绩查询,2021年安庆高中学校排名及录取分数线排名
  6. Oracle表数据的更新
  7. 组件封装 - steps组件
  8. ClearCase 介绍 1
  9. 基于Python的二维有限元声波方程正演计算
  10. 【XSY2515】管道(pipe)(最小生成树+倍增lca)