首页 生活常识

huffman编码原理(一种有趣的编码)

日期:2024-05-02 16:01:30   编辑:罗哥软件开发 

什么是哈夫曼编码?

哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。

哈夫曼编码的原理

哈夫曼编码的基本思路:输入一个待编码的串,首先统计串中各字符出现的次数,称之为频次,假设统计频次的数组为count[],则哈夫曼编码每次找出count数组中的值最小的两个分别作为左右孩子,建立父节点, 循环这个操作2*n-1-n次,这样就把霍夫曼树建好了,建树的过程需要注意,首先把count数组里面的n个值初始化为霍夫曼树的n个叶子节点,他们的孩子节点标号初始化为-1,父节点初始化为他本身的标号。接下来是编码,每次从霍夫曼树的叶子节点出发,依次向上找,假设当前的节点标号是i,那么他的父节点必然是myhuffmantree[i].parent,如果i是myhuffmantree[i].parent的左节点,则该节点的路径为0,如果是右节点,则该节点的路径为1。当向上找到一个节点,他的父节点标号就是他本身,就停止。

哈夫曼编码的具体步骤

1、准备待编码的字符串;

2、统计字符串中每个字符出现的次数;

3、根据上面的数组,生成节点;

4、构建霍夫曼树,每次删除链表中的两个节点,生成一个新节点,并将这个节点重新插入到链表合适位置;

5、通过前序遍历,求出每个字符的二进制编码,同样设置一个长度为256的数组,下标为字符对应的ASCII码,没出现的字符编码为null,不考虑;

6、根据求出的二进制编码替换原来的每个字符,得到整个字符串对应的二进制编码;

7、将二进制编码按照没8位生成一个新字符,最后剩的不足8位的在后面补上count个0,计算一个新字符,补0的个数解码时需要使用;

8、将生成的新字符替换二进制编码字符串,即可得到编码后的内容,长度将在一定程度变短;

哈夫曼编码的特点

1、哈夫曼编码方式保证了概率大的符号对应短码,概率小的符号对应长码,充分利用了短码;

2、哈夫曼是一种即时码:由于代表信源符号的节点都是终端节点,因此其编码不可能是其他终端节点对应的编码的前缀,即哈夫曼编码所得的码字为即时码;

3、哈夫曼编码是一种分组码,各个信源符号都被映射成一组固定次序的码符号;

4、哈夫曼编码是一种唯一可解的码,任何符号序列只能以一种方式译码;

哈夫曼编码的实现

你感兴趣的

纯牛奶做的最简单的甜品,口感香甜,一出炉孩子连吃5个还嫌少

原材料:冷冻蛋挞皮16个,纯牛奶100克,淡奶油200克,鸡蛋1个,白砂糖50克,芒果肉80克做法:1:各式原材料,称重备用。(没有淡奶油的,可以全部换成纯牛奶,再加10克炼奶)2:蛋挞皮,充分解冻后一一排放烤盘中。3:容器中倒入纯牛奶和白砂糖,一直不停的搅拌至白砂糖融化。(建议用手动打蛋器)4:加

大理鹤庆特色美食——糯米血肠

大理鹤庆人民杀了猪的以后会制作非常多的美食,生皮、吹肝、猪肝鲊、香腊肠、猪肺豆腐汤......今天我们要说的是糯米血肠,糯米血肠味道鲜、香、麻、糯。糯米血肠可煎可蒸,色泽油亮,异香扑鼻,脍炙人口,深得人们的喜爱。制作方法材料:鲜猪血、糯米、花椒粉、草果粉、盐、猪肠子制作方法:将糯米清洗干净泡一夜。将

五花肉烧油豆腐的做法 肥而不腻,油豆腐吸收五花肉的香味,汁液饱满

五花肉洗干净切成小块,冰糖适量、桂皮适量、八角适量、干红辣椒适量、大蒜生姜也适量还有豆豉也适量,没拍进来油豆腐撕开一个口子,方便入味大蒜拍几下就行,不用切碎。生姜切片锅内倒入清水,放入姜片,倒入适量料酒去腥味水开倒入五花肉焯水,撇去血水浮沫捞出过凉水沥干水份,一定要沥干水分,不然有你好看锅中少量油烧

南瓜稀饭先放米还是先放南瓜 南瓜粥南瓜要去皮吗

南瓜粥,南瓜饼、南瓜水饺、焗南瓜,各种各样用南瓜做的美食,三天两头轮换着吃。那么熬南瓜粥什么时候放南瓜?南瓜粥南瓜要去皮吗?南瓜粥先放南瓜还是先放米建议先放米。建议在做南瓜粥的时候先放米再放南瓜,一方面是因为米比南瓜更难熟,如果米后面才放的话,吃起来可能会出现夹生的情况,并且南瓜中含有较多的维生素C

茄条粉条怎么做 ?家常风味茄子烧粉条,普通食材口味浓郁

主料,茄子粉条。配料.香葱切段调料. 耗油,面酱,烧烤酱,番茄酱各适量。口味,酱香味浓操作方法1,茄子改一下刀切条型。上锅煎至变色即可,不要过于太瘦。煎好备用。2,先把粉条加适量老抽上色炒出备用,加适量油避免粘连。3,下调料炒出香味,加适量水,放入茄子煮熟入味。加糖适量提鲜。4,汤汁浓稠时加粉条香葱

常见海鲜简介篇之,白蛤

白蛤学名为四角蛤蜊,是我国沿海常见的底栖经济贝类,肉细味美、营养丰富。一般主要作为做汤的材料。未到特别鲜美!鲜活的白蛤刚出滩的鲜活白蛤白蛤的采捕季节应在春冬、初夏或秋季。采捕方法可用脚踩或耙子耙,贝苗受踩受耙露出滩面而拾之。运输日期应根据当时气温高低,在耐干范围内运到,运输中最理想的是用筐或草包装运