令和4年度技術士第一次試験:I 基礎科目:I-2-4

令和4年度技術士試験問題
目次

問題

(出典:日本技術士会のホームページ 過去問題(第一次試験) 基礎科目 令和4年度)

コーチング対話解答

ツトムさん

この問題は令和元年のI-2-5とほぼ同じですね。

マナブ先生

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

ツトムさん

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

マナブ先生

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

ツトムさん

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

Technolog Coaching refresh
マナブ先生

そうですね。
例えば、
  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つ目のビット列1110101
2つ目のビット列1001111
異なるビット位置と個数1234
ツトムさん

このようになりますので、ハミング距離は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
\]
となります。

Technolog Coaching refresh
マナブ先生

この\(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ビットまでの誤りを検出することができます。

ツトムさん

理解できました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次