理论上可能的最大压缩率是多少?

时间:2010-07-16 03:16:53

标签: compression

这是一个理论问题,所以期望这里的许多细节在实践中甚至在理论上都是不可计算的。

假设我有一个我要压缩的字符串s。结果应该是一个自解压二进制文件(可以是x86汇编程序,但它也可以是其他一些假设的图灵完备低级语言),它输出s

现在,我们可以轻松地遍历按大小排序的所有可能的二进制文件和程序。让B_s成为这些二进制文件的子列表,输出s(当然B_s是不可计算的)。

由于每组正整数必须最小,因此b_min_s中必须有一个最小的程序B_s

对于什么语言(即字符串集),我们是否知道b_min_s的大小?也许只是估计。 (我可以构建一些简单的例子,我总是可以计算B_sb_min_s,但我对更有趣的语言感兴趣。)

4 个答案:

答案 0 :(得分:16)

这是Kolmogorov complexity,你是正确的not computable。如果是,你可以创建一个长度为n的矛盾程序,它打印出一个带有Kolmogorov复杂度的字符串。 Ñ

显然,您可以为给定的输入绑定b_min_s。但是,据我所知,大多数这样做的努力都是存在证据。例如,正在进行压缩English Wikipedia的竞争。

答案 1 :(得分:6)

答案 2 :(得分:0)

可能的最大(avarage)压缩率是1:1 可能的输入数量等于输出数量 它必须能够将输出映射回输入 为了能够存储输出,您需要与输入的最小容器大小相同的容器 - 提供1:1的压缩率。

答案 3 :(得分:0)

基本上,您需要足够的信息来重建原始信息。我想其他答案对你的理论讨论更有帮助,但请记住这一点。