【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

ソフトウエア開発技術者試験のための勉強をしています。
ハミング符号では、例えば情報ビット4ビットには誤り検出ビット3ビットが必要で、この3ビットは情報ビット4ビットのどこに入れても良いとあります。この方式の前提は、あらかじめ送信側と受信側で誤り検出ビットの位置を決めてあるからですよね?つまり受信側が、受け取ったビット列のどこが誤り検出ビットなのかを知らなければ誤りの検出や訂正は出来ない、と理解しています。
よって、「ハミング符号によるチェック方式において”1001101”というビット列を受け取ったが、正しくない。どのビットが誤っているかを示しなさい。」という問題(翔泳社ソフトウエア開発技術者2005年度版P85)は、どこが誤り検出ビットなのか書いていないので解けないと思うのですが、違うでしょうか?

A 回答 (3件)

> ハミング符号では、・・・この3ビットは情報ビット4ビットのどこに入れても


> 良いとあります。
> この方式の前提は、あらかじめ送信側と受信側で誤り検出ビットの位置を
> 決めてあるからですよね?
その通りです。

> つまり受信側が、受け取ったビット列のどこが誤り検出ビットなのかを知らなければ
> 誤りの検出や訂正は出来ない、と理解しています。
それで正しいです。
その上、さらにビット間の演算式(チェック式)も知っている必要が有ります。

> 「ハミング符号によるチェック方式において”1001101”というビット列を
> 受け取ったが、正しくない。どのビットが誤っているかを示しなさい。」
> という問題(・・・)は、どこが誤り検出ビットなのか書いていないので解けない・・・。
その通り解けません。

あくまでもビット配列と演算式が規定されていないと解く事は出来ません。
ビット配列については質問者さんの言われるように、単なる約束事ですから
送信者と受信者が一致していればどのように決めてもいいのです。
事実、書物によってビット配列は色々です。

蛇足ですが、誤りビット1ビットを簡単に見つけられるビット配列をご紹介します。
これを理解するとハミング符号が身近になります。

X1 X2 X3 P3 X4 P2 P1
Xが情報ビット、Pが検査ビットです。ビットに前から順に7から1の番号を打ちます。
判定式は
X1+X3+X4+P1=0
X1+X2+X4+P2=0
X1+X2+X3+P3=0
です。
ここで、例えばX3ビットが間違うと1行目と3行目の式がエラーになります。
つまりP1とP3に関する式ですね。
ビット番号に着目して見ましょう。
X3は5番目、P1は1番目、P3は4番目で、1+4=5でX3が誤りと言うことを示しています。
他のビットでも試して見てください。
    • good
    • 0
この回答へのお礼

明快な回答ありがとうございます。
なるほど、教えていただいたビット配列を使うと間違っているビットがどこなのか簡単にわかりますね。とても便利です。

ところで、細かい点なのですが確認させてください。
> ビット間の演算式(チェック式)も知っている必要が有ります。

これは厳密には、演算式そのものは知らなくても最低限偶数パリティか奇数パリティかさえわかっていればよいのでしょうか?
受信側では誤り検出ビットを1つずつ判定式に含め、各情報ビットを必ず2回以上判定式に使う、という条件さえ満たして任意の判定式を作れば判定できてしまうような気がするのですが。
例えば上記例でいうと、判定式は以下のいずれでも誤りの判定は出来るのではないかと考えました。(もちろんこれらのパターンでは教えていただいた簡単な間違いビットの計算方法は使えなくなりますが)

A)X1を3つにするパターン
X1+X3+X4+P1=0
X1+X2+X4+P2=0
X1+X2+X3+P3=0

B)X2を3つにするパターン
X2+X3+X4+P1=0
X1+X2+X4+P2=0
X1+X2+X3+P3=0

C)X3を3つにするパターン
X1+X3+X4+P1=0
X2+X3+X4+P2=0
X1+X2+X3+P3=0

D)X4を3つにするパターン
X1+X3+X4+P1=0
X1+X2+X4+P2=0
X2+X3+X4+P3=0

お礼日時:2005/04/03 21:13

No.2です。

追加質問にお答えします。

> 厳密には、演算式そのものは知らなくても最低限偶数パリティか奇数パリティかさえ
> わかっていればよいのでしょうか?
それではだめでしょうね。
演算式というのは質問者さんの言われるA,B,C,D各パターンの内のどれか
(あるいは別のもの)ということです。
これが分らないと、仮に誤り検出は出来たとしても、誤り訂正は出来ません。
ハミング符号は1ビットの誤りは訂正でき、2ビットまでの誤りは検出できる仕様です。

例で説明します。
Aパターンで1010を変換するとP1P2P3が010となります。
これが1110010と誤って受信されたとするとAパターンではP2P3の誤りを検出し、
DパターンではP2だけの誤りを検出します。
従ってあらかじめAパターンである事を知っておかないと誤りビットの特定が出来ない、
つまり訂正が出来ないという事になります。
    • good
    • 0
この回答へのお礼

なるほど、やってみると確かにそうですね。
すっきりしました。
どうもありがとうございました。

お礼日時:2005/04/04 22:03

通常、「4ビットの情報ビット」+「3ビットのチェックビット」を付加して、「符号全体長は7ビット」としていると思います。



正確な問題文が手元に無いので何とも言えませんが、
その問題は、「情報処理技術者試験の過去問」でしょうか?それとも、「翔泳社作成の練習問題」でしょうか?

後者の場合問題そのものに間違いがある可能性も否定できないと思います。

過去問の一例を参考URLとしてリンクします。
「ソフトウエア開発技術者」⇒「平成15年」⇒「問66」を選択して下さい。

参考URL:http://smickey.cool.ne.jp/cgi-bin/text/textprint …
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。教えていただいたサイトの問題ならば納得がいきます。
この問題は翔泳社作成の練習問題だと思います。
問題文はこれで全てで、補足の絵や図などはありません。
この問題の正誤も気になるのですが、理論的に、送信側が適当に(勝手に)誤り検出ビットを情報ビットに混ぜて送って、それで誤りの検出や訂正が出来るものなのかを知りたいと思っています。
受信側で何か数学的な処理を施せば誤り検出ビットがどれかわかるとか。
ネットで符号理論の講義資料などをいろいろ調べましたが、ハミング符号の作り方などは書いてあってもこの点が書いてあるものが見つけられませんでした。

お礼日時:2005/04/03 17:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!