問題

(出典:日本技術士会のホームページ 過去問題(第一次試験) 基礎科目 令和4年度)
コーチング対話解答
ツトムさんこの問題は令和元年のI-2-5とほぼ同じですね。



たまに同じような問題が出ることがあるので、
過去問をしっかりと理解しながら解くことは
試験対策としてとても大切ですね。
これは通信で使われるハミング距離と1ビット誤り訂正の問題ですね。



前半は対応するビットを比較し、
後半は不可ビットの条件を使って誤り位置を特定する問題になっていますね。



その通りです。
初めて問題を見るとその長さに驚き、何が問われているのかを理解するまでに時間がかかってしまいますね。計算自体は難しくありませんが、ビットの位置を一つずつ丁寧に確認していくことが重要です。
ところでmod 2は何を意味しているのか分かりますか?



modは問題文にも説明がありますが、この後ろにある数字で割った時の余りを取る関数です。





そうですね。
例えば、
0+0+1 (mod 2) =1 (mod 2) =1
1+1+0 (mod 2) =2 (mod 2) =0
1+1+1 (mod 2) =3 (mod 2) =1
となります。
それではまずは前半の(ア)を解いてみてください。



表1と同じ表を作ります。
| 1つ目のビット列 | 1 | 1 | 1 | 0 | 1 | 0 | 1 |
| 2つ目のビット列 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |
| 異なるビット位置と個数 | 1 | 2 | 3 | 4 |



このようになりますので、ハミング距離は4です。



後半部分ですが、まず表2と同じような表を作り、3行目のように受信ビット列
\[[1000010]\]
を
\[[X_1 X_2 X_3 X_4 X_5 X_6 X_7]\]
に対応させてください。



それぞれ、
\[
X_1=1、X_2=0、X_3=0、X_4=0、X_5=0、X_6=1、X_7=0
\]
となります。





この\(X_1\)から\(X_4\)を使って、
本来の\(X_5\)、\(X_6\)、\(X_7\)を計算して記入してください。



まず、\(X_5\)の計算をします。
\[
X_5=X_2+X_3+X_4 (\bmod\ 2)
\]
ですので、
\[
X_5=0+0+0=0 (\bmod\ 2)
\]
となります。
次に、\(X_6\)の計算をします。
\[
X_6=X_1+X_3+X_4 (\bmod\ 2)
\]
ですので、
\[
X_6=1+0+0=1 (\bmod\ 2)
\]
となります。
そして、\(X_7\)の計算をします。
\[
X_7=X_1+X_2+X_4 (\bmod\ 2)
\]
ですので、
\[
X_7=1+0+0=1 (\bmod\ 2)
\]
となります。



受信した\(X_5\)、\(X_6\)、\(X_7\)と比較をしてみてください。



\(X_5\)と\(X_6\)は一致していますが、\(X_7\)は一致していません。



そうですね。
通信過程で高々1ビットしか通信の誤りが起こらないという仮定が与えられていますが、どのビットが誤っているかを調べる方法はどうしますか?



問題文にある表2のように、一つずつ変化させて調べていくのでしょうか?



それでも大した計算量ではないのでいいですが、少し工夫をしてみましょう。
\(X_5\)、\(X_6\)、\(X_7\)は\(X_1\)から\(X_4\)を用いて計算されますので、検査式といわれます。
\(X_1\)から\(X_7\)の各ビットが、どの検査式に含まれているのかをまとめてみてもらえますか。
例えば\(X_1\)は\(X_6\)と\(X_7\)に含まれているなどと。



このようになりますが。
| ビット | 関係する検査式 |
| \(X_1\) | \(X_6\)、\(X_7\) |
| \(X_2\) | \(X_5\)、\(X_7\) |
| \(X_3\) | \(X_5\)、\(X_6\) |
| \(X_4\) | \(X_5\)、\(X_6\)、\(X_7\) |
| \(X_5\) | \(X_5\) |
| \(X_6\) | \(X_6\) |
| \(X_7\) | \(X_7\) |



今回、\(X_7\)の検査だけが不一致なので、\(X_7\)だけ含まれているのはどれですか?



\(X_7\)になります。



そうです。
受信した\(X_7\)は0でした。それを反転するとどうなりますか?



\(X_7\)の0を1にするのですね。
すると
\[[100011]\]
になります。



これが正しいビット列です。



最初に計算したビット列ですね。
そうすると、答えは⑤ です。



正解です。
通信中には、電気的なノイズや記録媒体の劣化などによって0と1が反転することがあります。
そこで元の情報ビットに追加のビットを付けて送信し、受信側で整合性を確認します。
今回の\(X_5\)、\(X_6\)、\(X_7\)の3つの付加ビットは、それぞれ異なる情報ビットの組み合わせを検査しています。そのため、不一致になった検査式の組み合わせから、誤っているビット位置を特定できるのです。



問題文の中に「任意の2つの正しいビット列のハミング距離が3以上であることが知られている」という文章がありますが、これは何を意味しているのでしょうか?



良い点に気がつきましたね。
最小ハミング距離を\(d_{\min}\)とすると、
訂正可能な誤り数\(t\)は
\[
d_{\min}≧2t+1
\]
を満たします。
今回、
\[
d_{\min}≧3
\]
ですので、1ビット誤りを訂正することができます。
また、2ビットまでの誤りを検出することができます。



理解できました。

