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

Compression 理论上可能的最大压缩率是多少?,compression,Compression,这是一个理论问题,因此这里的许多细节在实践中甚至在理论上都是不可计算的 假设我有一个要压缩的字符串s。结果应该是输出s的自解压二进制文件(可以是x86汇编程序,但也可以是其他假设的图灵完全低级语言) 现在,我们可以轻松地迭代所有可能的二进制文件和程序,按大小排序。让bus作为输出s的二进制文件的子列表(当然bus是不可计算的) 由于每一组正整数必须有一个最小值,因此在b_s中必须有一个最小的程序b_min_s 对于哪些语言(即字符串集),我们了解b_min_s的大小?也许只是一个估计。(我可以构

这是一个理论问题,因此这里的许多细节在实践中甚至在理论上都是不可计算的

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

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

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

对于哪些语言(即字符串集),我们了解
b_min_s
的大小?也许只是一个估计。(我可以构造一些简单的例子,我甚至可以计算
B_s
B_min_s
,但我对更有趣的语言感兴趣。)

这是,你是正确的。如果是的话,你可以创建一个长度为n的自相矛盾的程序来打印一个复杂度为m>n的字符串

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

可能的最大(平均)压缩率为1:1。
可能输入的数量等于输出的数量。
它必须能够将输出映射回输入。

为了能够存储输出,您需要与输入的最小容器大小相同的容器-提供1:1的压缩率。

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

在他1951年的论文(PDF,1.6MB.Bell Sys.Tech.J(3)p.50-64)中,估计英语的信息密度在每个字符0.6到1.3位之间。

是的,正是这个奖项促使我提出了这个问题。:)但是,此类竞争/尝试仅给出指示,因为它们显示特定示例字符串的下限。他们没有给出任何关于某些给定语言(例如,内容为语法正确的英语的XML)的平均/实际硬限制的答案。以下是我建议进一步阅读的一些好的压缩解释:-在Hutter页面上,有一个链接也很好阅读。“可能的最大(平均)压缩率为1:1。”这到底意味着什么?这意味着,假设您获取所有可能的100字节字符串,并压缩每个字符串。压缩输出的平均长度至少为100字节,因此平均压缩比为1:1或更糟。当然,现实世界的数据不是随机的,所以最好说他所说的是最坏情况下的最佳压缩率。但它试图回答标题中的问题:最大可能的压缩率首先取决于数据。它并没有真正回答问题的主体……嗯,我想知道科尔莫戈罗夫的复杂性是否与香农的信息密度相容。根据我的直觉,香农的信息只是一个比特流。例如,根据Shannon的定义,分形图像的像素流仍然具有较高的信息密度。因此,考虑到这一点,我想知道0.6是否真的是一个好的估计。可能对于不包含任何冗余信息的英文文本,香农信息是关于一般统计情况的陈述,而科尔莫戈罗夫复杂性是单个对象的信息内容。所以在这个例子中,Shannon信息代表了英语文本中的平均字符,而Kolmogorov复杂度是特定文本体的信息内容,例如字符串s。但是Shannon是“信息论”和熵的主要组成部分,最终熵才是问题所在。我回忆起以前的一些非常聪明的程序,比如引导加载程序,它多次重写自己。很可能,为了实现自解压程序的最小总体大小,程序可以以某种方式使用自己的文本——例如,作为常量源。