首页 > 其他分享 >Huffman编码

Huffman编码

时间:2022-10-10 15:33:59浏览次数:45  
标签:编码 前缀 哈夫曼 字符 000 字串 Huffman


§5. 哈夫曼(Huffman)编码

哈夫曼编码是用于数据文件压缩的一个十分有效的编码方法,其压缩率通常在20%

~90%之间。哈夫曼编码算法使用字符在文件中出现的频率表来建立一个0,1串,以表

示各个字符的最优表示方式。下表给出的是具有100,000个字符文件中出现的6个不同

的字符的出现频率统计。

                表 5.1  字符出现频率表

不同的字符

a

b

c

d

e

f

频率(千次)

45

13

12

16

9

5

定长码

000

001

010

011

100

101

变长码

0

101

100

111

1101

1100

   

如果采用定长码,则每个字符至少需用三位,该文件总共需要300,000位;如果采用

上面所列变长码,则该文件需用

(45×1+13×3+12×3+16×3+9×4+5×4)×1000=224,000位,

总码长减少了25%。

一般的编码都是沿一个方向连续地写下0,1子串,比如从左到右、从上到下。解码

时也是以同样的方向逐字地搜索。为了使解码唯一,必须使用一个规则。前缀码即是一

种规则,它要求表示任何一个字符的0,1字串都不能是表示另一个字符的0,1字串的前

部。比如,若用01表示字符a,则表示其它字符的字串不能是具有形式:01可以

用一棵二叉树来表示前缀编码的数据结构。用树叶代表给定的字符,并将给定字符的前

缀码看作是从树根到代表该字符的树叶的一条道路。代码中每一位的0或1分

标签:编码,前缀,哈夫曼,字符,000,字串,Huffman
From: https://blog.51cto.com/u_15815923/5743800

相关文章

  • 图像课设Huffman编码
         它是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时......
  • 字符编码
    计算机是由美国人发明的,所以美国人要把他们使用的语言字符告诉计算机,由计算机进行存储,他们将使用的小写字母、大写字母、符号、数字进行边编排,每个对应一个数字,我们叫一个......
  • 纠错编码-海明码计算与校验原理
    简单介绍海明码是一种纠错编码,也就是发送海明码给接收端后,如果传输过程出错,接收端根据收到的码的特征,可以判断出是否出错,并且知道如何纠正出错的位(bit)。接下来介绍给出......
  • Python中使用Mysql(编码实践)
    文档或者看源码​​http://mysql-python.sourceforge.net/MySQLdb-1.2.2/public/MySQLdb-module.html​​开篇在上一篇Python中使用Mysql(安装篇)中,我们为Python安装了支持My......
  • 行程压缩编码
    行程压缩编码RLE(RunLengthEncoding),是一种无损压缩算法。算法特点:简单、易实现、压缩和解压缩效率高。利用控制字节的最高位来标识是否进行了压缩:最高位是1时,后7位......
  • go控制台输出乱码-go执行命令输出乱码-编码bytes为gbk字符串
    go控制台输出乱码|go执行命令输出乱码|编码bytes为gbk字符串1、问题描述使用go运行ping命令时,输出乱码,现象如下代码packagemainimport("fmt""os/exec"......
  • 闪存——磨损均衡、垃圾回收、数据压缩、纠错编码
    1.闪存如图所示,闪存由多个颗粒(Die)组成,每个颗粒由多个分组(Plane)组成,每个分组由多个块(Block)组成,每个块由多个页(Page)组成。块是擦除的基本单位。页是读写的基本单位。当一个......
  • 编码之ASCII,UTF-8(Unicode),GBK,GB2312
    编码之ASCII,UTF-8(Unicode),GBK,GB2312编码计算机中的编码,通俗的讲就是字符怎样在计算机中的表示和存储。要弄明白编码,就要清楚这里的表示和存储这两个概念:表示,也就是说的各......
  • 哈夫曼编码
    背景假如我们要传输一段文本,比如“hello”,怎么办?最容易想到的方法是,直接依次传输每个字符的Unicode,每个字符都用8个比特来传输。这样就需要5*8=40个比特来传输。但是如果......
  • 【Java基础】字符串、字符流中的编码解码问题、字符流写数据的5种方式、字符流读数据
    目录​​一、字符串中的编码解码问题​​​​二、字符流中的编码解码问题​​​​三、字符流写数据的5种方式​​​​四、字符流读数据的2种方式​​​​五、字符流复制Java......