• ベストアンサー

CRCによる誤り検出の条件

現在、CRCについて学んでいます。 その中で、誤り検出が可能な条件として、 誤りの多項式E(X)が生成多項式G(X)で割り切れないこと というのがあると思います。 そこで例えば、rビットのバースト誤りの際に、 E(X) = x^(i) + x^(i+1) + … + x^(i+r-1) = x^i * {1 + x + … + x^(r-1)} (ただ、この最後の式でx~x^(r-2)までは、誤りによってあったりなかったりする筈です) と表すことが出来て、生成多項式G(X)の次数がrであるとき、 1. x^iは(G(X)が2項以上の多項式であるなら)G(X)で割り切れない 2. {1 + x + … + x^(r-1)}は(次数がr-1であるから)G(X)で割り切れない 3. 従ってE(X)もG(X)で割り切れない よって生成多項式の次数がrの場合、rビット以下のバースト誤りは検出できるとなっていますが、、、 いくら1.や2.がG(X)で割り切れなくても、それらの積(=E(X))がG(X)で割り切れてしまうことはあるじゃないですか。 具体的には、i=1のとき、もしG(X)がx * {1 + x + … + x^(r-1)}であれば、割り切れますし、、、 同様の話で、 http://laputa.cs.shinshu-u.ac.jp/~yizawa/InfSys1/advanced/crc/ こちらのページの、「4. 巡回符号の誤り検出」という部分でも、 「これらは、3次の生成多項式、例えば G(x) = x^3+x+1 で割り切れないことは明らかです。」 という記述に対して、「例えばG(X) = x^3+x^2+x^1であれば割り切れてしまうのでは」と反論したくなります。 もちろん、割り切れないようなG(X)を選べばいいと言われればそれまでですが、、、以上の様にG(X)の内容によっては「G(X)の次数r以下のバースト誤りが検出できる」のが自明とは思えません。 そもそもそれが答え、、、? どなたかご説明お願いしますm(_ _)m

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

あ~, 「既約多項式」の方が通りがいいかな?

WhiteDown1412
質問者

お礼

なるほどっ、下の方のWikipediaページの情報にもありますけど、やっぱり「生成多項式は既約多項式であるのが一般的」と考えて良さそうですね(*^□^*) そう考えると、質問で挙げた、G(X)の候補x * {1 + x + … + x^(r-1)}についても、既約でないからダメってことになって、納得です!! どうもありがとうございましたm(_ _)m

その他の回答 (3)

  • seednyan
  • ベストアンサー率28% (448/1568)
回答No.3

CRCは用途に応じて使用する多項式が決まっているようですね。

参考URL:
http://ja.wikipedia.org/wiki/%E5%B7%A1%E5%9B%9E%E5%86%97%E9%95%B7%E6%A4%9C%E6%9F%BB
WhiteDown1412
質問者

お礼

うーん、、、規格みたいな感じで?既に決まっている多項式もあるんですね。 でもそれはそれで学習の観点からだと「覚えるだけ」って感じだなぁ、、、>< 、、、って「CRC多項式の設計」の節を見たら、 >>新たなCRC多項式を作成したり、既存のCRCを改良する場合、多項式が既約性を持つようにするのが一般的である。すなわち >>・この場合の既約性とは、多項式が自分自身か1でしか割り切れないことを意味する。 >>・既約でない多項式も使えるが、誤り検出力が劣る。しかし、用途によっては既約でない多項式を使っている場合もある。 とありますね!! Wikipediaっていうのが残念ですが、参考になりました! ありがとうございます(≧ω≦)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

普通, CRC で「生成多項式」といえば原始多項式に決まっています. だから G(x) = x^3 + x^2 + x^1 というのはそもそも考えません. 「2.2 生成多項式とは」のところで「k次の特別な多項式 G(x)」と書いてあるよね.

WhiteDown1412
質問者

補足

こちらもお早いお返事ありがとうございます! なるほど、生成多項式と言えば原始多項式、という前提があるのですね! いま「原始多項式」について検索したところ、係数の最大公約数が1である多項式と出たのですが、、、 G(x) = x^3 + x^2 + x^1は、係数の最大公約数が1だから原始多項式ではないんですか? x^0の係数が0だから最大公約数が1でない、とするにしても、質問で載せたページにあるG(x) = x^3+x+1も、x^2の係数が0ですし、、、><

  • seednyan
  • ベストアンサー率28% (448/1568)
回答No.1

数学は苦手ですが、少しだけコンピュータをかじったことがあるので。。CRCにはいろんなパターンがあることと、扱う数字は、"1","0"の2個しかありません。このある意味、特殊な条件下でしか成り立たないと思うしかありません。 なんせ、”デジタル”の”データ”の話なんで。。

WhiteDown1412
質問者

お礼

