我真的需要 Huffman Coding for Lossless 压缩方面的帮助。我即将参加考试,需要理解这一点,有没有人知道为理解这一点而制作的简单教程,或者有人可以解释一下。
考试中的问题可能是:
假设字母表为[A, B, C],已知概率分布为P(A)=0.6,P(B)=0.2,P(C)=0.2。为简单起见,我们还假设编码器和解码器都知道消息的长度始终为 3,因此不需要终止符。
使用霍夫曼编码对消息 ACB 进行编码需要多少位?您需要为每个符号提供 Huffman 树和 Huffman 代码。(3 分)
通过算术编码对消息 ACB 进行编码需要多少位?您需要提供编码过程的详细信息。(3 分)
使用上述结果,讨论算术编码相对于霍夫曼编码的优势。(1 分)
答案:
霍夫曼码:A - 1, B - 01, C - 00。编码结果是10001,所以需要5位。(3 分)
算术编码的编码过程: Symbol Low high range 0.0 1.0 1.0 A 0.0 0.6 0.6 C 0.48 0.6 0.12 B 0.552 0.576 0.024 最终二进制码字为0.1001,即0.5625。因此需要 4 位。(3 分)
在霍夫曼编码中,每个符号的码字长度必须是整数。但它在算术编码中可以是分数。因此,算术编码通常比霍夫曼编码更有效,如上图所示。(1 分)