这是一个理论问题,所以期望这里的许多细节在实践中甚至在理论上都是不可计算的。
假设我有一个我要压缩的字符串s
。结果应该是一个自解压二进制文件(可以是x86汇编程序,但它也可以是其他一些假设的图灵完备低级语言),它输出s
。
现在,我们可以轻松地遍历按大小排序的所有可能的二进制文件和程序。让B_s
成为这些二进制文件的子列表,输出s
(当然B_s
是不可计算的)。
由于每组正整数必须最小,因此b_min_s
中必须有一个最小的程序B_s
。
对于什么语言(即字符串集),我们是否知道b_min_s
的大小?也许只是估计。 (我可以构建一些简单的例子,我总是可以计算B_s
和b_min_s
,但我对更有趣的语言感兴趣。)
答案 0 :(得分:16)
这是Kolmogorov complexity,你是正确的not computable。如果是,你可以创建一个长度为n的矛盾程序,它打印出一个带有Kolmogorov复杂度的字符串。 Ñ
显然,您可以为给定的输入绑定b_min_s
。但是,据我所知,大多数这样做的努力都是存在证据。例如,正在进行压缩English Wikipedia的竞争。
答案 1 :(得分:6)
答案 2 :(得分:0)
可能的最大(avarage)压缩率是1:1 可能的输入数量等于输出数量 它必须能够将输出映射回输入 为了能够存储输出,您需要与输入的最小容器大小相同的容器 - 提供1:1的压缩率。
答案 3 :(得分:0)
基本上,您需要足够的信息来重建原始信息。我想其他答案对你的理论讨论更有帮助,但请记住这一点。