几乎统一数据的压缩算法

问题描述

我已经看到有关SE的压缩算法的问题,但没有一个完全符合我的需求。显然,真正均匀分布的数据无法压缩,但是我们能接近多远?

我的想法(可能是错误的):我可以想象通过转换数据(以某种方式进行归一化?),您可以强调几乎统一的数据的非均匀性,然后使用该转换后的集合进行压缩,也许与逆变换或其参数。但是也许我完全错了,当数据趋于一致时,它们的性能都非常差?

当我查看(无损)压缩算法列表时,我看不到它们对某些类型的数据的有效性排名,至少在任何具体术语上都没有。有谁知道其中一个来源?

作为背景,我有一个应用程序,其中数据集不是独立的,但是看起来几乎是统一的(大多数符号的频率很低,而没有一个频率很高)。所以我想知道是否有算法可以利用采样依赖性,即使数据频率大多较低。那么,当然,如果有这样一个消息源准确地说明为什么某些压缩算法在此方面可能比其他压缩算法更胜一筹,那将更有帮助。

解决方法

简短的回答是“否”。这样的东西既不存在也不可能存在。

长答案涉及信息论。

对于压缩算法而言,重要的不是说您要指定的内容有多难。您可以说出多少同样可能的话,但是没有。也就是说,如果您有M可能已经说过的可能性,那么您必须发送足够长的信号以指定您说的M中的哪一个。这就需要log_2(M)位来使您清楚地说出了哪一个。

在独立符号流的情况下,每个符号的概率都已知,我们可以算出以相同的可能性发送多少条消息。从而降低了消息的压缩效率。下限是每个发送符号的entropy位。这个下界实际上是通过霍夫曼编码实现的。

为了比霍夫曼编码更好,我们必须在消息中找到一些其他结构。例如,语言通常具有相关性,其中“ h”可能跟在“ t”之后。或在图像中,像素的颜色往往类似于附近像素的颜色。任何这样的结构都会减少我们可能发送的同样可能的消息的数量,并为更好的压缩算法提供了可能性。

但是您尚未描述这种结构。因此,霍夫曼编码是您所能做的最好的事情。而且,如果符号概率彼此接近,则不会给您太多帮助。

对不起。