• ベストアンサー

ハミング符号の誤り検出ビットについて

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

質問者が選んだベストアンサー

  • ベストアンサー
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.2

> ハミング符号では、・・・この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が誤りと言うことを示しています。 他のビットでも試して見てください。

freeman001
質問者

お礼

明快な回答ありがとうございます。 なるほど、教えていただいたビット配列を使うと間違っているビットがどこなのか簡単にわかりますね。とても便利です。 ところで、細かい点なのですが確認させてください。 > ビット間の演算式(チェック式)も知っている必要が有ります。 これは厳密には、演算式そのものは知らなくても最低限偶数パリティか奇数パリティかさえわかっていればよいのでしょうか? 受信側では誤り検出ビットを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

その他の回答 (2)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.3

No.2です。追加質問にお答えします。 > 厳密には、演算式そのものは知らなくても最低限偶数パリティか奇数パリティかさえ > わかっていればよいのでしょうか? それではだめでしょうね。 演算式というのは質問者さんの言われるA,B,C,D各パターンの内のどれか (あるいは別のもの)ということです。 これが分らないと、仮に誤り検出は出来たとしても、誤り訂正は出来ません。 ハミング符号は1ビットの誤りは訂正でき、2ビットまでの誤りは検出できる仕様です。 例で説明します。 Aパターンで1010を変換するとP1P2P3が010となります。 これが1110010と誤って受信されたとするとAパターンではP2P3の誤りを検出し、 DパターンではP2だけの誤りを検出します。 従ってあらかじめAパターンである事を知っておかないと誤りビットの特定が出来ない、 つまり訂正が出来ないという事になります。

freeman001
質問者

お礼

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

noname#10575
noname#10575
回答No.1

通常、「4ビットの情報ビット」+「3ビットのチェックビット」を付加して、「符号全体長は7ビット」としていると思います。 正確な問題文が手元に無いので何とも言えませんが、 その問題は、「情報処理技術者試験の過去問」でしょうか?それとも、「翔泳社作成の練習問題」でしょうか? 後者の場合問題そのものに間違いがある可能性も否定できないと思います。 過去問の一例を参考URLとしてリンクします。 「ソフトウエア開発技術者」⇒「平成15年」⇒「問66」を選択して下さい。

参考URL:
http://smickey.cool.ne.jp/cgi-bin/text/textprint.cgi?c=1&y=15&s=0&no=66
freeman001
質問者

お礼

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

