压缩具有已知概率分布的符号的最佳熵编码方案是什么?

时间:2011-05-15 23:03:44

标签: compression information-theory huffman-code

我希望在一长串的通话记录中对user_ids进行编码。占用最多空间的这些记录的部分是呼叫者和接收者的符号。我将创建一个地图,为最活跃的呼叫者分配较短的符号---这将有助于保持文件的整体大小(以及因此I / O时间)。

我事先知道每个符号的使用次数 - 换句话说,我知道相对概率分布。此外,产生的代码是“无前缀”的,例如霍夫曼代码并不重要。那么什么是最好的编码方案,即能够提供最大压缩并且快速实现的编码方案呢?

答案不仅应指向压缩方案,还应指向该编码方案的实现。

2 个答案:

答案 0 :(得分:0)

对于具有已知概率分布的通用无损编码,除了霍夫曼编码,其他“教科书”答案为arithmetic coding

在实践中,有各种各样的实现。见these general-purpose coders。每个都有不同的属性。如果没有进一步的信息,我们无法给您更准确的答案。

答案 1 :(得分:0)

@conradlee:re “在什么情况下算术编码比Huffman编码更好?”就压缩而言,几乎总是如此。如果你有一个符号S,概率为Ps,那么用它编码的理想比特数bs就是-log(Ps)/ log(2)。例如,如果Ps是1/3,那么bs是~1.585位。使用Huffman,您向上或向下舍入到最接近的整数位(因此压缩率会降低)。算术编码将使用小数位来存储它。