香农-范诺编码(Shannon–Fano Coding)

news2024/9/23 11:23:46

香农-范诺编码

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

香农-范诺编码

简介

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

算法

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

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

示例

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

符号ABCDE
计数157665
概率0.384615380.179487180.153846150.153846150.12820513

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

在这里插入图片描述
在最终得到的树中,拥有最大频率的符号被两位编码,其他两个频率较低的符号被三位编码。

符号ABCDE
编码000110110111

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/57381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

太强了!GitHub上白嫖的SpringCloud微服务进阶宝典,啃完感觉能吊锤面试官!

自 2014 年起,微服务技术一直火热至今。随着越来越完善的微服务技术栈的发布,以及越来越多的微服务项目实际的落地和上线,使用 Java 技术栈的企业应该都在尝试或者已经落地了各自的微服务项目。同时,通过招聘网站的信息和每次面试…

正确理解线程WAITING状态

正确理解线程WAITING状态 今天来学习下,Java的线程状态,重点讨论下thread.state.WAITING。讨论下线程如何进入此状态,以及它们之间的区别。最后,我们进一步了解java.util.concurrent.locks.LockSupport,它提供了几种用…

【分布式能源的选址与定容】基于非支配排序多目标遗传优化算法求解分布式能源的选址与定容(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

AOP通知获取数据

之前说到了AOP可以对原始方法进行增强,那么AOP是否可以获取到原始方法的数据并对原始方法的数据利用增强方法进行处理呢?我们将从获取参数、获取返回值和获取异常三个方面来研究。 首先,我们可以知道,所有的通知类型都可以获取参数…

微服务框架 SpringCloud微服务架构 10 使用Docker 10.6 容器命令练习

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构10 使用Docker10.6 容器命令练习10.6.1 直接开干10 使用Docker 10.6 容器…

阿里“重推”的Spring+Boot+MVC+CloudAlibaba学习手册,开源下载

Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。Spring更是避免了重复造轮子的工作并跟随着互联网行业的发展做出不断的更新,很多研发人员把spring看作心目中最好的Java项目,没有之一。 可以毫不夸张的…

VS Code 扩展开发如何保持用户视觉体验一致

本文介绍如何在 VS Code 插件的 webview 中加载本地的资源文件,并如何使用 VS Code 自身的 UI 来实现用户视觉体验的一致。 背景 最近想做一个 VS Code 的插件用来简便我使用 VS Code 来编辑 Markdown 博客的体验,在设计插件的过程中,因为需…

计算机毕业论文Java项目源码下载S2SH智慧社区管理系统[包运行成功]

💖💖更多项目资源,最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 《基于S2SH实现的智慧社区管理系统》该项目采用技术jsp、strust2、Spring、hibernate、tomcat服务器、mysql数据库 ,项目含有源码、答…

力扣hot100——第6天:32最长有效括号、33搜索旋转排序数组、34在排序数组中查找元素的第一个和最后一个位置

文章目录1.32最长有效括号1.1.题目1.2.解答2.33搜索旋转排序数组2.1.题目2.2.解答3.34在排序数组中查找元素的第一个和最后一个位置【代码随想录已刷】1.32最长有效括号 参考:力扣题目链接;题解1,题解2 1.1.题目 1.2.解答 这道题目官方的题…

FAT12文件系统

简介 FAT12文件系统是指:在磁盘上规定一种特定的存储格式,这种存储格式高效方便,功能强大,因此形成了统一的规定。 基础知识 具体来说FAT12文件系统为1.44M的软盘设计。1.44M的软盘有2880个扇区,一个扇区有512个字节&…

大数据下一代变革之必研究数据湖技术Hudi原理实战双管齐下-后续

文章目录集成Flink编程示例打包运行CDC入湖概述MySQL 启用 binlog初始化MySQL 源数据表准备Jar包依赖flink读取mysql binlog写入kafkaflink读取kafka数据并写入hudi数据湖调优MemoryParallelismCompaction集成Hive集成步骤Flink同步HiveHive Catalog集成Flink 编程示例 本节通…

[附源码]计算机毕业设计springboot右脑开发教育课程管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

微服务框架 SpringCloud微服务架构 10 使用Docker 10.4 容器命令案例1

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构10 使用Docker10.4 容器命令案例110.4.1 直接开干10.4.2 总结10 使用Docke…

03_openstack之项目及用户管理

目录 一、环境准备 二、项目管理 1、项目介绍 2、创建项目 三、用户管理 1、用户介绍 2、创建用户 一、环境准备 部署openstack私有云环境,步骤:02_openstack私有云部署_桂安俊kylinOS的博客-CSDN博客 以下操作均基于上述环境 二、项目管理 1、…

[附源码]计算机毕业设计springboot在线票务系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

基于采样的规划算法之RRT家族(三):RRT*

RRT算法是边随机产生节点边生长一棵路径树,当这棵树与目标点相遇,便从相遇点回溯到起点得到路径解。对于新产生的随机节点,原始RRT算法将路径树上距离它最近的节点作为它的父节点,并不能保证新节点通过该父节点就是最短路径。并且,就算新节点连接是最优的,也无法保证未来…

快速统计文本数字之和

实例需求:A列到F列为文本数据,每个单元格中包含3个数字,数字之间使用竖线分隔,现需要计算每个单元格中的数字之后。 例如F15单元格内容为10┃5┃18,则需要计算10、5、18三个数字之和,结果为33,…

【RTS】李宇翔 monibuca 讲座 学习

不解码,如何跳帧、追帧。启动工程,方便二次开发 按需引入引擎和插件流媒体应用 监控 : 物联网。转发 :用于会议,里面有很多会控逻辑,不同于流媒体本身。 起源于 FLASH视频会议 cs fms ams ,red5crtmpserver 很多问题 streaming服务器很难开发monaserver 基础上开发monib…

事业编招聘:新华社2023校园招聘正式启动

新华社是党中央一手创办和领导的新闻舆论机构,随着中国人民的革命事业和社会主义建设事业的发展而成长壮大,是一个具有光荣历史和优良传统作风的新闻机构。 新华社作为党中央喉舌、耳目、智库,是党的新闻舆论工作主力军、主渠道、主阵地。 …

【随笔记】分享一下26个常用的IDEA插件

文章目录1. Chinese Language2. Atom Material Icon3. Rainbow Brackets4. Translation5. Codota6. GenerateAllSetter7. GsonFormatPlus8. Alibaba Java Coding Guidelines9. Free Mybatis Tool10. maven-search11. Maven Helper12. CodeGlance Pro13. MyBatisCodeHelperPro14…