我知道这不是一个编码问题但是因为我在这里发现了一些霍夫曼问题,所以我在这里发帖,因为我仍然需要这个用于我的实现。在进行扩展的霍夫曼编码时,我知道你做的例如a1a1,a1a2,a1a3等你做了他们的概率时间,但是,你怎么得到代码字?例如,如下图所示,你如何得到0.6400 = 0和0.0160 = 10101等?
答案 0 :(得分:3)
首先,让我描述一下霍夫曼树是如何工作的,然后我将解释扩展的霍夫曼编码是如何工作的。
有些术语codeword
表示编码输出中已经压缩的一系列位。
像a1,a2或a3这样的术语是我们的输入字符,我们现在可以将它们视为字母。
我们有两条规则,
这两个要求导致了构建二进制文件的简单方法 描述最佳前缀码的树 - 霍夫曼码。
从两个最不可能的字母开始,我们知道他们的代码字将为p0
而p1
代表某些前缀p
,现在我们合并它们并将它们视为一个超级字母,并找到两个最不常见的
再次来信。
重复,直到前缀为空。
是的,现在对于扩展代码,我们只是在您的示例中对一系列字母,对进行分组,并将它们视为更大字母表中的一个字母。