你提这俩都是无损压缩算法。如果局限于此的话,LZMA 的前辈有 LZ77、LZ78,以及后来的变体 LZX、LZW、LZXX、LZWL、LZSS、LZJ、LZO 等等,其开头两个字母 LZ 得名于两个发明者姓氏首字母。二者合体还有一个 DEFLATE。更古早一些的有 Shannon-Fano coding(香农-范诺编码),由信息论之父香农发明,不过因为效率低所以没流行起来。新一点儿的有 PPM,不是音频的那个 PPM 格式,而是 Predicition with partial string matching,RAR 用的就是它。再就还有 BWT(Burrows-Wheeler Transform)算法,其最著名的开源实现就是 bzip2,广泛存在于类 Unix 系统中。这都是比较流行的了,都有一些流行的归档程序(比如 ARC、RAR、ZIP、7z)在使用。更新的一些的就是如今这些互联网巨头们发明的了,比如谷歌的 Zopfli、Brotli;微软的 Project Zipline;Facebook 的 zstd;苹果的 LZFSE 等等等等。P.S. 除了香农-范诺编码这个鼻祖外,上面提到的这些算法绝大部分要么参考了霍夫曼编码的理论,要么本身就依赖于霍夫曼编码,所以无论怎么着都离不开 Huffman。
你提这俩都是无损压缩算法。
如果局限于此的话,LZMA 的前辈有 LZ77、LZ78,以及后来的变体 LZX、LZW、LZXX、LZWL、LZSS、LZJ、LZO 等等,其开头两个字母 LZ 得名于两个发明者姓氏首字母。
二者合体还有一个 DEFLATE。
更古早一些的有 Shannon-Fano coding(香农-范诺编码),由信息论之父香农发明,不过因为效率低所以没流行起来。
新一点儿的有 PPM,不是音频的那个 PPM 格式,而是 Predicition with partial string matching,RAR 用的就是它。
再就还有 BWT(Burrows-Wheeler Transform)算法,其最著名的开源实现就是 bzip2,广泛存在于类 Unix 系统中。
这都是比较流行的了,都有一些流行的归档程序(比如 ARC、RAR、ZIP、7z)在使用。
更新的一些的就是如今这些互联网巨头们发明的了,比如谷歌的 Zopfli、Brotli;微软的 Project Zipline;Facebook 的 zstd;苹果的 LZFSE 等等等等。
P.S. 除了香农-范诺编码这个鼻祖外,上面提到的这些算法绝大部分要么参考了霍夫曼编码的理论,要么本身就依赖于霍夫曼编码,所以无论怎么着都离不开 Huffman。