お早いお返事ありがとうございます! うーーーーーん、、、、、思うしかないですか>< なんとか納得できる説明が欲しいです(´・ω・`)

関連するQ&A

  • CRC方式について

    「CRC方式において、伝送路上でビット誤りが生起しなかったと仮定する。このとき、受信符号H(X)は、生成多項式G(X)で割り切れることを証明せよ。」という課題が出たのですが、どうすれば良いか、教えていただけませんか?

  • CRC方式について

    「CRC方式において、伝送路上でビット誤りが生起しなかったと仮定する。このとき、受信符号H(X)は、生成多項式G(X)で割り切れることを証明せよ。」という課題が出たのですが、どうすれば良いでしょうか?

  • CRC方式(誤り制御方式)について

    CRC方式に関する問題なのですが、通信系の資格の取得しようと勉強しているのですが、誤り制御方式のところの問題をやっていましたら、答えだけで解説がなく意味がわからなく困っています。わかります方、よろしくお願い致します。 生成多項式をG(X)=X(6)+X(4)+X(2)+1とする。 (1)伝送したいデータがD=X(5)+Xのとき、送信データS=D´+CRCを多項式で表しなさい。 (2)受信データがX(14)+X(12)+X(10)+1のとき、この受信データに誤りが含まれていないことを示しなさい。次に、伝送したいデータDを多項式で表しなさい。 ※X(5)などの()内の数字はXの5条(ジョウ)です。

  • 誤り訂正と符号の質問です

    生成多項式G(x) = x^3 + x + 1 から通報(1010)の場合、一重誤りパターンに対する シンドロームが誤り位置を示すにはどうすればいいのでしょうか? 答えでなくとも参考になるサイトでもいいので教えてください。

  • 水平垂直パリティチェックとCRC方式について

    質問させてください。 基本情報処理試験において、誤り訂正方式の一つとして ・水平垂直パリティチェック ・CRC方式 というものがあります。 水平垂直パリティチェックは、ビット列を縦横に確認してデータに誤りがないか確認する方法、 CRC方式は、生成多項式という特別な式でデータに誤りがないか確認する方法 ということはわかるのですが、 それぞれのメリットデメリットは何でしょうか? 例えば、CRC方式では水平垂直パリティチェックではできない、2ビット以上の誤り訂正ができたりするのでしょうか? どなたか回答をお願いします。

  • CRCについて

    CRCの算出についてなのですが http://www2c.biglobe.ne.jp/~osakana/vc/pc/crc.html こちらのサイトを参考にすると 1. データを一つ(1バイト)とってきます 2. CRC値を左ビットシフトして、桁上がりがあればさらに生成多項式とXORを取ります 3. データを左ビットシフトして、桁上がりがあればCRC値と1のXORを取ります 4. あと7回(1バイト=8ビットなので)2と3を繰り返します 5. 残りのデータがあれば1に戻ります とあります。 例えばアドレス部00000000にデータ01が入っているもの(ファイルサイズ1バイト)を算出しようとした場合 手計算を行うとCRC16は0001、CRC32は00000001になりそうなのですが いくつかのフリーソフトで実際にバイナリエディタを用いて1バイトのファイルを作成し、試して見たところ CRC16が1E0E CRC32がA505DF1B と出ます。 一般的な算出方法では、上記の説明以外に何か別の処理、初期値などがあるのでしょうか? お分かりになる方是非教えてください。 よろしくお願いします。

  • CRCについて

    「あるmビットパターンに対する多項式表現をM(X)とする。このパターンをrビットだけ左方向にシフトし、右端のrビットに0を補完したビットパターン(m+rビットパターン)の多項式表現は、X^rM(X)になることを証明せよ。」という課題が出たのですが、どうしたら良いのでしょうか?

  • CRC-8-ATM

    CRC-8-ATMで質問です。x^8+x^2+x+1です。 既約多項式で因数分解するとどうなるのでしょうか? あと、なぜこの式を使うのでしょうか? いろいろ調べたのですがわかりませんでした。 教えてください。

  • BCH誤り訂正

    BCH誤り訂正なんですが 受信した符号を多項式で割ってあまりから誤りビットがでるのですが 訂正能力を超えた場合はどうでしょうか? 例えば2ビットまで訂正できるBCHで3ビット誤った符号を受信したときは 全く異なる訂正をしてしまうと思うのですが 何か手はあるのでしょうか? 普通はBCHのあとにCRCを行うのですがBCH内で演算して誤りビット数は出せるのでしょうか?

  • 巡回符号化について

    生成多項式G(x)=x^4+x^2+1により情報記号列(011)を(7.3)巡回符号化せよ という問題があるのですが、 情報多項式 x+1 生成多項式 次数4 以上によりx^5+x^4 ここまではあってると思うのですが、 x^5+x^4をx^4+x^2+1を割るのはどのように行えばよいでしょうか? 過程を教えてください。よろしくおねがいします。