talosのプログラミング教室

【基本・応用情報技術者】ハミング符号による誤り訂正

スポンサーリンク

こんにちは。たろすです。

今回はハミング符号による誤り訂正について説明します。

ハミング符号とは

ハミング符号とは、データの伝送時に付加し、誤りを検知・訂正できる誤り訂正符号の一つ。

ハミング符号(Hamming code)とは - IT用語辞典 e-Words

とのことです。

誤り制御には検知しかできないものと訂正もできるものがあります。

ハミング符号は1ビットまでの誤りなら訂正もできます。

このような知識もよく問われるので覚えておきましょう。

例題

問題

さっそくですが例題を解いていきます。

応用情報技術者試験からの出題です。

ハミング符号とは,データに冗長ビットを付加して, 1ビットの誤りを訂正できるようにしたものである。ここでは,X1,X2,X3,X4の4ビットから成るデータに,3ビットの冗長ビットP3,P2,P1を付加したハミング符号 X1X2X3P3X4P2P1 を考える。付加ビットP1,P2,P3は,それぞれ
   X1 \oplus X3 \oplus X4 \oplus P1=0
   X1 \oplus X2 \oplus X4 \oplus P2=0
   X1 \oplus X2 \oplus X3 \oplus P3=0
となるように決める。ここで⊕は排他的論理和を表す。
ハミング符号 1110011 には1ビットの誤りが存在する。誤りビットを訂正したハミング符号はどれか。

ア.0110011
イ.1010011
ウ.1100011
エ.1110111

(出典:平成30年度 春期 応用情報技術者試験 午前 問3)

解答

ハミング符号 X1X2X3P3X4P2P1 を考える」とあり、ハミング符号は「1110011 」であることから、

X1=1
X2=1
X3=1
P3=0
X4=0
P2=1
P1=1

であることがわかります。

それでは3つの式に具体的な数字を入れていきます。

一番目の式は、

 X1 \oplus X3 \oplus X4 \oplus P1=1 \oplus 1 \oplus 0 \oplus 1

となります。

演算結果は1となり0になっていないので、X1かX3かX4が誤っていることがわかります。


二番目の式は

 X1 \oplus X2 \oplus X4 \oplus P2=1 \oplus 1 \oplus 0 \oplus 1

となります。

こちらも演算結果は1となり0になっていないので、X1かX2かX4が誤っていることがわかります。


三番目の式は

 X1 \oplus X2 \oplus X3 \oplus P3=1 \oplus 1 \oplus 0 \oplus 1

となります。

こちらも演算結果は1となり0になっていないので、X1かX2かX3が誤っていることがわかります。


三つの式すべてに誤っているビットが含まれていることがわかりました。

したがって、三つの式すべてに含まれているビットが誤っているビットであると断定できます。

つまり、誤っているビットはX1です。

以上より、答えは「1110011 」から先頭のビットを反転した「ア.0110011 」となります。

おわりに

今回はハミング符号による誤り訂正について説明しました。

難しくはないので確実に正解できるようにしておきましょう。