首页 > 编程语言 >算法——格雷编码、霍夫曼编码

算法——格雷编码、霍夫曼编码

时间:2023-07-14 13:11:56浏览次数:42  
标签:编码 二进制码 哈夫曼 格雷 路径 霍夫曼 节点

格雷编码
当 n=0 时,格雷码序列为 [0]。
将n-1编码翻转,翻转部分的n-1位设置位1, 获得n位编码。

霍夫曼编码
那么为什么通过哈夫曼编码后得到的二进制码不会有前缀的问题呢?
这是因为在哈夫曼树中,每个字母对应的节点都是叶子节点,而他们对应的二进制码是由根节点到各自节点的路径所决定的,正因为是叶子节点,每个节点的路径不可能和其他节点有前缀的关系。(联想前缀树

为什么通过哈夫曼编码获得的二进制码短呢?
因为哈夫曼树是带权路径长度最短的树,权值较大的节点离根节点较近。而带权路径长度是指:树中所有的叶子节点的权值乘上其到根节点的路径长度,这与最终的哈夫曼编码总长度成正比关系的。对于第二种方式的编码,我们也可以按0左1右的规则构成一棵二叉树,但显然他没有按权值高的节点离根节点近的原则去构建二叉树,带权路径长度更长,二进制码也更长。

————————————————
版权声明:本文为CSDN博主「von Libniz」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Demon_LMMan/article/details/115789360

参考链接
格雷编码
哈夫曼编码(Huffman Coding)多图详细解析

标签:编码,二进制码,哈夫曼,格雷,路径,霍夫曼,节点
From: https://www.cnblogs.com/sanguoasd/p/17189464.html

相关文章

  • 多通道cPCI接口值编码器信号采集
    可同时实现与4路 ENDAT2.2值码盘数据通讯,读取25位或29位等精度的码盘位置信息。l  支持ENDAT2.2标准l  通讯距离达30米以上l  支持PCI和CPCI接口l  双V68接口l  支持常用25位或29位码盘及其它标准ENDAT2.2码盘l  支持由板卡向码盘供电l  支持定制化修改FPGA......
  • 学习霍夫曼编码
    霍夫曼编码广泛用于数据压缩算法,其重要性不言而喻。内容:写一个程序读ASCII文件,统计各字符的频率并制定霍夫曼编码表,最后将此文件的内容根据编码表翻译为二进制文件,计算压缩率。代码清单:#include...typedefstruct{floatweight;intparent,lc,rc;}node;#define......
  • redis数据结构编码优化(1)
    redis数据结构内部编码优化(1)Redis可以通过内部编码规则来节省空间。Redis为每种数据类型提供了两种内部编码方式。以散列类型为例,散列类型是通过散列表实现的,这样就可以实现o(1)时间复杂度的查找、赋值操作,然而当键中元素很少的时候,o(1)的操作并不会比o(n)有明显的性能提高,所以这......
  • Media Encoder 2023-视频编码软件mac/win版
    AdobeMediaEncoder2023是Adobe公司推出的一款专业的媒体编码和转换软件。作为AdobeCreativeCloud套件的一部分,它与其他Adobe创意应用程序(如PremierePro、AfterEffects)无缝集成,提供了一个强大的工具集,用于优化、转换和编码各种媒体文件。→→↓↓载MediaEncoder2......
  • NV21、NV12、YV12、RGB、YUV、RGBA、RGBX8888等图像色彩编码格式区别
    常用图像颜色编码格式NV21、NV12、YV12、RGB、YUV、RGBA、RGBX8888都是常见的图像颜色编码格式,它们之间的主要区别在于色彩空间和数据排列方式。NV21:NV21是Android系统使用的一种图像颜色编码格式,它采用的是YUV4:2:0的采样方式,意味着垂直方向上每两个像素采样一次,水平方向上每个像......
  • 谷歌浏览器Charset扩展程序(解决Google浏览器没有编码的问题)
    较新的谷歌浏览器没有编码这一项,可以选择添加插件的方式,如果无法访问chrome应用商店,请看本文最后的链接下载。将下载好的扩展程序解压,并添加该文件夹。就能看到Charset了。 可以设置了。 下载链接:链接:https://pan.baidu.com/s/1qy53aI6AgCuXUEB0fAb4aQ提取......
  • SQ工具|8|字段顺序编码|同项顺序编码|自西向东,自北向南编码
    顺序编码主要解决类似BSM等类字段按照12345顺序编码以及同项目顺序编码。 一:顺序编码的实现①使用字段计算器及OID字段进行更新 例:如果想在index中填充从1开始依次加1的值,那么在字段计算器中将index计算为FID+1即可,在源文件为shp文件时,OID一直保持从0开始递增的值。但是在......
  • Datapath编码方式
    (5条消息)Datapath综合代码规范(Verilog)_沧海一升的博客-CSDN博客Datapath综合的编码准则-Synopsys-百度文库(baidu.com)......
  • Python | 认识编码
    编码(Encoding)是将字符转换为计算机可以处理的二进制数据的过程。在计算机中,所有的文本都是以二进制形式存储的,因此需要使用编码将文本转换为二进制数据。Python中的编码指的是将字符串转换为字节串(bytes)的过程,或将字节串转换为字符串的过程。编码与解码在Python中,字符串是以......
  • Java版人脸跟踪三部曲之三:编码实战
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本篇概览作为《Java版人脸跟踪三部曲》系列的终篇,本文会与大家一起写出完整的人脸跟踪应用代码前文《开发设计》中,已经对人脸跟踪的核心技术、应用主流程、异常处理等方......