検査行列を作る
線形符号の場合、符号の違いによって代数的な構造は異なります。
で、符号の構造が違えば同じエラーに対してもシンドロームの値が違いということで復号に影響があります。
ここで、検査行列を変えないまま組織的な生成行列を作る方法を考えます。
生成行列か検査行列のどちらでもいいのでまず教科書通りにどちらかを構成してください。
今の場合でいうと検査行列を作ります。
復号することを前提に生成行列を作るからです。
次にその行列をガウスの消去法を使って対角化して組織符号というものに変形します。
此処で次のことに注意しましょう。
線形符号の場合$G=[I|P]$とかけるのが生成行列であるとします。
すると検査行列は、$H=[-P|I]^T$になります。
線形代数の言葉で言うと、検査行列による変換に対して0に潰れるベクトルのことを核(カーネル)と呼びます。
これはつまり生成行列のカーネルを計算すれば、その結果は検査行列になるということになります。
ここで$GH^T=O$隣、検査行列と生成行列の積が0になるという規則を覚えましょう。
カーネルの計算は線形代数の同字連立1次方程式の解法を使います。
ちょっと計算練習すれば出来るようになったので、勉強してください。
$H$の構造に気をつけましょう。
符号理論の教科書には大体2の拡大退場で作る前提ですが、素体などはより正確に$H=[-P|I]$となります。
ここでマイナスが付いている事が重要です。
2減退だとプラスもマイナスも同じになります。
ただ偶然にそうなっているだけで、若し他の鯛で作ることになったら(例えば3の拡大体)Pにマイナスを浸けることをお忘れなく。
いやー、線形代数って本当に重要ですね!
(リクエストがあれば数値例を書きます)
双対符号というもの
次に、生成行列から符号語を作ります。
さてこの符号語と検査行列の積は内積になり、その結果は0になります。
これはカーネルなのだから0になります。
そしてどうじにコレは双対符号と呼ばれています。
直交行列は内積1になりますが、検査行列と生成行列の積の結果は0です。
双対符号というのは、どちらを生成行列に使っても、もう片方は検査行列の役割を果たすことが出来るという意味だろうか?
うろ覚えなので、後日きちんと書きます。(誰も見てないと思うけど)