Canonical Huffman编码器:编码比特流的内容

时间:2017-01-19 10:36:18

标签: algorithm encoding compression huffman-code text-compression

假设我们有以下规范的霍夫曼代码表。

Symbol    Code-length   Codeword
 A            2          00
 B            2          01
 C            2          10
 D            2          11

现在,我们从输入文件中读取符号,并通过查看上表对其进行编码。但是,很多资源说在规范霍夫曼的情况下我们不应该发送代码字。相反,每个符号的代码长度就足够了。

如果文本文件包含ACCDB,我应该将00 01 10 11或10 10 10 10(相应代码长度的二进制等效值)作为编码比特流发送吗?如果我错了请纠正我,我感谢任何解释。

此外,如果规范的霍夫曼就是这种情况,我们如何解码该比特流以取回原始符号ACCDB(不在解码器中使用霍夫曼树)?

1 个答案:

答案 0 :(得分:0)

这不是规范的霍夫曼代码表,也不是霍夫曼代码,也不是前缀代码。代码长度1,2,3,3超额预订可用位。 1,2,2是一个完整的代码,不允许编码符号。

1,2,3,3是完整且未超额订购的代码,在这种情况下,代码的示例将是0,10,110,111。您可以看到这些代码可以被唯一地解码,读取它们从左到右。