用于无损压缩的霍夫曼编码

| 我真的需要有关霍夫曼编码的无损压缩方面的帮助。我即将参加考试,需要了解这一点,是否有人知道为了解这一点而编写的简单教程,或者有人可以解释。 考试中的问题可能是: 假设字母为[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 A 0.0 0.6 0.6 碳0.48 0.6 0.12 B 0.552 0.576 0.024 最终的二进制代码字是0.1001,即0.5625。因此需要4位。 (3分) 在霍夫曼编码中,每个符号的码字长度必须为整数。但它 在算术编码中可以是小数。因此,算术编码通常更有效 如上结果所示。 (1分)     
已邀请:
http://zh.wikipedia.org/wiki/霍夫曼编码 如果查看树(右上),您会看到每个父节点是其下两个节点的和。节点上的值是字母的频率。二进制序列中的每一位都是树中的右/左分支。 有帮助吗? 我对算术编码并不了解,但是看起来很聪明。     
霍夫曼树是一种二叉树,其节点表示在流中具有最高分布的值在根附近被压缩,而分布在逐渐减小的值离根越来越远,因此允许将更常见的值编码为较短的位字符串,而不太常见的值编码为较长的字符串。 霍夫曼树的构造如下: 在源流中建立实体表及其分布。 选择表中分布最低的两个条目。 从这两个条目中创建一个树节点。 从表中删除刚刚使用的条目。 向表中添加一个新条目,其中删除了节点和树节点的组合分布。 如果表中剩余多个条目,请转到步骤2。 表中剩余的条目是您的根。     
基本的霍夫曼实现可以。但是,如果您是从头开始构建的,则可能需要在工具箱中使用多个其他数据结构来简化诸如minHeap和bit vector之类的事情。编码和解码的基本算法非常简单。没有与算术编码进行比较的信息。 一个实现例子     

要回复问题请先登录注册