前缀编码:

如果在一个编码方案中,任何一个编码都不是其他任何编码的前缀(最左子串),则称该编码是前缀编码。

如上图,不等长编码方案1是前缀编码;

分析如下:

在不等长编码方案1中,a,b,c,d为四个字符,其对应编码0,10,110,111中,任意一个编码(四个里面随便选)都不是其他任何编码的前缀,比如选择a的编码0进行比对,你会发现 10,110,111都不以0为前缀(都不以0开头)。

如上图,不等长编码方案2不是前缀编码;

分析如下:

四个编码中,随便选一个,如果选0,会发现01,010都是以0为前缀,所以不符合前缀编码的定义,分析结束。

不知道大家有没有隐约有种意识,等长编码一定是前缀编码!

例如两位编码,00,01,10,11就是,同理,三位、四位...n位。

前缀编码作用 :

前缀编码可以保证对压缩文件进行解码时不产生二义性,确保正确解码。

公号众陆小马获取更多资料。

哈夫曼编码:

对于一颗具有n个叶子的哈夫曼树,若对树中的每个左分支赋予0,右分支赋予1,则从根到每个叶子的路径上,各分支的赋值分别构成一个二进制串,该二进制串就成为哈夫曼编码。

哈夫曼编码的主要思想:

在进行数据压缩时,为了使压缩后的数据文件尽可能短,可以采用不定长编码。

其基本思想是:

未出现次数较多的字符编以较短的编码,为确保对数据文件进行有效的压缩和对压缩文件进行正确的解码,可以利用哈夫曼树来设计二进制编码。

哈夫曼树满足两条性质:

性质1  哈夫曼树是前缀编码。

性质2  哈夫曼树是最有前缀编码。

对于包含n个数据字符的文件,分别以它们出现的次数为权值构造哈夫曼树,则利用该树对应的哈夫曼编码对文件进行编码,能使该文件压缩后对应的二进制文件的长度最短。

前缀编码是什么?哈夫曼编码是什么?相关推荐

  1. 信息论霍夫曼编码c语言,霍夫曼编码

    <信息论与编码>课程实验报告 姓 名 学 号 单 位 专 业 2014 年 12 月 4 日 实验一 一.实验目的 1.理解信源编码的意义: 2.掌握霍夫曼编码的方法及计算机实现: 二.实 ...

  2. 可逼近信道容量编码技术之霍夫曼编码的实现

    可逼近信道容量编码技术之霍夫曼编码的实现 简介 在当今信息爆炸时代,如何采用有效的数据压缩技术来节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视.哈夫曼编码正是一种应用广泛且非常有效 ...

  3. labview霍夫曼编码_为什么霍夫曼编码好?

    7 个答案: 答案 0 :(得分:3) 如果为最常用使用的符号指定较少的数字或位或较短的代码字词,则可以节省大量存储空间. 假设您要为英文字母分配26个唯一代码,并希望根据这些代码存储英文小说(仅限字 ...

  4. 计算机编码问题总结——哈夫曼编码

    我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下计算机中的编码问题,来看第四部分,哈夫曼编码. 哈夫曼树,又叫霍夫曼树.最优二叉树,表示带权路径最短的树,什么意思呢,没听懂...... 唉 ...

  5. 创建霍夫曼树,霍夫曼编码以及使用霍夫曼编码压缩文件

    那么,什么是霍夫曼树(赫夫曼树)呢? 给定n个权值(权值就是每个节点里面存放的数据,但是根据业务需求不同,存放的数据类型有些差别)作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样 ...

  6. 霍夫曼编码实验matlab,哈夫曼编码 MATLAB程序

    clc clear fid=fopen( 'C:\Users\yichao\Desktop\新建文本文档.txt');%打开 txt 文件 [zimu]=fscanf(fid, '%c'); %读取二 ...

  7. 信息论霍夫曼编码c语言,霍夫曼编码C语言

    编译成功 /* Note:Your choice is C IDE */ #include #include #define N 15 #define M 2*N-1 typedef struct { ...

  8. 20172311-哈夫曼编码测试

    20172311-哈夫曼编码测试 哈夫曼编码与哈夫曼树 哈夫曼树 哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树.所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根 ...

  9. 哈夫曼编码压缩率计算_程序员的算法课(8)-贪心算法:理解霍夫曼编码

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/ ...

  10. 程序员的算法课(8)-贪心算法:理解霍夫曼编码

    一.一种很贪婪的算法定义 贪心是人类自带的能力,贪心算法是在贪心决策上进行统筹规划的统称. [百度百科]贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体 ...

最新文章

  1. CV00-01-开篇与环境搭建
  2. 云服务和独立服务器 我们应该怎么选?
  3. 数据结构与算法JavaScript描述——使用队列
  4. windows 10 常用快捷键
  5. 2压缩备份数据库_为什么您的企业需要备份数据库
  6. java接收c语言的结构体
  7. python求导函数的值_python怎么实现函数求导
  8. QQList列表功能实现
  9. MySQL 8.0 表空间机制
  10. linux awk
  11. 字符串 -- 3.15 Length of Last Word -- 图解
  12. POJ3122-Pie
  13. 如何用pdb命令调试python代码
  14. 9种免费在线PDF编辑网站
  15. Excel单元格科学计数法转换和小数点取整
  16. java中暴力是啥方法_[蓝桥杯][历届试题]回文数字 中规中矩的暴力方法(Java代码)...
  17. Nightingale 滴滴夜莺 运维监控-快速开始
  18. 数据分析实习代码总结【进阶】Python
  19. 搭建LDAP服务器详细流程
  20. ubuntu安装postfix+esmtp验证配置

热门文章

  1. Desmos-可能是迄今为止最好用的免费Web端数学图像绘制工具
  2. 建设一个网站需要多少钱?
  3. [BJOI2019] 排兵布阵(分组背包)
  4. cuda8.0 出错:/usr/bin/ld: 找不到 -lGL【转】
  5. 数据生产力崛起:新动能+新治理
  6. 设计一个长方形的类,成员的变量有长与宽,成员函数要求周长与面积,然后进行测试。
  7. php变量名动态生成,PHP中动态创建变量名(可变变量) | 学步园
  8. AD603+MCP4725+STM32-----自动增益控制电路
  9. 实例:泰坦尼克号幸存者的预测
  10. aws 数据库迁移_使用AWS进行数据库迁移