圧縮・ハフマン符号

パソコンを扱う方なら圧縮データを扱った事を扱ったことがある方が多いと思います。圧縮データは拡張子zipなどををダウンロードし、そのデータを展開して元のファイルに戻すという扱い方が出来ます。ところで、どうやってデータのサイズを圧縮して少なくしているか疑問に思ったことはありませんか?本来の量を損なうことなく少なくして元の量に戻せるなんて考えてみれば不思議です。そこで今回は圧縮データのお話をします。

まず、圧縮に使われているものはファイルです。ファイルはテキストファイルだったり画像ファイルだったりと様々ですがそれらがByteという単位のデータ量で置かれています。Byteとは以前0と1の構成出来ているとお話しました。つまりファイルも0と1で構成されています。ということはデータの圧縮は0と1を圧縮しているのです。
そして0と1を圧縮するのに使われるのがハフマン符号と呼ばれるものです。ハフマン符号で符号化という可逆圧縮の代表的アルゴリズムが用いられています。アルゴリズム(Algorithm)とは仕事をさせるための手順という意味です。コンパクト符号という符号化の一種です。
ハフマン符号のアルゴリズムは説明しようとすると長くなってしまうのでこのページでは載せません。Wikipediaのハフマン符号で検索すると詳細が載っています。
符号化で0と1の量を減らし、それがByteの削減に直結します。要するに符号化によってデータ容量を減らすことができます。そして展開時には元のByteになります。これがデータが小さくなるのに元のデータの情報は失わないという仕組みです。
他にもJPEGやZIP (Deflate) などの様々な圧縮フォーマットに使われています。これはハフマン符号は算術符号などと異なり特許の問題が無いためです。誰もが自由に使うことができるのす。