LZ77
読み方:エルゼットナナジューナナ
LZ77とは、1977年にAbraham LempelとJacob zivによって開発されたデータ圧縮アルゴリズムの名称である。「辞書圧縮」のベースとなったアルゴリズムで、LHAやGZIPなどに用いられている。
データの中に含まれる記号列が、それ以前に出現していたかを探し、仮にすでに出現していた場合、その記号列を出現位置と長さの値に置き換える仕組みである。また、スライド窓と呼ばれる記号列を探す際の限定された範囲があり、これを辞書として用いることから、辞書式圧縮法と呼ばれる。
具体的には、英文の文字列の中に、「abcde」という単語が、すでに、英文の先頭から10文字目に登場していた場合、先頭から10文字目という位置の情報である「10」と、先頭から10文字目の5文字に一致しているという長さの情報の「5」に置き換える。これにより、「abcde」という文字列を、「10,5」といった具体に省略して記すことが可能になる。
LZ77
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/03 22:32 UTC 版)
ナビゲーションに移動 検索に移動LZ77は、1977年にジェイコブ・ジヴ (Jacob Ziv) とエイブラハム・レンペル (Abraham Lempel) によって開発されたデータ圧縮アルゴリズム。LZ77を改良したLZSSにハフマン符号化を組み合わせ改良されたDeflateが、圧縮ツールのLHAやGZIPなどに用いられている。LZ77を使っていると書いてあるケースでも、厳密には、ほとんどのケースでLZ77の改良であるLZSSが使われている。
LZ77やLZ78の論文の著者名はZiv and Lempelの順であるが、LZの順で呼ばれることが多い。
符号化の原理
データを先頭から順番に符号化していく方式である。 現在注目している位置から始まる記号列が、それ以前に出現していたかを探す。 もし出現していたならば、記号列をその出現位置と長さのポインタに置き換える。 記号列を探す範囲をスライド窓と呼び、これを辞書として使用するので、辞書式圧縮法と呼ばれる。
もともとのLZ77では、記号列を(一致位置、一致長、次の不一致記号)という3つの値に置き換えるが、さまざまな亜種が存在する。 中でもLZSSは、単純で性能もよく、いろいろな応用に使用されている。
特許
辞書探索において、ツリーを用いる方法はゼロックスが、ハッシュテーブルを使用する方法はStac社が特許を保持していた[1]。その他、色々な会社・人物が様々な特許を取得した。ただし、特許のほとんどは既に有効期限が切れている。
参照
関連項目
- LZ77のページへのリンク