LZ77

LZ77は、1977年にジェイコブ・ジヴ (Jacob Ziv) とエイブラハム・レンペル (Abraham Lempel) によって開発されたデータ圧縮アルゴリズム。LZ77を改良したLZSSにハフマン符号化を組み合わせ改良されたDeflateが、圧縮ツールのLHAやGZIPなどに用いられている。LZ77を使っていると書いてあるケースでも、厳密には、ほとんどのケースでLZ77の改良であるLZSSが使われている。

LZ77やLZ78の論文の著者名はZiv and Lempelの順であるが、LZの順で呼ばれることが多い。

 符号化の原理 
データを先頭から順番に符号化していく方式である。
現在注目している位置から始まる記号列が、それ以前に出現していたかを探す。
もし出現していたならば、記号列をその出現位置と長さのポインタに置き換える。
記号列を探す範囲をスライド窓と呼び、これを辞書として使用するので、と呼ばれる。

もともとのLZ77では、記号列を（一致位置、一致長、次の不一致記号）という3つの値に置き換えるが、さまざまな亜種が存在する。
中でもLZSSは、単純で性能もよく、いろいろな応用に使用されている。

 特許 
辞書探索において、ツリーを用いる方法はゼロックスが、ハッシュテーブルを使用する方法はStac社が特許を保持していた8 What about patents on data compression algorithms?。その他、色々な会社・人物が様々な特許を取得した。ただし、特許のほとんどは既に有効期限が切れている。

 参照 

 関連項目 
 LZ78

Category:データ圧縮
Category:アルゴリズム