忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【知識:基礎理論】データを賢く縮める!「シャノン・ハフマンの符号化」


コンピュータが扱う「0」と「1」の組み合わせ(符号)。すべての記号を同じ長さにせず、よく出る文字には短い符号を、滅多に出ない文字には長い符号を割り当てることで、データ全体のサイズを劇的に小さくできます。

■ 符号化の基本概念

特定の規則に従って、データ(文字や数値)をビット列に変換することを符号化(エンコード)と呼びます。特に、出現確率を利用した圧縮は「エントロピー符号化」の基礎となります。

手法手順とアルゴリズムの考え方
1. シャノン符号化 (Shannon Coding) 「上から下へ」分割する方式 1. 記号を発生確率の高い順に並べる。 2. 確率の合計がなるべく均等になるよう2つのグループに分割する。 3. 各グループに「0」と「1」を割り当てる。 4. 記号が1つになるまで分割を繰り返す。
2. ハフマン符号化 (Huffman Coding) 「下から上へ」統合する方式(より効率的) 1. 確率が低い順に2つの記号を選び、枝で結んで合計確率を持つ親ノードを作る。 2. 親ノードを新しい記号と見なし、再び低い順に2つ選ぶ作業を繰り返す(ハフマン木の作成)。 3. 根から各記号までの道筋(左右)を「0」と「1」に対応させる。

具体的な例(ハフマン符号化)

例えば、「A(60%)、B(30%)、C(10%)」という確率の記号がある場合:

  • 手順: 低い「B」と「C」を合体させて1つのグループ(40%)とし、次に残った「A(60%)」と合体させます。
  • 結果: 最も多い「A」には「0」などの短い符号、少ない「B」「C」には「10」「11」などの長い符号が割り当てられます。
  • メリット: すべてを2ビット(AA=00, B=01, C=10)で表すより、平均ビット数が少なくなります。

試験対策の重要ポイント

  • 可変長符号:記号によってビット長が異なる符号のこと。ハフマン符号はその代表例です。
  • 一意復号可能:短い符号が長い符号の「接頭辞」にならない(例:Aが0なら、Bは01にできない)ように設計されており、どこで区切るか迷わずに解凍できます。
  • データ圧縮:ZIPファイルやJPEG、MPEGなどの圧縮技術の根幹として使われています。

※シャノン符号化は歴史的に重要ですが、現在の実用シーンではより圧縮効率が高いハフマン符号化が主流となっています。



PR