BCHコード

符号理論においてボーズ・ショードゥリ・オッケンゲム符号BCH符号)は、有限体ガロア体とも呼ばれる)上の多項式を用いて構成される巡回 誤り訂正符号の一種である。BCH符号は1959年にフランスの数学者アレクシ・オッケンゲムによって発明され、1960年にはラージ・チャンドラ・ボースDK・レイ=ショードゥリによって独立に発明された。[1] [2] [3]ボーズ・ショードゥリ・オッケンゲムという名称(および頭字語のBCH)は、発明者の姓の頭文字(レイ=ショードゥリの場合は誤り)に由来する。

BCH符号の重要な特徴の一つは、符号設計時に、符号によって訂正可能なシンボルエラーの数を正確に制御できることです。特に、複数ビットのエラーを訂正できるバイナリBCH符号を設計することが可能です。BCH符号のもう一つの利点は、シンドローム復号法と呼ばれる代数的手法を用いて容易に復号できることです。これにより、小型で低消費電力の電子ハードウェアを用いて、これらの符号のデコーダの設計を簡素化できます。

BCHコードは、衛星通信、 [4] コンパクトディスクプレーヤー、DVDディスクドライブUSBフラッシュドライブソリッドステートドライブ[5] 2次元バーコードなどのアプリケーションで使用されます

定義と説明

原始狭義BCH符号

素数 q素べき q m(正の整数mddq m − 1 )が与えられたとき、有限体(またはガロア体)GF( q )上の、コード長n = q m − 1距離が少なくともdである原始狭義 BCH コードが次の方法で構築されます。

α をGF( q m )原始元とする。任意の正の整数iについてm i ( x )をα iGF( q )に係数を持つ最小多項式とする。BCH符号の生成多項式は、最小公倍数g ( x ) = lcm( m 1 ( x ),…, m d − 1 ( x ))として定義される。 g ( x )はGF( q )に係数を持つ多項式であり、 x n − 1を割り切ることがわかる。したがって、g ( x )によって定義される多項式符号は巡回符号である。