関連するQ&A

  • ハミング符号について

    ハミング符号について勉強し始めています。いくつか質問させてください。 ・ハミング符号は2ビットの誤りまで検出できて、1ビットの誤りまで訂正できる。 ・ということは、例えば1000000ビットの情報を送りたい場合、より確実に送りたい場合は、ビット列を例えば100ビットくらいに分けて、それぞれにハミング符号(の冗長部分)を付与した方がよい。反対に、情報を軽く送りたい(スピード重視)場合は、ほとんど分割せずに、ハミング符号を作った方がよい。 という理解で、大丈夫でしょうか?よろしくお願いします。

  • ECC(誤り訂正符号)について

    情報の勉強超初心者です。 ECCの教科書の説明を読んでもイメージがさっぱりわかりません。 イメージがわくように具体的に説明いただけますと幸いです。 「変化したビットを正しく訂正できる機能をもつメモリが存在し、誤りを自動的に検知し、訂正する技法をECCという。ビットの 誤りを検出して訂正するハミング符号という手法が採用されている」 とのことですが小学生でもわかるようにかみくだいてご説明いただけますでしょうか。 PCは毎日つかっているので具体的にイメージがわかると幸いです。

  • ハミング符号の問題

    ハミング符号で1001という4ビットの情報を送る際、余分なビットを1,2,4ビット目に加えると実際どのようにて送ればよいかという問題なのですが、 要するに ??1?001という記号列になるのでしょうが、 記号列を下記のように関連づけたとします。 (1) (2) (3) (4) (5) (6) (7) ?  ?  1  ?  0  0  1 すると下記の計算ででますか? (1)+(3)+(5)+(7)=0 (2)+(3)+(6)+(7)=0 (5)+(6)+(7)+(8)=0 初歩的な問題ですいません。回答よろしくお願いします。

  • 長方形符号について

    学校の課題において、次のような問題が出たのですが明らかに見当違いな値が出てしまい全然合いませんどうか解き方を教えていただけないでしょうか? 【問題】4bitの情報を2行2列として長方形符号にした。以下の問いに答えなさい。 (1)情報化率(情報速度)を既約分数で答えよ。 (2)符号間の最短のハミング距離を答えよ。 (3)訂正可能な誤りの数はいくつか? (4)パリティー検査法で訂正可能な誤りの個数を答えよ。 私が出した答えは、(1)1/2 (2)0 (3)0 (4)0なのですが、明らかにこれほど0が回答として出ることがないのでとても不安です。そうか解き方を含め回答を教えていただけないでしょうか?

  • 線形符号の問い

    ネットで検索できるPDFやPPなどの資料はいくつかみたのですが、いまいち分かりませんでしたので、質問させていただきたいのですが、 情報ビット、x1、x2、x3に対し、検査ビットc1=x1+x2、c2=x2+x3、c3=x1+x3 を付加した(6,3)の線形符号についての問いで、 この符号によって、単一誤りの訂正が可能であることを示しなさいとあるのですが、 解答に、 「符号語は次の8種類、すべての符号語とそのハミング重みを列挙すると 00000 001011 010110 011101 100101 101110 110011 111000 で、全0以外で最小のハミング重みは3、t0=(3-1)/2=1 よって単一誤りの訂正可能」 とあるのですが、この符号語8種類はどこからでてきたのでしょうか。 また、単一誤り訂正可能の条件を教えていただきたいです。

  • 調歩同期方式のパリティによる誤り検出方式について

    調歩同期方式のデータ転送において、偶数パリティによる誤り検出方式を用いて、文字T(JIS7単位符号1010100)が送出されたとき、これを正しく受信したときのビット列はどういう列になるのか分かりません。 送出は、  スタートビット(0)、  文字の低位ビットから高位ビット、  パリティビット、  ストップビット(1) の順です。 送るときは、 00010101X1 かと思いましたが、わかりません。 Xはパリティビットになります。これは0なのでしょうか?1なのでしょうか? 奇数個の誤りが生じている場合、誤りの有無を判定できるそうですがよく理解できません。 送信するときと受信するときはそれぞれどのようなビット列になっているのでしょうか? どなたか教えていただけませんでしょうか? よろしくお願いいたします。

  • 5ビット誤り訂正符号の符号語間最小距離

    5ビット誤り訂正符号の符号語間最小距離はどのように求めたらよいのでしょうか。分かりやすく説明していただけると幸いです。

  • ハミング符号の余分な部分

    学校の課題でわからないことがあるので質問させて頂きます。 ハミング符号は、例えば検査符号(冗長ビット)が4のときは、 2^4-4-1で11ビットまでが有効範囲ですが、 もし、送りたい情報が8ビットしかなかったなら、 残り3ビットはどうすればいいのでしょうか? また、足りない状態なのに符号化はできるのでしょうか? 回答いただければうれしいです。

  • 技術者試験などに「メモリの誤り制御方式」と言って

    技術者試験などに「メモリの誤り制御方式」と言って ハミング符号 奇数パリティ 偶数パリティ 水平パリティ チェックサム CRC などありますが、これらは実際にどのような場面で有効活用されている のでしょうか。 「主記憶」と「HDD」の間でデータの送受信をする時に、情報に誤りがないか どうかを検出したり訂正するという解釈なのでしょうか。 以上、よろしくお願いします。

  • これはなんと言う誤り検査方式でしょうか。

    nビットで作りうる数値のうち、1の個数がm個のものだけを符号として使用する これって誤り検査方式の何に当たるのでしょうか。 ソフトウェア開発技術者の問題の選択肢としてあったのですが、解答として何の説明か書かれていませんでした。 もし分かる方がいらっしゃいましたら、教えてください。