【发布时间】:2011-04-15 11:57:39
【问题描述】:
对于无损压缩的霍夫曼编码,我真的需要帮助。我即将参加考试,需要了解这一点,有没有人知道为理解这一点而制作的简单教程,或者有人可以解释一下。
考试中的问题可能是:
假设字母表为[A,B,C],已知概率分布为P(A)=0.6, P(B)=0.2 和 P(C)=0.2。为简单起见,我们还假设编码器和解码器都知道 消息的长度始终为 3,因此不需要终止符。
通过霍夫曼编码对消息 ACB 进行编码需要多少位?你需要 为每个符号提供霍夫曼树和霍夫曼代码。 (3 分)
通过算术编码对消息 ACB 进行编码需要多少位?你需要 提供编码过程的详细信息。 (3 分)
使用上述结果,讨论算术编码相对于霍夫曼编码的优势。 (1 分)
答案:
霍夫曼代码:A - 1、B - 01、C - 00。 编码结果为 10001,所以需要 5 位。 (3 分)
算术编码的编码过程: 符号 低高范围 0.0 1.0 1.0 一个 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 分)
【问题讨论】:
-
哇,你很擅长猜测你的未来任务是什么。甚至到每个问题的分数!
-
大声笑,这是一个练习题,但讲师说这将是相似的,他只会改变周围的数字。
-
嗯...好吧。你有什么问题?这些都应该包含在你的教科书中。
-
教科书比较繁琐,对初学者没有真正的讲解。我在解决第一个问题时遇到了麻烦,我已经把答案放在上面了。不知道他是怎么得到答案的。
-
如果需要在 Mathematica 上执行此操作,这可能会有所帮助。 academia.edu/19699746/Huffman_Code_on_Mathematica_using_Trees
标签: lossless-compression huffman-code