ベクトルとは, いくつかの数を (横または縦に) 並べて括弧でくくったものです.

横向きにするか縦向きにするかは場合に応じて使い分けます. 2 つの実数が並べられたベクトルは平面上の点を, 3 つの実数が並べられたベクトルは空間の点を指し示すことができます. 4 つ並ぶと「4 次元空間の点」ということになり, われわれの目には見えなくなりますが, それでもちゃんと扱えるところが数学のありがたいところです.
行列とは, いくつかの数を長方形状に並べて括弧でくくったものです.

ベクトルはボールド体の小文字, 行列は大文字で表すのが普通です. ベクトルを表すのに小文字の上に矢印を書く流儀も多いですが, これは空間や平面で「向きと大きさで決まる量」ということを強調した記号と考えられます. このあとの主題である「情報」も実はベクトルで表すのですが, 情報に矢印をつけるというのは何となく変ですね. そういったこともあり, 大学の数学では「ベクトルはボールド体の小文字」が普通なわけです. また, ベクトルや行列の中に並んでいる数を「成分」といいます.
2. ベクトルと行列の掛け算
このあたりからは紙と鉛筆をご用意頂いた方がいいかも知れません. 一般論は複雑なので, このあと必要な場合だけを述べます.
(1) ベクトル×行列
下の例のように, 横向きのベクトルを前に, そして行列を後ろに置いてこれらを掛けるには, 矢印の向きに数をたどり, 対応する場所にある数どうしを掛けて足し, 順に並べていきます. 結果は横向きのベクトルになります.


行列どうしの積も条件が合えば可能ですが, ここでは省略します.
3. 情報もベクトルで
実際のディジタル情報はすべて 2 進数の形で扱います. それは, 電流 ON=1, 電流 OFF=0, と電気的に容易に表されるからです. 例えば英文で通信を行うためにアルファベット, その他の記号(ピリオド, コンマ, ハイフンなど, 文字以外にもいろいろ必要ですね)を2進数で表す方法として使われる「ASCII(アスキー)コード」は 7 桁の 2 進数を用いています( 27=128 なので, 128 個のものまでを区別できる, 言い換えれば 128 文字まで 2 進数で扱えます).
誤り訂正のためにもとの情報に余分な情報を付け加える, ということが必要ですが, 実際の符号理論では, それを行列とベクトルの掛け算を利用して行います. そのため, 2 進数で表された情報も, それ自身を 1 つの数として扱うのではなく, 1 桁= 1 つの成分としてベクトルで表します. 次のような感じです:

小学校以来, 「1+1=2」と習って久しいわけですから, 1+1=0にはちょっと違和感がありますね. あるいは新鮮な感じがする方もあるでしょうか. このように決めると数学的にとてもうまく行く, という数の体系があるのですから不思議です. それは {0,1} という, 0 と 1 のみを要素としてもつ集合で, 実は, この集合の中だけで和, 差, 積, 商をうまく行いたい, という要請から必然的に出てくる計算規則です. 数学者はこの集合を F2 と表します. これは「有限体」と呼ばれるものの一種で, もとは整数論という純粋数学の中から生まれた概念ですが, 今や応用面でもなくてはならないものとなっています. F2= {0,1} での計算規則をまとめると次のようになります:


伝達途中で誤りが発生しても, それを正しく訂正するためにもとの情報に余分な情報を付け加えること, この過程を「符号化」といいます. 符号化は
さて, もとの情報が 2 桁の 2 進数で表されているとしましょう. つまり 00, 01, 10, 11 の 4つの数, 文字だと 4 文字ですべての文を表現する, という状況です. 現実にはこれでは苦しいですが, 桁数が多いと見づらくて大変ですから, 説明としてはこのくらいがいいでしょう. 余分な情報を付け加える規則を決めることは, 4 つの情報ベクトル (0,0), (0,1), (1,0), (1,1) に(一斉に)掛ける行列を決めることと同じです. ここでは


通常の情報伝達では, すべての信号は 0 または 1 のいずれかと解釈されますから, 途中で誤りが発生するということは
さて, 01001 を受け取ったとき, もともと送られたベクトルが何かを知らない状態で, 送られたベクトルを復元しなければなりません. それには別の行列


まず少し疑問が残るところは, もっと多くの誤りが起きたらどうなるか, という点です. 結論からいうと「訂正不可能」となります. つまり, この G, H の取り方では, 5 桁につき 1 個の誤りにしか対応できません (試しに 2 箇所の 0, 1 を入れ替えたベクトル, 例えば 11010+01100=10110 を縦向けて H と掛けてみて下さい). もっとたくさんの誤りにも対応したいなら, より「性能のいい行列」を探す, ということになります.
上のような行列 G, H をどうやって決めるか, という問題ですが, きちんとやるのは案外難しく, 特に「何桁増やせばいくつの誤りまで対応できるか」(上の G, H は縦の列が 5 個ありますが, なぜ 5 個か) まで考えると, これは専門的な符号理論で学ぶ内容になってしまいます. また, 実際に「究極のよい行列」を見つけることは, 最先端の符号理論にとっても非常に難しい問題に属します (だからこそ符号理論は研究され続けているのです).
ただ, 本稿の例の G, H は次のような考え方で作りました: まず H は, 誤りベクトルの種類によって, 掛けた時に違うベクトルが出ればよいのですから, 5 つある H の列 (縦の並び) がすべて異なるように作りました. 次に G は


2008.3 公開, 2019.7 改訂
応用代数学研究室に戻る