Elias Gamma编码和上限

时间:2014-05-26 18:42:37

标签: encoding compression

wikipedia上阅读Elias Gamma编码时,我看到它提到:

  

“Gamma编码用于未提前知道最大编码值的应用程序。”

那:

  

“最常用的是编码上限无法预先确定的整数。”

我并不真正理解这些句子的含义,因为无论何时编码此算法,测试数据的最大值或测试数据的范围都是事先已知的。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:3)

就我熟悉Elias-gamma / delta编码而言,第一句话只是说这些压缩方法是 global ,这意味着它不依赖于输入数据来生成代码。换句话说,这些方法在执行压缩之前不需要处理输入(如 local 方法那样);它使用不依赖于数据库信息的函数压缩数据。

对于第二句,它可以作为保证,虽然可能有一些非常大的整数,但编码仍然表现良好(并且将用表示这些值可行的字节数,即它是universal方法。请注意,如果您知道最大整数,则某些方法(如最小哈希值)可以表现得更好。

作为最后一个考虑因素,您提到的same page也指出:

  

Gamma编码用于提前未知最大编码值的应用程序,或压缩小值比大值更频繁的数据

这可以通过生成与原始整数列表的差异列表,并将这些差异传递给相反来获得。例如,在增加数字的列表中,您可以生成:

list: 1 5 29 32 35 36 37
diff: 1 4 24 3  3  1  1

这将为您提供比第一个列表更多的小数字,因此压缩程度更高。