【发布时间】:2013-02-15 01:45:20
【问题描述】:
我已经对整数数据序列进行了排序。 2 个数字之间的最大差值为 3。因此数据看起来像这样:
Data: 1 2 3 5 7 8 9 10 13 14
Differences: (start 1) 1 1 2 2 1 1 1 3 1
有没有比保存差值更好的方法来存储(压缩)这种类型的序列?因为如果我使用基于字典的方法,由于数字 1,2 和 3 的随机性,它无法压缩。如果我使用“PAQ”样式压缩,结果会更好,但仍然不太令人满意。霍夫曼和算术编码器比基于字典的方法差。
有什么方法可以预测吗?
例如对原始数据使用回归而不是存储差异(可能更小或更一致)
或者使用某种基于差异直方图的预测?
或者完全不同的东西......或者根本不可能(在我看来,这是真正的答案:))
【问题讨论】:
-
您可以将每个数字存储为与前一个数字 (1-3) 的距离,但将其存储为 2 位数字。然后,您可以将 4 个数字打包到每个字节中。这样做的缺点是,要确定序列中的任何给定数字,您必须从头开始。你把所有的距离加起来。
-
是的.. 我已经将 4 个数字打包成 1 个字节。我想知道,这个“问题”是否有更好的解决方案
-
您也许可以找出未使用的一半并获得更多空间。但是,如果数字序列真的是随机的,那么您不太可能从压缩算法中获得太多价值,因为它们通常基于某种重复序列的想法,而随机数据通常缺乏这一点。
-
我想真正的问题是,您的数据真的是随机的吗?也许是某种自然现象?还是可能在其中找到一些深层模式?如果找不到模式,就没有可压缩性。
-
它们几乎是随机的......但最常见的值是 1(大约超过 80% 的数据),而不是 2 和 3。没有“可见”模式。这就是为什么我想使用例如神经网络来查找任何内容。或者如果绘制原始数据,它们非常接近线性函数(在excel中进行线性回归后,Reliability = 0.9998)
标签: compression sorted