我想知道是否存在一种当前常用的压缩算法,它包含一个固定点,即一个身份文件。
为了解释,让我们调用C : byte[] -> byte[]
一个代表压缩算法的函数。我想知道是否存在(以及它是什么,如果有可能在合理的时间内确定)文件f
,以便
C(f) = f
也就是说,一个文件,当被一个现在普遍使用的合适的,广为人知的压缩算法压缩时,会产生自己的结果。
你知道这种现象吗?答案 0 :(得分:4)
是的!这是quine问题的变体。
答案 1 :(得分:3)
警告:相当迂腐的回答。
在许多情况下,D(f)= f(D被定义为减压)。但是,压缩并不是精确定义的。对于大多数压缩算法,压缩算法的不同实现将给出不同的输出文件(具有不同的大小)。考虑两个程序,1和2.对于完全互操作性,D1(F)必须等于所有有效F的D2(F)。类似地,D2(C2(f))== D2(C1(必须) F))== D1(C1(F))== D1(C2(F)),对于所有有效的F.然而,完全没必要C1(F)== C2(F),这实际上很少案件。
所以,你不太可能,如果你真的压缩这样的quines,最终得到相同的文件,除非你使用相同的程序这样做用于生成它(这是不可能的,因为这样的quines通常手工制作,C(F)从未测试过。)
虽然有可能(实际上是微不足道的!)为某些F生成一个C(F)== F的程序,但大多数人倾向于指出更为明确的D(F)的情况。 == F(因为D1(F)== D2(F),对于F格式的所有有效,兼容的解压缩,假设F有效)。
所以,有可能出现C(F)== F的情况,但一般来说这是一个错误的问题,你应该问一下D(F)== F ...其他人的情况回答了提出的问题。