压缩随机32位整数:我们离Shannon熵有多近?

时间:2018-02-09 18:45:01

标签: algorithm integer compression

我开发了一种无损压缩算法,压缩 32位整数(未知频率/概率)到每个整数31.95824位(对于较小的值,它的效果要好得多,就像大多数压缩算法都有)。显然,将均匀分布的随机数据压缩到小于未压缩的大小是不可能的。

因此,我的问题是,假设32位整数,哪些无损压缩算法最接近每个整数32位香农熵,假设32位整数?

基本上,我正在寻找一个包含压缩算法的表,以及它们各自用于正,压缩,32位整数的每位整数值。

2 个答案:

答案 0 :(得分:1)

当你说“它对于较小的值工作得更好”时,我假设你有一个从32位整数到可变位长表示的转换,该表示针对某些非均匀预期的值分布进行了优化。然后应用于32位值的统一分布的相同变换平均需要超过32位。还要多少取决于你开始分配的不均匀程度。

所以答案是,当然你可以通过对数字一无所知来完全达到32位。但是,您没有针对您设计的非均匀分布所暗示的应用进行优化。

答案 1 :(得分:0)

标识函数每32位整数需要精确32位,这很难被击败。 (如果你坚持改变数据流,还有许多其他长度保留的双射。)

对我而言,您可能会采用哪种其他标准来推荐一种比这更差的算法,这一点并不明显。也许您认为输入流不是真正的统一样本;相反,它是受限于(或明显偏向于)宇宙的一个子集,但你不是先验知道子集是什么。在这种情况下,流的熵小于1(如果子集的大小上限合理地小于Universe的大小)并且您可能能够实际压缩输入流。 / p>

值得注意的是,除非消息是固定长度的,否则在分子和分母中的熵计算中都需要考虑消息的长度。对于非常长的消息,这通常可以忽略,但如果消息很短,则消息分隔符(或显式长度指示符)的成本可能很高。 (否则,"压缩"到原始大小的103%是对#34;压缩"有点humptydumptyesque定义。)