维基百科指出,
DEFLATE
算法(由ZIP和GZip压缩格式以及PNG图像格式使用)基于LZ77算法:
Deflate 是一种无损数据压缩文件格式,采用 LZ77 和 Huffman 编码的组合。
LZSS'(LZ77 的衍生版本)维基百科页面另一方面指出,它是各种工具的主要算法,包括 PKZip(使用 ZIP 格式,使用
DEFLATE
算法):
许多流行的存档器,如 PKZip、ARJ、RAR、ZOO、LHarc 使用 LZSS 而不是 LZ77 作为主要压缩算法。
同样,此 GitHub 页面指出:
LZSS算法可以用于很多应用,例如gzip、PKZIP等
与 ZIP 一样,GZip 文件格式也使用
DEFLATE
算法。
并且这里他们指出:
DEFLATE (...) 将 LZ77 或 LZSS 预处理器与后端的 Huffman 编码相结合,可在短时间内实现适度压缩的结果。
所以,如果我理解正确的话,
DEFLATE
可以基于LZ77
或LZSS
。如今 DEFLATE
是如何在 ZIP 文件格式(PKZip 使用)和 GZip 文件格式中实现的?是基于LZ77还是基于LZSS?
LZ77 + 霍夫曼。一直是LZ77。维基百科是错误的。
Deflate 并不像原始论文中所介绍的那样使用 LZ77,因为 LZ77 总是在一个匹配后面跟一个文字,而 Deflate 可以在一个匹配后面跟另一个匹配或文字。