Lempel-Ziv-Markov chain-Algorithm
LZMAは、改良LZ77圧縮アルゴリズムと、バックエンドにレンジコーダー(Range Coder)を使用している。
辞書圧縮アルゴリズムは、巨大な辞書サイズと、繰り返し使用される一致距離の特別なサポートを持つLZ77の変種を使用し、その出力はレンジコーダーで符号化され、複雑なモデルを使用して各ビットの確率予測を行う。 辞書圧縮で洗練された辞書データ構造を使用して一致列を見つけ、レンジコーダーにより一度に1ビットずつリテラルシンボルとフレーズリファレンスのストリームを生成する。
LZMAより前のほとんどのエンコーダモデルは純粋にバイトベースだった。 LZMAの主な革新は、一般的なバイトベースのモデルの代わりに、リテラルまたはフレーズの各表現のビットフィールドに固有のコンテキストを使用する。これは、一般的なバイトベースのモデルほど簡単だが、関連性のないビットを同じコンテキストで混在させないようにするためである。さらに、古典的な辞書圧縮(zipやgzip形式で使用されているものなど)と比べて、辞書のサイズは、現代のシステムで利用可能な大量のメモリを利用することができる。
Lempel-Ziv-Markov chain-Algorithm(略してLZMA)は、2001年から開発されているデータ圧縮アルゴリズムで、7-Zipアーカイバの7zフォーマットやXZ Utilsのxzフォーマットで使用されている。LZMAは、LZ77に少々類似した辞書式圧縮法(英語版)を使用し、通常bzip2以上の高い圧縮率と伸張速度、および最大4GBのサイズ可変な圧縮辞書を特徴とする。
LZMA2は、圧縮されていないデータとLZMAデータの両方を含むことができ、複数の異なるLZMAエンコーディングパラメータを含むことができる単純なコンテナ形式である。 LZMA2は、任意にスケーラブルなマルチスレッドの圧縮と展開と、部分的に非圧縮データの効率的な圧縮をサポートする。
LZMAを使用するか、サポートするソフトウェア。
GNU Tar ... version 1.20 以降は "--lzma" オプションによりLZMAをサポートした。
Nullsoft Scriptable Install System
Inno Setup
パッチを適用したcramfsやSquashFS
lrzip ("long range zip"または"LZMA rzip")
PyLZMA、Igor PavlovのLZMA SDKへのPythonインタフェース
FreeArc、LZMA SDKへのアーカイバとHaskellインタフェース
Pascal LZMA SDK - Pascalへの移植
UPX
lzip