霍夫曼编码平均码长是什么。怎么求?
霍夫曼编码的平均码长就是信息熵,因此它同信息熵的计算方法是一样的。
霍夫曼编码
最佳变长编码
最佳码: 对于某一信源和某一码符号集来说,若有一唯一可译码,其平均码长小于所有其他唯一可译码的平均长度。紧致码 香农(Shannon)费诺(Fano)霍夫曼(Huffma )
霍夫曼编码
在霍夫曼编码算法中, 固定长度的信源输出分组将映射成可变长度的二进制分组。该过程称为定长到变长编码。
其思想是将频繁出现的固定长度序列映射成较短的二进制序列, 而将出现频率较低的固定长度序列映射成较长的二进制序列。
平均码长
一种最优的信源编码方法是信源的平均码长接近或者等于信源的信息熵H(X) 。
霍夫曼编码的步骤
将信源消息符号按其出现的概率大小依次排列 
Example:试为如下信源设计霍夫曼编码
上例中, 平均码长为
霍夫曼编码的平均码长满足如下不等式
如果对长度为n的信源字符序列进行霍夫曼编码(信源的 n 次扩展信源) 而不是对单信源字符的编码, 则有

![哈夫曼编码的平均码长_哈夫曼编码的平均码长怎么计算插图17 \left[\begin{array}{l} X \\ p(x) \end{array}\right]=\left[\begin{array}{ccccccc} x_{l} & x_{2} & x_{3} & x_{4} & x_{5} & x_{6} & x_{7} \\ 0.20 & 0.19 & 0.18 & 0.17 & 0.15 & 0.10 & 0.01 \end{array}\right] \\](https://sigusoft.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
熵 

霍夫曼的编法并不唯一。每次对缩减信源两个概率最小的符号分配“0”和“1”码元是任意的,所以可得到不同的码字。只要在各次缩减信源中保持码元分配的一致性,即能得到可分离码字。不同的码元分配,得到的具体码字不同,但码长
缩减信源时,若合并后的新符号概率与其他符号概率相等,从编码方法上来说,这几个符号的次序可任意排列,编出的码都是正确的,但得到的码字不相同。
不同的编法得到的码字长度
例 单符号离散无记忆信源
单符号信源编二进制哈夫曼码,编码效率主要决定于信源熵和平均码长之比。
对相同的信源编码, 其熵是一样的, 采用不同的编法, 得到的平均码长可能不同。
平均码长越短,编码效率就越高。
编法一的平均码长为
编法二的平均码长为
两种编法的平均码长相同,所以编码效率相同。
哪种方法更好?
定义码字长度的方差 
第二种编码方法的码长方差要小许多。第二种编码方法的码长变化较小, 比较接近于平均码长。
第一种方法编出的5个码字有4种不同的码长;第二种方法编出的码长只有两种不同的码长;第二种编码方法更简单、更容易实现,所以更好。
结论:
在霍夫曼编码过程中,对缩减信源符号按概率由大到小的顺序重新排列时,应使合并后的新符号尽可能排在靠前的位置, 这样可使合并后的新符号重复编码次数减少,使短码得到充分利用。
例: 一信源模型如下, 试对信源符号进行 Huffman编码, 并计算平均码长和编码效率 。若对其2次扩展信源进行编码, 结果如何
解: (1) 不做扩展, 进行单符号Huffuman编码时 编码结果为:
(2)二次扩展信源 

双应的概率为: 
结论:N 越大, 编码效率越大。 某DMS信源如式: ![哈夫曼编码的平均码长_哈夫曼编码的平均码长怎么计算插图59 \left[\begin{array}{l}\mathrm{X} \\ \mathrm{P}\end{array}\right]=\left[\begin{array}{ccc}x_{1} & x_{2} & x_{3} \\ 1 / 2 & 1 / 3 & 1 / 6\end{array}\right]](https://sigusoft.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
![哈夫曼编码的平均码长_哈夫曼编码的平均码长怎么计算插图61 \begin{array}{l} {\left[\begin{array}{c} X^{2} \\ P \end{array}\right]} =\left[\begin{array}{ccccccccc} x_{1} x_{1} & x_{1} x_{2} & x_{1} x_{3} & x_{2} x_{1} & x_{2} x_{2} & x_{2} x_{3} & x_{3} x_{1} & x_{3} x_{2} & x_{3} x_{3} \\ 1 / 4 & 1 / 6 & 1 / 12 & 1 / 6 & 1 / 9 & 1 / 18 & 1 / 12 & 1 / 18 & 1 / 36 \end{array}\right] \end{array} \\](https://sigusoft.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
![哈夫曼编码的平均码长_哈夫曼编码的平均码长怎么计算插图63 \left[\begin{array}{l}\mathrm{X} \\ \mathrm{p}\end{array}\right]=\left[\begin{array}{ccc}x_{1} & x_{2} & x_{3} \\ 1 / 2 & 1 / 3 & 1 / 6\end{array}\right]](https://sigusoft.com/wp-content/themes/justnews/themer/assets/images/lazy.png)


L-Z编码
将信源序列分成一系列以前未出现而且最短的字符串或词组。如,将信源序列列1011010100010…分成1,0,11,01,010,00,10,..注意,每个词组具有如下性质:每个词组有一个前缀在前面出现过;每个词组的长度比其前缀长一个字符。对词组进行如下编码:给出前缀在词组序列中的位置号和最后一个字符的值。L-Z编码先将信源分成不等长的词组然后编码。
设c(n)为信源序列所分成的词组的个数,那么描述词组的前缀的位置需要logc(n) bit, 而词组的最后一个符号需要1bit。上例中,词组的个数为7,那么描述词组的前缀的位置需要3bit。所对应的编码序列为(000,1),(000,0)(001,1) , (010,1) ,(100,0) , (010,0),(001,0)。其中每个括号内的第一个数字表示该词组的前缀的位置序号,第二个数字是该词组的最后一个符号。
L-Z算法主要包括两步:将序列分组,计算词组个数c(n)和描述前缀的位置需要的比特数logc(n);对每个词组,计算前缀位置,构成码字。前缀位置的编码可以是等长码,也可以是变长码。通常在起始位置需要的位数少,而随着词组序号的增长,前缀位置的编码的位数也不断增加。L-Z编码一般用在信源序列长度较大是才有效。
总结
编码的基本概念无失真信源编码:译码错误概率任意小。香农无失真信源编码定理:存在压缩编码的极限。霍夫曼编码:是一种最优的信源编码,某些信源概率分布条件下,可以达到香农信源编码的极限。
参考文献:Proakis, John G., et al. Communication systems engineering. Vol. 2. New Jersey: Prentice Hall, 1994.Proakis, John G., et al. SOLUTIONS MANUAL Communication Systems Engineering. Vol. 2. New Jersey: Prentice Hall, 1994.周炯槃. 通信原理(第3版)[M]. 北京:北京邮电大学出版社, 2008.樊昌信, 曹丽娜. 通信原理(第7版) [M]. 北京:国防工业出版社, 2012. 本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:information-theory】,需要的朋友们自取。或者【AIShareLab】sigusoft 信息论 也可。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/93789.html


