ブロックコード


Block_code
で理論符号化、ブロック符号は多くの重要なファミリーである誤り訂正符号ブロック内のエンコードデータという。ブロックコードには膨大な数の例があり、その多くは幅広い実用的なアプリケーションを持っています。ブロックコードの抽象的な定義は、コーディング理論家、数学者、およびコンピューターサイエンティストが、すべてのブロックコードの制限を統一された方法で研究できるため、概念的に役立ちます。このような制限は、多くの場合、ブロックコードのさまざまなパラメーター(レートやエラーを検出して修正する機能など)を相互に関連付ける境界の形をとります。
ブロックコードの例としては、リード-ソロモンコード、ハミングコード、ハダマードコード、エキスパンダーコード、ゴレイコード、リード-マラーコードがこれらの例も線形コードのクラスに属しているため、線形ブロックコードと呼ばれます。より具体的には、これらのコードは、ブール多項式を使用して生成できるため、代数ブロックコードまたは循環ブロックコードとして知られています。
代数ブロックコードは通常、代数デコーダーを使用してハードデコードされます。
ブロックコードという用語は、次のブロックに作用するエラー訂正コードを指す場合も k {k}
生成する入力データのビット {n}
出力データのビット(( 、 k )。
{ displaystyle(n、k)}
。したがって、ブロックコーダーはメモリレスデバイスです。この定義では、ターボコード、終了した畳み込みコード、その他の繰り返しデコード可能なコード(ターボのようなコード)などのコードもブロックコードと見なされます。終端されていない畳み込みエンコーダーは、非ブロック(フレーム化されていない)コードの例であり、メモリがあり、代わりにツリーコードとして分類されます。
、「代数ブロックコード」について説明します。

コンテンツ
1 ブロックコードとそのパラメータ
1.1 アルファベットΣ 1.2 メッセージの長さk 1.3 ブロック長n 1.4 レートR 1.5 距離d 1.6 人気の表記
2 例
3 エラー検出および訂正プロパティ
4 ブロックコードの下限と上限
4.1 コードのファミリー 4.2 ハミング限界 4.3 シングルトン限界 4.4 プロトキン限界 4.5 ギルバート・バルシャモフ行き 4.6 ジョンソンバウンド 4.7 エリアス–バサリゴ行き
5 球充填と格子
6 も参照してください
7 参考文献
8 外部リンク

ブロックコードとそのパラメータ
エラー訂正コードは、チャネルノイズの影響を受けやすい信頼性の低い通信チャネルを介してデジタルデータを確実に送信するために使用されます。送信者がブロックコードを使用して非常に長いデータストリームを送信したい場合、送信者はストリームを固定サイズの断片に分割します。このような各片が呼び出されたメッセージブロックコードによって与えられた手順はまた呼ばれる、コードワードに個別メッセージを符号化するブロックのブロック符号のコンテキストです。次に、送信者はすべてのブロックを受信者に送信します。受信者は、何らかのデコードメカニズムを使用して、破損している可能性のある受信ブロックから元のメッセージを(うまくいけば)回復できます。送信全体のパフォーマンスと成功は、チャネルとブロックコードのパラメータに依存します。
正式には、ブロックコードは単射マッピングです : Σ k
Σ {C: Sigma ^ {k} to Sigma ^ {n}}

 。
ここ、 Σ { Sigma}

 は有限で空でない集合であり、 k {k}

  と {n}

 整数です。これらの3つのパラメーターと、コードに関連するその他のパラメーターの意味と重要性を以下に説明します。

アルファベットΣ
エンコードされるデータストリームは、いくつかのアルファベット上の文字列としてモデル化されます Σ { Sigma}

 。サイズ| Σ |
{| Sigma |}

  アルファベットのはしばしば次のように書かれています {q}

 。もしも = 2 {q = 2}

 の場合、ブロックコードはバイナリブロックコードと呼ばれます。多くのアプリケーションでは、検討することが有用です {q}

 することがプライムパワー、および識別するために、 Σ { Sigma}

 有限体 { mathbb {F} _ {q}}

 。

メッセージの長さk
メッセージは要素です {m}

  の
Σ k { Sigma ^ {k}}

 、つまり、長さの文字列 k {k}

 。したがって、数 k {k}

 ブロックコードのメッセージの長さまたは次元と呼ばれます。

ブロック長n
ブロック長 {n}

 ブロックコードのは、ブロック内のシンボルの数です。したがって、要素 {c}

  の
Σ { Sigma ^ {n}}

  長さの文字列です {n}

 受信者が受信する可能性のあるブロックに対応します。したがって、それらは受信ワードとも呼ばれます。もしも = (( )。
{c = C(m)}

  いくつかのメッセージのために {m}

 、 それから {c}

  のコードワードと呼ばれます {m}

 。

レートR
ブロックコードのレートは、メッセージの長さとブロックの長さの比率として定義されます。 = k / {R = k / n}

 。
レートが大きいということは、送信されたブロックごとの実際のメッセージの量が多いことを意味します。この意味で、レートは伝送速度と量を測定します 1 − {1-R}

 ブロックコードによるエンコードによって発生するオーバーヘッドを測定します。レートが超えることはできないというのは単純な情報理論的事実です 1 {1}

 一般に、データを可逆圧縮することはできないためです。正式には、これはコードが {C}

  単射マップです。

距離d
ブロックコードの距離または最小距離 dは、任意の2つの異なるコードワードが異なる位置の最小数と相対距離です。 δ { delta}

  分数です / {d / n}

 。正式には、受け取った単語について 1
、 2 ∈ Σ {c_ {1}、c_ {2} in Sigma ^ {n}}

 、 させて Δ (( 1
、 2)。
{ Delta(c_ {1}、c_ {2})}

 間のハミング距離を示します 1
{c_ {1}}

  と 2
{c_ {2}}

 、つまり、位置の数 1
{c_ {1}}

  と 2
{c_ {2}}

 異なる。次に最小距離 {d}

  コードの {C}

  と定義されている :=
最小 1
、 2 ∈ Σ k 1 ≠ 2 Δ [ (( 1 )。 、 (( 2
)。 ] {d:= min _ {m_ {1}、m_ {2} in Sigma ^ {k} atop m_ {1} neq m_ {2}} Delta [C(m_ {1}) 、C(m_ {2})]}

 。
すべてのコードは単射である必要があるため、2つのコードワードは少なくとも1つの位置で一致しないため、コードの距離は少なくとも 1 {1}

 。さらに、距離は線形ブロックコードの最小重みに等しくなります。理由は次のとおりです。
最小 1
、 2 ∈ Σ k 1 ≠ 2 Δ [ (( 1 )。 、 (( 2
)。] =
最小 1
、 2 ∈ Σ k 1 ≠ 2 Δ [ 0
、 (( 1 )。 + (( 2
)。] =
最小 ∈ Σ k ≠
0 w [ (( )。] = w
最小
{ min _ {m_ {1}、m_ {2} in Sigma ^ {k} atop m_ {1} neq m_ {2}} Delta [C(m_ {1})、C( m_ {2})] = min _ {m_ {1}、m_ {2} in Sigma ^ {k} atop m_ {1} neq m_ {2}} Delta [ mathbf {0}、 C(m_ {1})+ C(m_ {2})] = min _ {m in Sigma ^ {k} atop m neq mathbf {0}} w = w_ { min}}

 。
距離が大きいほど、より多くのエラー訂正と検出が可能になります。たとえば、送信されたコードワードのシンボルを変更する可能性があるエラーのみを考慮し、それらを消去または追加しない場合、エラーの数は、送信されたコードワードと受信されたワードが異なる位置の数です。距離dのコードにより、受信機は最大 − 1 {d-1}

  変更後の伝送エラー − 1 {d-1}

 コードワードの位置によって、誤って別のコードワードが生成されることはありません。さらに、(( − 1 )。/ 2
{ displaystyle(d-1)/ 2}

 送信エラーが発生すると、受信者は受信したワードをコードワードに一意にデコードできます。これは、受信したすべての単語が離れた場所に最大1つのコードワードを持っているためです。(( − 1 )。/ 2
{ displaystyle(d-1)/ 2}

 。以上の場合(( − 1 )。/ 2
{ displaystyle(d-1)/ 2}

 送信エラーが発生すると、いくつかの可能なコードワードが存在する可能性があるため、受信者は一般に受信したワードを一意にデコードできません。受信者がこの状況に対処する1つの方法は、リストデコードを使用することです。この場合、デコーダーは特定の半径内のすべてのコードワードのリストを出力します。

人気の表記
表記(( 、 k 、 )。 { displaystyle(n、k、d)_ {q}}

  アルファベットの上のブロックコードを説明します Σ { Sigma}

  サイズの {q}

 、ブロック長 {n}

 、メッセージの長さ k {k}

 、および距離 {d}

 。ブロックコードが線形ブロックコードの場合、表記の角括弧
[ 、 k 、 ] { _ {q}}

 その事実を表すために使用されます。のバイナリコードの場合 = 2 {q = 2}

 、インデックスが削除されることが以下のための最大距離分離コード、距離が常にあります = −k + 1
{d = n-k + 1}

 、しかし、正確な距離がわからない、証明または述べるのが簡単でない、または必要ない場合がそのような場合、 {d}

 -コンポーネントが欠落している可能性が
時々、特に非ブロックコードの場合、表記(( 、 、 )。 { displaystyle(n、M、d)_ {q}}

  を含むコードに使用されます {M}

  長さのコードワード {n}

 。メッセージの長さが長いブロックコードの場合 k {k}

  サイズのアルファベット以上 {q}

 、この数は = k
{M = q ^ {k}}

 。 例 上記のように、実際にはブロックコードであるエラー訂正コードは膨大な数にのぼります。最初のエラー訂正コードは、1950年にRichard W. Hammingによって開発されたHamming(7,4)コードでした。このコードは、3つのパリティビットを追加することにより、4ビットで構成されるメッセージを7ビットのコードワードに変換します。したがって、このコードはブロックコードです。これも線形コードであり、距離は3であることがわかります。上記の省略表記では、これはHamming(7,4)コードが
[ 7 4 3] 2
{ _ {2}}

  コード。
リードソロモンコードは、
[ 、 k 、 ] { _ {q}}

  とのコード = −k + 1
{d = n-k + 1}

  と {q}

 さプライムパワー。ランクコードは
[ 、 k 、 ] { _ {q}}

  とのコード ≤ −k + 1
{d leq n-k + 1}

 。アダマールコードは
[ 、 k 、 ] 2 { _ {2}}

  とのコード =2 k − 1 {n = 2 ^ {k-1}}

  と =2 k − 2 {d = 2 ^ {k-2}}

 。

エラー検出および訂正プロパティ
コードワード ∈
Σ {c in Sigma ^ {n}}

 のポイントと見なすことができます {n}

 -寸法スペース
Σ { Sigma ^ {n}}

  とコード {{ mathcal {C}}}

  のサブセットです
Σ { Sigma ^ {n}}

 。コード {{ mathcal {C}}}

  距離がある {d}

  という意味です
∀ ∈ { forall c in { mathcal {C}}}

 、を中心とするハミングボールには他のコードワードはありません {c}

  半径付き − 1 {d-1}

 、のコレクションとして定義されています {n}

 -ハミング距離が {c}

  は − 1 {d-1}

 。同様に、 {{ mathcal {C}}}

  (最小)距離で {d}

  次のプロパティが {{ mathcal {C}}}

  検出できます − 1 {d-1}

  エラー:コードワードのため {c}

  半径でそれ自体を中心とするハミングボールの唯一のコードワードです − 1 {d-1}

 、エラーパターンなし − 1 {d-1}

 または、エラーが少ないと、あるコードワードが別のコードワードに変わる可能性が受信したベクトルがのコードワードではないことを受信者が検出したとき {{ mathcal {C}}}

 、エラーが検出されます(ただし、修正の保証はありません)。 {{ mathcal {C}}}

  修正できます
⌊ −1 2
{ textstyle left lfloor {{d-1} over 2} right rfloor}

 エラー。コードワードだから {c}

  半径でそれ自体を中心とするハミングボールの唯一のコードワードです − 1 {d-1}

 、両方の半径を持つ2つの異なるコードワードをそれぞれ中心とする2つのハミングボール
⌊ −1 2
{ textstyle left lfloor {{d-1} over 2} right rfloor}

 互いに重ならないでしたがって、エラー訂正を、受信した単語に最も近いコード単語を見つけることと見なすと、 y {y}

 、エラーの数が以下である限り
⌊ −1 2
{ textstyle left lfloor {{d-1} over 2} right rfloor}

 、ハミングボールの中心にあるコードワードは1つだけです y {y}

  半径付き
⌊ −1 2
{ textstyle left lfloor {{d-1} over 2} right rfloor}

 したがって、すべてのエラーを修正できます。
以上の存在下でデコードするために(( − 1 )。 / 2
{ displaystyle(d-1)/ 2}

 エラー、リストデコードまたは最大尤度デコードを使用できます。 {{ mathcal {C}}}

  修正できます − 1 {d-1}

  消去。消去は消去シンボルの位置が既知であることを意味します。修正は、 {q}

 -デコードの受け渡し:
I {i ^ {th}}

  消去された位置を通過すると、
I {i ^ {th}}

 シンボルとエラー訂正が実行されます。エラーの数が以下であるという合格が1つある必要があります
⌊ −1 2
{ textstyle left lfloor {{d-1} over 2} right rfloor}

  したがって、消去を修正することができます。

ブロックコードの下限と上限
image
  ハミング制限
image
  理論上の制限(ハミング制限など)がありますが、別の問題は、どのコードを実際に構築できるかということです。これは、球をさまざまな次元で箱に詰めるようなもの
です。この図は、線形およびバイナリである構成可能なコードを示しています。
X軸が示す保護シンボルの数
kは、 Yは、必要に応じてチェックシンボルの数軸線
N-kは。プロットされているのは、1(保護されていない)から34までのさまざまなハミング距離の制限です。ドットでマークされているのは完全なコードです。
x軸の明るいオレンジ色:些細な保護されていないコード y軸のオレンジ:些細な繰り返しコード データセットの濃いオレンジd = 3:古典的な完全なハミングコード 濃い赤以上:唯一の完璧なバイナリゴレイ符号
コードのファミリー編集 =
{{ 私} I ≥ 1 {C = {C_ {i} } _ {i geq 1}}

 コードのファミリーと呼ばれ、ここで 私
{C_ {i}}

  は(( I k I 、 私
)。 { displaystyle(n_ {i}、k_ {i}、d_ {i})_ {q}}

  単調に増加するコード 私
{n_ {i}}

 。
コードファミリーの割合Cは次のように定義されます。 (( )。 = リム I ∞k 私
{R(C)= lim _ {i to infty} {k_ {i} over n_ {i}}}

コードファミリーCの相対距離は次のように定義されます。 δ (( )。 = リム I ∞私私
{ delta(C)= lim _ {i to infty} {d_ {i} over n_ {i}}}

間の関係を探るには (( )。
{R(C)}

  と δ (( )。
{ delta(C)}

 、ブロックコードの下限と上限のセットがわかっています。

ハミング限界
ハミング限界 ≤1 −
1 ⋅
ログ ⋅
[ ∑I = 0 ⌊ δ
⋅ −1 2 (( 私 )。 (( −
1)。I ]
{R leq 1- {1 over n} cdot log _ {q} cdot left [ sum _ {i = 0} ^ { left lfloor {{ delta cdot n-1 } over 2} right rfloor} { binom {n} {i}}(q-1)^ {i} right]}

 

シングルトン限界
シングルトン限界
シングルトン限界は、ブロックコードのレートと相対距離の合計が1より大きくなることはできないということです。 +δ ≤ 1 +
1 {R + delta leq 1+ { frac {1} {n}}}

 。
言い換えれば、すべてのブロックコードは不等式を満たします k + ≤ + 1 {k + d leq n + 1}

 。リードソロモンコードは、シングルトン限界を等しく満たすコードの重要な例です。

プロトキン限界
プロトキン限界
にとって = 2 {q = 2}

 、 +2 δ ≤ 1
{R + 2 delta leq 1}

 。言い換えると、k +
2 ≤ {k + 2d leq n}

 。
一般的なケースでは、次のプロトキン限界が ⊆{C subseteq mathbb {F} _ {q} ^ {n}}

 距離d:
もしも =(( 1 − 1 ) | | ≤ 2 {d = left(1- {1 over q} right)n、| C | leq 2qn}
  もしも >>(( 1 − 1 ) | |
≤−(( − 1 )。 {d> left(1- {1 over q} right)n、| C | leq {qd over {qd- left(q-1 right)n}}}
left(1-{1 over q}right)n,|C|leq {qd over {qd-left(q-1right)n}}}””>   距離のある任意のq- aryコードの場合 δ { delta}

 、 ≤1 −((− 1 )。δ + o(( 1 )。 {R leq 1- left({q over {q-1}} right) delta + o left(1 right)}

ギルバート・バルシャモフ行き
ギルバート・バルシャモフ行き ≥ 1 − (( δ
)。− ϵ
{R geq 1-H_ {q} left( delta right)- epsilon}

 、 どこ 0 ≤ δ ≤ 1 − 1、0 ≤ ϵ ≤ 1
− (( δ )。 {0 leq delta leq 1- {1 over q}、0 leq epsilon leq 1-H_ {q} left( delta right)}

 、 (( )。= e − ⋅
ログ−1 −(( 1 − NS)。 ⋅ ログ (( 1
− )。
{H_ {q} left(x right)〜{ overset { underset { mathrm {def}} {}} {=}} 〜-x cdot log _ {q} {x over {q-1}}- left(1-x right) cdot log _ {q} { left(1-x right)}}

 あるQ進エントロピー関数が。

ジョンソンバウンド
ジョンソンバウンド
定義 (( δ )。 = e (( 1 − 1 )。(( 1− 1
− δ − 1 )。
{J_ {q} left( delta right)〜{ overset { underset { mathrm {def}} {}} {=}}〜 left(1- {1 over q} right ) left(1-{ sqrt {1- {q delta over {q-1}}}} right)}

 。させて (( 、 、
e)。
{J_ {q} left(n、d、e right)}

 任意のコードの半径eのハミングボール内のコードワードの最大数である ⊆{C subseteq mathbb {F} _ {q} ^ {n}}

 距離dの。
次に、ジョンソンバウンドがあり ます: (( 、 、
e)。
≤{J_ {q} left(n、d、e right) leq qnd}

 、 もしも
e≤ −
1 (( 1− 1
− − 1 ⋅ NS)。= (()。
{{e over n} leq {{q-1} over q} left({1-{ sqrt {1- {q over {q-1}} cdot {d over n }}}} 、 right)= J_ {q} left({d over n} right)}

エリアス–バサリゴ行き
エリアス・バサリゴ行き =
ログ| | ≤ 1 − (((( δ )。 )。+ o (( 1 )。 {R = { log _ {q} {| C |} over n} leq 1-H_ {q} left(J_ {q} left( delta right) right)+ o left(1 right)}
{ R={log _{q}{|C|} over n}leq 1-H_{q}left(J_{q}left(delta right)right)+oleft(1right)}
 

球充填と格子
ブロックコードは、長年にわたって注目を集めてきた球充填問題に関連しています。二次元では、視覚化するのは簡単です。たくさんのペニーをテーブルの上に平らに置き、一緒に押します。その結果、蜂の巣のような六角形のパターンになります。しかし、ブロックコードは、簡単に視覚化できないより多くの次元に依存しています。深宇宙通信で使用される強力なゴレイ符号は24次元を使用します。バイナリコード(通常はそうです)として使用される場合、次元は上記で定義されたコードワードの長さを指します。
コーディングの理論は、N次元の球モデルを使用します。たとえば、卓上または3次元で円に詰めることができるペニーの数、地球儀に詰めることができるビー玉の数などです。その他の考慮事項は、コードの選択を入力します。たとえば、長方形のボックスの拘束に六角形のパッキングを入れると、コーナーに空きスペースが残ります。寸法が大きくなると、空きスペースの割合は小さくなります。しかし、特定の寸法では、パッキングはすべてのスペースを使用し、これらのコードはいわゆる完全なコードです。これらのコードはほとんどありません。
もう1つのプロパティは、1つのコードワードが持つ可能性のあるネイバーの数です。繰り返しになりますが、例として1セント硬貨を考えてみましょう。まず、ペニーを長方形のグリッドに詰めます。各ペニーには、4つの近くの隣人がいます(そして4つは遠くの角にあります)。六角形では、各ペニーには6つの近くの隣人がいます。それぞれ、3次元と4次元では、最大パッキングは、それぞれ12面と24セルで、それぞれ12面と24セルで与えられます。次元を増やすと、近傍の数が非常に急速に増加します。一般的に、値はキス番号によって与えられます。
その結果、ノイズがレシーバーにネイバーを選択させる(したがってエラーが発生する)方法の数も増えます。これはブロックコード、そして実際にはすべてのコードの基本的な制限です。単一のネイバーにエラーを発生させるのは難しいかもしれませんが、ネイバーの数が十分に多い可能性があるため、合計エラー確率が実際に低下します。

も参照してください
チャネル容量
シャノン・ハートレーの定理
雑音のある通信路
リストのデコード
球充填

参考文献
^ クリスチャンシュレーゲルとランスペレス(2004)。トレリスとターボ符号化。Wiley-IEEE。NS。73. ISBN  978-0-471-22755-7。
 「ブロックコード」  
JHヴァンリント(1992)。符号理論入門。GTM。86(第2版)。Springer-Verlag。NS。 31。ISBN 3-540-54894-7。
FJ MacWilliams ; NJAスローン(1977)。エラー訂正コードの理論。北ホラント。NS。 35。ISBN 0-444-85193-3。
W.ハフマン; V.Pless(2003)。エラー修正コードの基礎。ケンブリッジ大学出版局。ISBN 978-0-521-78280-7。
S.リン; DJ Jr. Costello(1983)。エラー制御コーディング:基本とアプリケーション。プレンティスホール。ISBN 0-13-283796-X。

外部リンク
チャラン・ラントン(2001)コーディングの概念とブロックコーディング”