是否存在不可压缩的字符串?

时间:2013-01-01 14:46:26

标签: language-agnostic compression

我想知道是否有一个或多个字符串无法无损压缩。更正式地说:

String为字符串,f(var)为压缩函数,返回压缩版varg(var)解压缩函数,使g(f(var)) = var和{ {1}}一个返回strlen(var)长度的函数,
varString还是strlen(String) < strlen(f(String))

的有效值?

欢迎理论答案,以及不同语言和不同压缩算法的示例。

3 个答案:

答案 0 :(得分:12)

pigeonhole principle 告诉我们,对于任何给定的压缩函数 * ,必须始终至少有一个将被展开的输入字符串。

<小时/> *即真正压缩至少一个输入字符串的函数。

答案 1 :(得分:2)

我希望这个字符串适合账单:“”

答案 2 :(得分:0)

是的并且原因很简单:例如,一个函数是garanty返回一个无损压缩字符串,对于任何输入字符串至少要少一点。这样的功能是否存在,然后通过一遍又一遍地将相同的功能重新应用于其先前的结果,我们保证每次传递至少再连续压缩一个字符串,因此,我们保证能够压缩无损的任何字符串每次都可以长到任意长度的字符串。

显然,这是错误的(一些初始字符串可以给出这样的最终结果,并且很容易找到它们将解压缩算法应用于长度为一位的压缩字符串,但此结果不能扩展到所有未压缩的字符串)因此,这种功能不存在;这意味着对于任何压缩算法,至少存在一个不可压缩的字符串。