冬休みの取り組みとして、ZIP*1圧縮/解凍器を作ってみることにした。 ZIPで使われている圧縮アルゴリズム(圧縮フォーマット?)は、DEFLATEアルゴリズムと云って、簡単に云えばLZ77とハフマン符号化を組み合わせたもののようだ。日本語版仕様(RFC1951) ハフマン符号化は、以前に簡単なものを実装したことがあるが、DEFLATEアルゴリズムで使用するハフマン符号化では、一般的なそれとは異なり、(符号化される)各コードを表現するビット列の長さに制限(15ビットまで)を付けられる必要があるらしい。 なので今回はまず、その長さ制限付きのハフマン符号化アルゴリズムの実装を試してみることにする。 The Coin Collector's Problem 参考にしたのは、以下のWikipediaの記事。 Package-merge algorithm 編集日時: 2007/06/23 00:2