読み方 : エルゼットエスエス
LZSS【Lempel–Ziv–Storer–Szymanski】
LZSSとは?

基本的な発想は、繰り返し現れるパターンをより短い符号に置き換えることでデータ量を削減する。LZSSでは、直前までに処理したデータを「スライド窓」(sliding window)と呼ばれるバッファに保持し、新たなデータが登場するたびにその中を探索する。同じパターンが見つかれば、データそのものではなく「どこから何文字分と同じか」を示す参照情報(位置と長さのペア)に置き換えて出力する。
元になったLZ77には、一致するパターンが短い場合でも参照情報として出力するため、却ってデータが増えてしまう場合があった。LZSSはこれを改善するため、参照情報と生データのどちらであるかを示す1ビットのフラグを導入した。このフラグにより、圧縮した方が有利な箇所だけを参照に置き換え、そうでない箇所はそのまま出力するという柔軟な処理が可能になった。
圧縮データの展開(解凍)処理は単純で、フラグを読みながら生データはそのまま出力し、参照情報であればバッファの該当箇所をコピーするだけである。圧縮に比べて展開が高速なこの特性は、一つのデータが様々な場所で何度も展開される配布用ファイルや、処理能力が限られた機器でのメディアデータの再生などで特に都合がよい。LZSSはハフマン符号化など他の手法と組み合わせて使われることが多く、Zipファイル圧縮やPNG画像形式の内部処理にもその考え方が受け継がれている。