q = 2m = 4(したがってn = 15とする。GF (16) = GF(2 4 )dの値を、原始元α ( z ) = zを用いて、約分多項式z 4 + z + 1に基づいて検討する 。GF (2)に係数を持つ最小多項式m i ( x )は14個あり、

最小多項式は

BCHコードの生成多項式は次のようになる。

最小ハミング距離は3以上で、最大1つの誤りを訂正します。生成多項式は4次であるため、このコードは11ビットのデータビットと4ビットのチェックサムビットで構成されます。これは(15, 11)BCHコードとも表記されます。

BCHコードの生成多項式は次のようになる。

最小ハミング距離は5以上で、最大2つの誤りを訂正します。生成多項式は8次であるため、このコードは7つのデータビットと8つのチェックサムビットで構成されます。これは(15, 7)BCHコードとも表記されます。

BCHコードの生成多項式は次のようになる。

最小ハミング距離は7以上で、最大3つのエラーを訂正できます。生成多項式は10次であるため、このコードは5ビットのデータビットと10ビットのチェックサムビットを持ちます。これは(15, 5)BCHコードとも表記されます。(この生成多項式は、 QRコードの「フォーマット情報」という実世界での応用があります。)

以上のBCHコードの生成多項式は

このコードは最小ハミング距離15を持ち、7個の誤りを訂正します。データビットは1ビット、チェックサムビットは14ビットです。 (15, 1) BCHコードとも表記されます。実際には、このコードには000000000000000と11111111111111(単純な繰り返しコード)の2つのコードワードしかありません。

一般的なBCHコード

一般的な BCH コードは、2 つの点で原始的な狭義の BCH コードと異なります。

まず、の原始元であるという要件を緩和することができます。この要件を緩和すると、コードの長さは から の大きさに変わります。

第二に、生成多項式の連続根は

定義。が素数冪である有限体を考える。 がを法する乗法位数なるような正の整数を選ぶ。

前と同様に、をの原始平方根とし最小多項式する。BCHコードの生成多項式は、最小公倍数として定義される。

注:簡略化された定義のように、 は1であり、を法とする の順序したがって、簡略化された定義は、実際には一般的な定義の特殊なケースです。

特殊なケース

  • を持つ BCH コードは、狭義の BCH コードと呼ばれます
  • を持つ BCH コードはプリミティブと呼ばれます

BCH 符号の生成多項式は、 の係数を持つ。一般に、 上の巡回符号で生成多項式がであるものは、 上の BCH 符号と呼ばれる。上の BCH 符号と、の連続するべきを根とする生成多項式は、リード・ソロモン符号の一種であり、デコーダ(シンドローム)アルファベットがチャネル(データと生成多項式)アルファベットと同じで、 のすべての要素が である[6]もう一方のタイプのリード・ソロモン符号は、BCH 符号ではない、オリジナル ビューのリード・ソロモン符号である。

プロパティ

BCH符号の生成多項式の次数は最大 である。さらに、 かつ ならば生成多項式の次数は最大 である

BCH コードの最小ハミング距離は少なくとも です

BCH コードは巡回的です。

エンコーディング

生成多項式の倍数である任意の多項式は有効な BCH 符号語であるため、BCH エンコーディングは単に生成多項式を因数として持つ多項式を見つけるプロセスになります。

BCH符号自体は、多項式の係数の意味について規定していません。概念的には、BCH復号アルゴリズムの唯一の関心事は、受信した符号語とのハミング距離が最小となる有効な符号語を見つけることです。したがって、BCH符号は、実装者が符号化された多項式にメッセージを埋め込む方法に応じて、組織符号として実装することも、そうでない場合もあります。

非体系的符号化:要素としてのメッセージ

生成元の倍数となる多項式を見つける最も簡単な方法は、任意の多項式と生成元の積を計算することです。この場合、メッセージのシンボルを係数として任意の多項式を選択できます。

例として、POCSAGなどで用いられる(31, 21)二進BCH符号で用いられる生成多項式 を考えてみましょう。21ビットのメッセージ{1011011101111111101}を符号化するには、まず を 上の多項式として表します

次に、( についても)計算します。

したがって、送信されるコードワードは {110011101001111011101110101} です。

受信機はこれらのビットを係数として利用し、有効なコードワードを保証するために誤り訂正を行った後、再計算することができる。

体系的な符号化:メッセージを接頭辞として

体系的符号とは、メッセージが符号語内のどこかにそのまま現れる符号です。したがって、体系的BCH符号化では、まずメッセージ多項式を符号語多項式に埋め込み、次に残りの(メッセージ以外の)項の係数を調整して、 がで割り切れるようにします

この符号化方法は、被除数から剰余を引くと除数の倍数になるという事実を利用しています。したがって、前と同じようにメッセージ多項式を取り、それを(メッセージを剰余から「シフト」させるため)乗算すると、多項式のユークリッド除算を用いて次の式が得られます。

ここで、は有効な符号語であることがわかります。は常に の次数より小さい次数( の次数)なので、 から を引いてもメッセージ係数は変化しません。したがって、 は となります

にわたって(つまり、バイナリ BCH コードの場合)、このプロセスは巡回冗長検査を追加することと区別がつかず、体系的なバイナリ BCH コードがエラー検出の目的でのみ使用される場合、BCH コードは巡回冗長検査の数学の一般化にすぎないことがわかります

体系的符号化の利点は、受信側が誤り訂正を実行した後、最初の係数の後のすべてを破棄することで元のメッセージを復元できることです。

デコード

BCH符号の復号アルゴリズムは数多く存在します。最も一般的なアルゴリズムは以下の概要に従います。

  1. 受信ベクトルのシンドロームs jを計算する
  2. シンドロームからエラー数tとエラー位置多項式Λ(x)を決定する
  3. エラー位置多項式の根を計算してエラー位置X iを見つける
  4. これらのエラー位置におけるエラー値Y iを計算する
  5. エラーを修正する

これらのステップのいくつかにおいて、デコードアルゴリズムは受信ベクトルにエラーが多すぎて訂正できないと判断することがあります。例えば、適切なt値が見つからない場合、訂正は失敗します。切り捨てられた(プリミティブではない)コードでは、エラー位置が範囲外になることがあります。受信ベクトルにコードが訂正できる以上のエラーがある場合、デコーダーは送信されたメッセージとは異なる、一見有効なメッセージを無意識のうちに生成する可能性があります。

症候群を計算する

受信ベクトルは正しいコードワードと未知のエラーベクトルの和である。シンドローム値は多項式として考え、それを次のように評価することによって形成される。したがって、シンドロームは[7]である。

〜のために

のゼロであり、その倍数であるため、シンドローム値を調べるとエラー ベクトルが分離され、それを解き始めることができます。

エラーがない場合、すべてのシンドロームがゼロであれば、デコードは完了です。

エラー位置多項式を計算する

非ゼロのシンドロームが存在する場合、エラーが発生します。デコーダーは、エラーの数とそれらのエラーの位置を特定する必要があります。

単一のエラーがある場合、これを と書きます。エラーの位置、 はエラーの大きさです。最初の2つのシンドロームは

これらを組み合わせることで、(リード・ソロモン符号の場合は完全に決定する) についての計算と情報の提供が可能になります。

2つ以上のエラーがある場合、

未知のものに対する結果として生じるシンドロームをどうやって解決し始めるかはすぐには明らかではない。

最初のステップは、計算されたシンドロームと互換性があり、最小限のロケータ多項式と互換性のあるものを見つけることです。

このタスクでよく使われる 3 つのアルゴリズムは次のとおりです。

  1. Peterson-Gorenstein-Zierler アルゴリズム
  2. ベルレカンプ・マッシーアルゴリズム
  3. 杉山ユークリッド互除法

Peterson-Gorenstein-Zierler アルゴリズム

ピーターソンのアルゴリズムは、一般化BCH復号手順のステップ2です。ピーターソンのアルゴリズムは、 多項式の 誤り位置多項式係数を計算するために使用されます。

次に、Peterson-Gorenstein-Zierlerアルゴリズムの手順を説明します。[8]少なくとも2 t 個のシンドロームs c , …, s c +2 t −1があるとします。v  =  tします。

  1. まず、シンドローム値を要素とする行列 を生成する。
  2. 要素を持つベクトルを生成する
  3. 未知の多項式係数を次のように表す
  4. 行列方程式を形成する
  5. 行列の行列式がゼロでない場合、実際にこの行列の逆行列を見つけて、未知の値の値を解くことができます
  6. もしそうなら、
     もし それから 空のエラーロケータ多項式を宣言する ピーターソン手順を停止します。 終わり セット
    ピーターソンの解読の始まりから、より小さな
  7. の値が得られたら、エラーロケータ多項式が得られます。
  8. ピーターソン手順を停止します。

因数分解誤差位置多項式

多項式が得られたので、その根は、例えばChien探索アルゴリズムを用いて、力ずくで見つけることができます。原始元の指数乗は、受信語におけるエラーの発生位置を示します。そのため、この多項式は「エラーロケータ」多項式と呼ばれます。

Λ ( x )の零点α i1 ,…, α ivです。

エラー値を計算する

エラー位置が判明したら、次のステップは、それらの位置におけるエラー値を決定することです。そして、そのエラー値を用いて、それらの位置で受信した値を訂正し、元のコードワードを復元します。

バイナリBCH(すべての文字が読み取り可能な場合)の場合、これは簡単です。受信ワードのビットをこれらの位置で反転するだけで、訂正されたコードワードが得られます。より一般的なケースでは、誤りの重みは線形連立方程式を解くことで決定できます。

フォーニーアルゴリズム

ただし、 Forney アルゴリズムと呼ばれるより効率的な方法があります

させて

そして、誤差評価多項式[9]

ついに:

どこ

シンドロームがエラーワードによって説明できる場合、エラーワードは位置 でのみ非ゼロになる可能性があり、エラー値は

狭義のBCHコードの場合、c = 1なので、式は次のように簡略化されます。

フォーニーアルゴリズムの計算の説明

これは、ラグランジュ補間関数生成の手法に基づいています。

簡単にするために、仮定すると、

未知数を計算したいので、項を削除することで文脈を簡略化できます。これにより、誤差評価多項式が得られます。

おかげで私たちは

ラグランジュ補間のトリックのおかげで、和は1つの被加数に縮退する。

を得るには、積を取り除けばいいだけです。既に計算済みの根から直接積を計算することもできます、より単純な形式を使うこともできます。

形式的な派生語として

再び被加数は1つだけとなる

それで最後に

この式は、形式の形式微分を計算するときに便利です。

得られる:

どこ

拡張ユークリッドアルゴリズムに基づく復号法

多項式Λと誤り位置多項式の両方を見つける代替プロセスは、杉山康夫による拡張ユークリッド互除法の適応に基づいています。[10]判読できない文字の修正も簡単にアルゴリズムに組み込むことができます。

判読不能な文字の位置をとします。これらの位置を局所化する多項式を作成します。判読不能な位置の値を 0 に設定し、シンドロームを計算します。

フォーニーの公式で既に定義したように、

多項式との最小公約数を求める拡張ユークリッドの互除法を実行してみましょう。目標は最小公約数を見つけることではなく、最大次数の多項式と の多項式を見つけることです。低次保証は、拡張された( によって)定義条件を満たすでしょう。

Fourney の式のの位置にを定義して使用すると、エラー値が得られます。

このアルゴリズムの主な利点は、Forney 式に必要な計算を同時に実行できることです。

デコードプロセスの説明

目標は、読み取り可能な位置において受信語との差異が可能な限り小さい符号語を見つけることです。受信語を最も近い符号語とエラー語の和として表す場合、読み取り可能な位置における非ゼロの数が最小となるエラー語を見つけようとします。シンドロームは、エラー語を条件によって制限します 。

これらの条件を別々に書くこともできるし、多項式を作成することもできる。

べき乗に近い係数を比較すると

位置に判読不能な文字があると仮定し、シンドロームの集合を次の式で定義されるシンドロームの集合に置き換えることができる。エラーワードに対して、元のシンドロームの集合によるすべての制約が満たされると仮定すると、

新しい症候群のセットはエラーベクトルを制限する

元のシンドロームの集合がエラーベクトルを制限したのと同じ方法で。ただし、エラー位置を特定するという目的のためにシンドロームの集合を同様の方法で変更し、判読できない文字をすべて反映させることができます。これにより、シンドロームの集合は次のように短縮されます。

多項式定式化において、シンドローム集合をシンドローム集合に置き換えると、

したがって、

で置き換えた後、べき乗付近の係数についての式が必要となる。

判読不能文字の場合と同様に、与えられた位置の影響を排除するという観点からエラー位置を探すことも考えられます。もし、その影響を排除するとすべてゼロからなるシンドロームの集合が得られるような位置が見つかった場合、それらの座標にのみエラーを持つエラーベクトルが存在することになります。これらの座標の影響を排除する多項式を とすると、次の式が得られます 。

ユークリッド互除法では、(読み取り可能な位置において)最大で 個の誤りを訂正しようとします。これは、誤り数が大きいほど、受信語から同じ距離内により多くの符号語が存在する可能性があるためです。したがって、我々が求めている に対して、式は から始まるべき乗に近い係数に対して成立する必要があります。

Forney の式では、スカラーを掛けても同じ結果が得られます。

ユークリッドの互除法では、次数と同じ数の異なる根を持つよりも高い次数を求める場合があります。この場合、フォーニーの公式はすべての根の誤りを訂正できますが、そのような多くの誤りを訂正することはリスクを伴う可能性があります(特に受信語に他の制約がない場合)。通常、より高い次数を得た後、誤りを訂正しないことにします。根の多重度が高い場合、または根の数が次数より少ない場合、訂正は失敗する可能性があります。フォーニーの公式が送信されたアルファベットの外側に誤りを返すことで、誤りが検出される場合があります。

エラーを修正する

エラー値とエラー位置を使用してエラーを修正し、エラー位置のエラー値を減算して修正されたコード ベクトルを形成します。

デコード例

判読不能文字のないバイナリコードのデコード

GF(2 4 )上の BCH 符号を考えます。 (これはQR コードで使用されます。)送信するメッセージを [1 1 0 1 1]、または多項式表記で表すとします。「チェックサム」シンボルは、を で割って余りを求めることで計算され、結果として[ 1 0 0 0 0 1 0 1 0 0 ] または [ 1 0 0 0 0 1 0 1 0 0 ] となります。これらがメッセージに付加されるため、送信されるコードワードは [ 1 1 0 1 1 0 0 0 0 1 0 1 0 0 ] となります。

ここで、伝送中に2つのビットエラーがあったと仮定すると、受信コードワードは[1 0 0 1 1 1 0 0 0 1 1 0 1 0 0]となります。多項式表記では以下のようになります。

誤りを修正するには、まずシンドロームを計算します。 とするととなります。次に、次の拡張行列を行縮約してピーターソン手順を適用します

零点列のため、S 3×3は特異値となるが、これはコードワードに2つの誤りしか導入されていないため当然である。しかし、行列の左上隅は[ S 2×2 | C 2×1 ]と同一であり、解は次式となる。結果として得られる誤り位置多項式は次式となり、 とに零点を持つ。の指数は誤り位置に対応する。この例では、取り得る値は1のみであるため、誤り値を計算する必要はありません。

判読できない文字でデコードする

同じシナリオを想定しますが、受信したワードに2つの判読不能な文字 [ 1 0 0 ? 1 1 ? 0 0 1 1 0 1 0 0 ] が含まれているとします。判読不能な文字をゼロに置き換え、それらの位置を反映する多項式を作成します。シンドロームとを計算します(GF(2 4 )同型に依存しない対数表記を使用します。計算結果の確認には、前の例で使用したのと同じ加算表現を使用できます。のべき乗の16進数表記は、1、2、4、8、3、6、C、B、5、A、7、E、F、D、9 の順で、ビット単位の排他的論理和に基づいて加算されます)。

シンドローム多項式を作ってみましょう

計算する

拡張ユークリッドの互除法を実行します。

我々は3次の多項式に到達しており、

私たちは得る

したがって、

心配しないでください。力ずくで の根を見つけます。根はとです(たとえば、見つけた後、対応する monom で割ると、結果として得られる monom の根は簡単に見つけることができます)。

させて

式を使ってエラー値を調べてみましょう

私たちのルーツはどこにあるのでしょうか

事実、それは驚くべきことではありません。

したがって修正されたコードは[1 1 0 1 1 1 0 0 0 0 1 0 1 0 0]になります。

少数のエラーで判読不能な文字をデコードする

エラー数が少ない場合のアルゴリズムの動作を示しましょう。受信語が[1 0 0 ? 1 1 ? 0 0 0 1 0 1 0 0]であるとします。

再び、判読できない文字をゼロに置き換え、それらの位置を反映する多項式を作成します。シンドロームを計算しシンドローム多項式を作成します。

拡張ユークリッドの互除法を実行してみましょう。

我々は3次の多項式に到達しており、

私たちは得る

したがって、

心配しないでください

させて

多項式の根であるを使って誤差値を調べてみましょう

私たちは

驚くべきことではない事実。

したがって修正されたコードは[1 1 0 1 1 1 0 0 0 0 1 0 1 0 0]です。

引用

  1. ^ リード&チェン 1999、189ページ
  2. ^ ホッケンゲム 1959
  3. ^ ボーズ&レイ・チャウドゥリ 1960
  4. ^ 「フォボス着陸船コーディングシステム:ソフトウェアと分析」(PDF) 。 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。 2012年2月25日閲覧
  5. ^ Marelli, Alessia; Micheloni, Rino (2018). 「ソリッドステートドライブ向けBCHコード」.ソリッドステートドライブ(SSDS)の内側. Springer Series in Advanced Microelectronics. 第37巻. pp.  369– 406. doi :10.1007/978-981-13-0599-3_11. ISBN 978-981-13-0598-6. 2023年9月23日閲覧
  6. ^ Gill nd、3ページ
  7. ^ リドル&ピルツ 1999年、229ページ
  8. ^ ゴレンスタイン、ピーターソン、ツィールラー 1960
  9. ^ Gill nd、47ページ
  10. ^ 杉山康夫、笠原将夫、平沢重一、滑川俊彦。ゴッパ符号を解読するための鍵方程式を解く方法。情報と制御、27:87–99、1975。

参考文献

一次資料

  • Hocquenghem, A. (1959 年9月)、「CodesCorrecteurs d'erreurs」、Ciffres (フランス語)、2、パリ: 147–156
  • Bose, RC ; Ray-Chaudhuri, DK (1960年3月)、「誤り訂正二進群符号のクラスについて」(PDF)Information and Control3 (1): 68– 79、doi :10.1016/s0019-9958(60)90287-4、ISSN 0890-5401、 2022年10月9日時点のオリジナルより アーカイブ(PDF)

二次資料

  • Gill, John (nd), EE387 Notes #7, Handout #28 (PDF) , Stanford University, pp.  42– 45, archived (PDF) from the original on 2022-10-09 , retrieved April 21, 2010[リンク切れ] 2012年度のコースノートが書き直されているようです: http://www.stanford.edu/class/ee387/ 2013年6月5日アーカイブ、 Wayback Machineより
  • ゴレンスタイン、ダニエルピーターソン、W. ウェスリー;ツィーラー、ニール(1960)「2誤り訂正ボーズ・チャウドゥリ符号は準完全である」『情報制御』3 (3): 291– 294, doi : 10.1016/s0019-9958(60)90877-9
  • リドル、ルドルフ;ピルツ、ギュンター(1999年)、応用抽象代数(第2版)、ジョン・ワイリー
  • Reed, Irving S. ; Chen, Xuemin (1999)、Error-Control Coding for Data Networks、ボストン、マサチューセッツ州:Kluwer Academic PublishersISBN 0-7923-8528-4

さらに読む

  • Blahut, Richard E. (2003)、「データ伝送のための代数的コード(第2版)」、ケンブリッジ大学出版局ISBN 0-521-55374-1
  • ギルバート、WJ; ニコルソン、WK (2004)、『現代代数学の応用』(第2版)、ジョン・ワイリー
  • Lin, S.; Costello, D. (2004), Error Control Coding: Fundamentals and Applications , Englewood Cliffs, NJ: Prentice-Hall
  • MacWilliams, FJ; Sloane, NJA (1977), The Theory of Error-Correcting Codes , New York, NY: North-Holland Publishing Company
  • Rudra, Atri, CSE 545, Error Correcting Codes: Combinatorics, Algorithms and Applications, University at Buffalo, 2012-12-18にアーカイブされたオリジナルからの転載
Retrieved from "https://en.wikipedia.org/w/index.php?title=BCH_code&oldid=1303166257"