Huffman编码实验,原理弄懂了,源代码不是很懂,挖个坑,以后用到再细读。
实验原理
在众多的无失真信道编码技术中,Huffman编码是一种有效的获得最佳码的编码技术。它能够充分利用短码,大幅度降低码字的平均码长,从而获得较高的编码效率,在保证码字的可分离性的同时,有效的提高了通信系统的有效性。也正是由于Huffman编码技术的优越性,目前在有关信源编码的许多领域中,Huffman编码作为一项基本技术,得到了极为广泛的应用。
(一)Huffman编码方法
由于目前数字通信中一般都使用二进制符号,因此二进制的Huffman编码技术最为普遍,其编码步骤如下:
1、将信源符号按概率从大到小进行排列;
2、给两个概率最小的信源符号各分配一个码元“0”和“1”,然后将这两个信源符号合并成一个新符号,并用这两个最小的概率之和作为新符号的概率,结果得到一个只有(n-1)个信源符号的新信源(假设原来所需编码的符号数为n),称为信源的第一次缩减信源S1;
3、将缩减信源S1的符号仍按概率从大到小的顺序进行排列,重复步骤2,得到只含(n-2)个符号的缩减信源S2;
4、重复上述步骤,直至缩减信源只剩两个符号为止,此时所剩两个符号的概率之和必为1,将这两个符号各分配一个码元“0”和“1”后,从最后一级缩减信源开始,依编码路径向前返回,就得到各信源符号所对应的Huffman码字。
(二)方差最小的Huffman码字
缩减信源时,若合并后的新符号概率与其他符号的概率相等,从编码方法上来讲,这几个符号的次序可任意排列,编出的码字都是正确的,但不同的编法得到的码字不同,码字长度也不尽相同,从而码长的方差也会不同。若码长的方差较小,则意味着码长变化较小,各个码长都比较接近于平均码长,这样对于信息传输的实现,特别是对传输有实时性要求的时候,会带来很大的便利,因此也就更好一些。
为了得到方差最小的Huffman码字,在对缩减信源按概率从大到小重新排列时,应使合并后的新符号尽可能地排在靠前的位置,这样可使合并后的新符号重复编码次数减少,使短码得到充分