ハミング距離とは

はみんぐきょり

同じ長さの2つのビット列(または文字列)で、同じ位置の値が異なる箇所の数。2つのビット列の排他的論理和をとったときの1の個数に等しい。例えば 1011010 と 0110011 のハミング距離は4である。符号の中の2つの符号語の間の距離のうち最小のものを最小ハミング距離といい、最小ハミング距離がdの符号は、d − 1 ビットまでの誤りを検出でき、(d − 1) ÷ 2 の切り捨てのビット数までの誤りを訂正できる。

「ハミング距離」は、1分野の3問の練習問題に出てきます(情報理論と符号の基礎など)。

この用語の分野: 情報理論と符号の基礎

誤りの検出と訂正の能力

符号語どうしが離れているほど、誤りで別の符号語に変わりにくくなります。最小ハミング距離がdの符号では、d − 1 ビット以下の誤りでは別の符号語にならないので検出でき、誤りが (d − 1) ÷ 2 以下なら、受信語に最も近い符号語が元の符号語なので訂正できます。例えば、同じビットを3回送る繰り返し符号は d = 3 で、1ビットの誤りを多数決で訂正できます。

線形符号での求め方

どの2つの符号語の排他的論理和も符号語になる線形符号では、2つの符号語の距離は、その排他的論理和である符号語の1の個数に等しくなります。そのため、最小ハミング距離は、0以外の符号語の1の個数(重み)の最小値として求められ、すべての組を比べる必要がありません。

ほかの分野での使い方

ハミング距離は、2つのデータの違いを数える一般的な尺度として使われます。PUF(物理的複製困難関数)の評価では、異なるチップの応答の間のハミング距離が全ビットの50%に近いほど、個体を区別しやすいとされます。また、状態機械の符号化で、隣り合う状態のハミング距離を1にしておくと、遷移のときに変わるビットが少なくなります。

ハミング距離の練習問題に挑戦

ある符号の最小ハミング距離(どの2つの符号語の間のハミング距離のうちの最小値)が5である。誤りの検出だけに使う場合と、訂正だけに使う場合を考える。確実に検出できる誤りのビット数と、確実に訂正できる誤りのビット数の組み合わせとして、正しいものはどれか。

  1. A検出は4ビットまで、訂正は2ビットまで
  2. B検出は5ビットまで、訂正は2ビットまで
  3. C検出は4ビットまで、訂正は4ビットまで
答えと解説を見る

正解:A. 検出は4ビットまで、訂正は2ビットまで

最小ハミング距離がdの符号では、d − 1 ビットまでの誤りなら、ほかの符号語に変わってしまうことがないので、検出できます。訂正では、受信したビット列に最も近い符号語に直すので、誤りが (d − 1) ÷ 2 の切り捨て以下なら、元の符号語が最も近いまま残ります。d = 5 では、検出は4ビットまで、訂正は2ビットまでです。

よくある質問

ハミング距離とハミング符号は、同じものですか?

別のものです。ハミング距離は2つのビット列の違いを数える尺度で、ハミング符号は、最小ハミング距離が3になるように作った、1ビットの誤りを訂正できる符号です。どちらもハミングの名に由来します。

長さの違うビット列のハミング距離は求められますか?

ハミング距離は、同じ長さのものどうしでしか定義されません。文字の挿入や削除も含めて違いを数えたいときは、編集距離(レーベンシュタイン距離)を使います。

解説の中の「ハミング距離」

「ハミング距離」が出てくる問題(3問)

  1. 2つの7ビットの符号語 1011010 と 0110011 のハミング距離はどれか。
  2. ある符号の最小ハミング距離(どの2つの符号語の間のハミング距離のうちの最小値)が5である。誤りの検出だけに使う場合と、訂正だけに使う場合を考える。確実に検出できる誤りのビット数と、確実に訂正できる誤りのビット数の組み合わせとして、正しいものはどれか。
  3. 4つの符号語 00000、01011、10101、11110 からなる符号の、最小ハミング距離と、確実に訂正できる誤りのビット数の組み合わせとして、正しいものはどれか。

情報理論と符号の基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

可逆圧縮 クラフトの不等式 情報エントロピー 情報量 接頭符号 前方誤り訂正(FEC) 相互情報量 二元対称通信路 ハフマン符号 ハミング符号

用語集の一覧へ