Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 向文件中添加数据可以将其压缩更多吗?_Algorithm_Compression - Fatal编程技术网

Algorithm 向文件中添加数据可以将其压缩更多吗?

Algorithm 向文件中添加数据可以将其压缩更多吗?,algorithm,compression,Algorithm,Compression,假设我有一个10MB的文件,可以压缩到5MB。是否存在向文件中添加数据并使其压缩到小于5MB的情况 编辑:为了清楚起见,在文件中添加数据意味着添加数据,而不是在文件中间添加数据。对于原始问题: 对 请注意,每个5MB文件都显示为文件(01)^(41943040)的非连续逐位子序列,其大小为文件大小的两倍,压缩效果非常好。实际上,您可以从4194304001中的每一个中选择一位 这里的诀窍是,从“填充”文件中,无法恢复原始文件。所有5MB文件“填充”到相同的位串 关于你的修订问题: 仍然是“是的”

假设我有一个10MB的文件,可以压缩到5MB。是否存在向文件中添加数据并使其压缩到小于5MB的情况


编辑:为了清楚起见,在文件中添加数据意味着添加数据,而不是在文件中间添加数据。

对于原始问题:

请注意,每个5MB文件都显示为文件
(01)^(41943040)
的非连续逐位子序列,其大小为文件大小的两倍,压缩效果非常好。实际上,您可以从41943040
01
中的每一个中选择一位

这里的诀窍是,从“填充”文件中,无法恢复原始文件。所有5MB文件“填充”到相同的位串

关于你的修订问题:


仍然是“是的”,但就所有实际目的而言,这已经接近“否”。我不认为gzip会发生这种情况。但是,如果使用Burrows-Wheeler变换和游程编码进行压缩,则添加到字符串会改变字符串循环移位的顺序,因此,纯粹是巧合,会产生压缩效果更好的字符串。

使用字典类型压缩,这些模型对于任何给定条目的每个前缀都有一个条目(例如LZW),而其他模型则没有(例如LZMW)。 如果对于后者,例如10^7字节的文件扩展名可以使用比原始文件末尾前缀的任何编码更便宜的编码项,则压缩文件将更短。

(对于LZMW和10^7相同的字节,我希望在编码前两个字节后有两个字节的条目,另一个用于4、8、…2^22。追加(3*2^22-10^7)只需再添加一个“2^22代码”——10^7字节的代码作为一个…)

您的“向文件添加数据”方法非常奇怪。通常,“向文件中添加数据”意味着向文件中添加一些字节块。我想澄清一下,你不在乎数据是如何添加的,只要有一种方法可以让你解压它并取回原始数据(并且知道它的范围是什么)?我越想它,我就越确定答案是“否”。否则,压缩算法将已经为您添加这些数据,并在您不知情的情况下无声地将其删除,以使您获得尽可能小的数据。@MooingDuck:您所说的对Kolmogorov复杂性是正确的,这就是“压缩”的概念,它具有您可以推理的所有优良特性。