压缩中如何实现冗余?我能从中受益吗?
我猜想它包括将查找表存储两次之类的操作,这样单个缺陷就不会使整个文件的其余部分失效。至于用例,可能是将文件存储在有轻微划痕的 CD 上时?
但是,我个人从未从向 zip 文件添加冗余中获得任何好处,而且我倾向于省略它们,所以我想知道它们在实践中是否真的有用。
答案1
我相信您说的是 LZ 自适应算法。它之所以被称为冗余,并不是因为在构建 zip 文件的过程中有任何东西被重复了。这个术语源于这种压缩方法的工作原理。
为了说明这一点,下面举一个例子。假设我有一份包含以下短语的文档:
It is what it is because that's what it is
如果我想通过冗余使这个短语更短,我会先创建一个包含所有重复单词的词典,就像这样
1it
2is
3what
然后我会将句子改写为
12312becausethats312
如果我想进一步压缩它,我可以将以下内容添加到我的字典中:
312x
12y
这样就变成了
yxbecausethatsx
如您所见,您执行的冗余检查越多,压缩率就越高。但您也增加了损坏的可能性。这是因为随着字典的增长,它变得更容易损坏,如果字典的任何部分损坏,其余部分就无法读取。