2.2   符号 と 符号化

    NOTE-   符号化 は 「もとの 情報ベクトル に ある 行列 (生成行列) を かける」 ということ。

  本節では、符号 の 分類 および 線形符号 の 性質 について 簡単に説明し、その 生成方法 を 学ぶ。 また、もっとも 単純な 設計符号である 単一パリティ検査符号 についても 触れる。

2.2.1   ブロック符号 と 非ブロック符号

  図 2.6 に 示すように、情報源符号化 された ビット系列 を 一定長 に 区切った それぞれを 情報ブロック といい、ブロックごとに 通信路符号化 したものを 符号ブロック という。 また、符号ブロックの集合を ブロック符号 という。
グロック符号 において、各ブロック を 符号語 (codeword), 符号語 の 長さ (ビットなどの個数) を 符号長 (code length) という。 一般に、符号語 を 元 とする 集合 を 符号 (code) という。 (図 2.7)

fig_02_06
図 2.6   符号長 10 の 符号語 と 受信語 の 例

fig_02_07
図 2.7   符号 と 符号語

なお、2元 { 0, 1 } から 構成される 符号 を 2元符号 (binary code) といい、q 進数 のような、q 個 の
元 { α1, α2, …, αq } から 構成される 符号 を q 元符号 という。
符号語 の 系列 を 通信路 を 介して 送受信 するとき、受信系列 の 各ブロック を 受信語 (received code) という。

  また、ブロック符号 以外の 符号 を 非ブロック符号 (non block code) といい、その代表的なものに 第7章 で述べる 畳込み符号 (convolutional code) がある。 畳込み符号 でも 形式的に ブロック を 用いて 符号化 が 行われる。

  以下では、実際の 情報伝送で よく用いられる 2元符号 の 場合を考える。 符号長 n の 符号語 は、符号語 の 各ビット wi を 成分とする n 次元ベクトル と みなすことができる。 たとえば、符号長 5 の 符号語 w1 w2 w3 w4 w5 は 5次元ベクトル と みなして、w = (w1, w2, w3, w4, w5)、または、簡単に w = w1 w2 w3 w4 w5 と 表す。

  情報ブロックが、k 個 の ビット から なる 場合を 考えてみよう。 通信路符号化 によって 符号長 n の 符号語 が 生成されるとき (図 2.6 参照)、k 個 の ビット を 情報ビット系列 といい、情報ブロック に 付加される n - k 個 の ビット を パリティ検査ビット系列 という。 このような 構成 をもつ ブロック符号 を (n, k) 符号 といい、比 R = k / n符号化率 (coding rate) という。 なお、情報ビット系列、符号語 を、それぞれ 情報ベクトル (information vector)、符号ベクトル (code vector) とも いう。

2.2.2   単一パリティ検査符号

  単一パリティ検査符号 (single parity check code) とは、1個 の 誤り を 検出する もっとも 単純な ブロック符号 である。 これは、一定長 の 情報ビット系列 に 1ビット を 付加したものを 符号語 とする 符号 である。 この 付加される ビット を パリティ検査ビット (parity check bit) といい、符号語 に 含まれる 1 の 数 が 偶数個 となるように ビット を 末尾に付加する。 たとえば、3ビット の 情報ビット系列 であれば、000, 001, 010, 100, 011, 101, 110, 111 の 8通り があり、パリティ検査ビット を 付加 すると 表 2.1 のような 単一パリティ検査符号 を 得る。

表 2.1   単一パリティ検査符号 例
  情報ビット系列     単一パリティ検査符号  
0 0 0
0 0 1
0 1 0
1 0 0
0 1 1
1 0 1
1 1 0
1 1 1
0 0 0 0
0 0 1 1
0 1 0 1
1 0 0 1
0 1 1 0
1 0 1 0
1 1 0 0
1 1 1 1

  NOTE-   上の表は、上から順に 1 の 数 が 少なく 次数 の 低い 順 に なっている。

  このような パリティ検査ビット を 付加 することで、受信語 に 含まれる 1 の 数 が 奇数個 であれば 誤り があることがわかる。 ただし、この符号では 受信語 の どの箇所に 誤り があるのか わからないので、誤り の 訂正 は できない。

  一般に、符号長 n = k + 1 の 単一パリティ検査符号 では、情報ビット系列 を w1 w2wk とすると、符号語 は

        w1 w2wk c     ――― (2.1)

で 与えられる。 ただし、パリティ検査ビット c

        c = w1 + w2 + … + wk     ――― (2.2)

で ある。 ここで、記号 + は 2 を 法 とする 加法 で、これは 排他的論理和 とも よばれ、

        0 + 0 = 0,   0 + 1 = 1,   1 + 0 = 1,   1 + 1 = 0     ――― (2.3)

のように 定義 される (3.1 節 参照)。 このように、単一パリティ検査符号 は (k + 1, k) 符号 であり、奇数個 の 誤り を 検出することができる。

2.2.3   線形符号 と 生成行列

  符号 C の 任意 の 符号語 w1, w2 に対して、和 w1 + w2 も また C の 符号語 であるとき、C線形符号 (linear code) という (図 2.8)。 このとき、符号 C は 和 に関して 閉じている という。 実際に 工学で 用いられている 符号 は、ほとんど が 線形符号 である。

fig_02_08_
図 2.8   線形符号 C

  (n, k) 線形符号 では、符号化 により k 個 の 情報ビット (情報ベクトル) は 長さ n の 符号語 (符号ベクトル) に 変換される。 この変換は、行列 によって 表される。 いま、情報ベクトル および 符号ベクトル を、それぞれ α = (α1, α2, …, αk), w = (w1, w2, …, wn) と すると、行列 Gk × n 行列 として、(n, k) 線形符号 は

        w = α G     ――― (2.4)

により生成される。 この 行列 G生成行列 (generator matrix) といい、成分表示 は

        G =





g11  
g11  

gk1  
g12  
g22  

gk2  
…  
…  

…  
g1n
g2n

gkn






    ――― (2.5)

となる。 このような 符号化 は、k 次元 の 情報ベクトル から n 次元 の 符号ベクトル への 線形写像 である (詳しくは、線形代数学の本を参照)。

    NOTE-   GF (q) 上 の 符号長 n の 線形符号 C の 基底 { w1, w2, …, wk } に含まれる 各符号語 を 行 として 並べた k × n 行列 を C の 生成行列 と呼ぶ。

例題 2.1

単一パリティ検査符号 は 線形符号 であることを 示せ。

解答

符号長 k + 1 の 単一パリティ検査符号 を C とする。 C の 任意 の 二つの 符号語 w1, w2

        w1 = (x1, x2, …, xk, c1),     w2 = (y1, y2, …, yk, c2)     ――― (2.6)

と おく。 ただし、c1 = x1 + x2 + … + xk,   c2 = y1 + y2 + … + yk である。

このとき

        w1 + w2 = ( x1 + y1,   x2 + y2,   …,   xk + yk,   c1 + c2 )     ――― (2.7)

であるが、

        (x1 + y1) + (x2 + y2) + … + (xk + yk) = c1 + c2     ――― (2.8)

と なり、c1 + c2w1 + w2 の パリティ検査ビット である。 よって、C は 線形符号 である。 ◆

例題 2.2

符号長 5 の 線形符号 C の 生成行列 を

        G =





1 1 0 0 0
0 1 1 0 1
1 0 1 1 0






と する。 G によって生成される 線形符号 C を 求めよ。

解答

符号長 n = k + 1 = 5 より k = 4 であるから、情報ベクトル を α = ( a1, a2, a3 ) ( a1, a2, a3 ∈ { 0, 1 } ) とおく、情報ベクトル αG の 積 より、

        C = { ( a1, a2, a3 ) Ga1, a2, a3 ∈ { 0, 1 } }
          = { ( a1 + a3,  a1 + a2,  a2 + a3,  a3,  a2 ) | a1, a2, a3∈ { 0, 1 } }     ――― (2.9)

  NOTE-   符号化 は 「もとの 情報ベクトル に ある 行列 (生成行列) を かける」 ということ。 a1, a2 a3 は それぞれ 情報ブロック の 各ビット を 代表している 変数 と 考える。

( a1, a2, a3 )



1 1 0 0 0
0 1 1 0 1
1 0 1 1 0




    = ( a1x1+a2x0+a3x1, a1x1+a2x1+a3x0, a1x0+a2x1+a3x1, a1x0+a2x0+a3x1, a1x0+a2x1+a3x0 )

    = ( a1+a3, a1+a2, a2+a3, a3, a2 )   ―― 情報ブロック 3ビット を G で 符号化 して 5ビット の 符号語 を得る 式

と なる。 ここで、たとえば a1 = 1, a2 = 0, a3 = 1 を 代入すると、C の 元 は ( 0, 1, 1, 1, 0 ) となる。 これを "01110" で表す。 a1, a2, a3 の おのおのに 0, 1 を 代入すると、線形符号

        C = { 00000, 11000, 01101, 10110, 10101, 01110, 11011, 00011 }     ――― (2.10)

を 得る。 この符号 Ck = 3, n = 5 であるから、(5, 3) 線形符号 である。 ◆

例題 2.3

符号長 5 の 単一パリティ検査符号 C の 生成行列 G を 導き、C の 符号語 すべて 求めよ。

解答

符号長 n = k + 1 = 5 より k = 4 であるから、情報ベクトル を α = (a1, a2, a3, a4) とおくと、パリティ検査ビット C は、

  c = a1 + a2 + a3 + a4   ――― (2.11)

である。 このとき、符号語 w は、

  w = (a1, a2, a3, a4, c)

    = (a1, a2, a3, a4, a1 + a2 + a3 + a4)

    = (a1, a2, a3, a4, 0) + (0, 0, 0, 0, a1 + a2 + a3 + a4)

    = (a1, a2, a3, a4)








1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1









+ (a1, a2, a3, a4)








0 0 0 0 1
0 0 0 0 1
0 0 0 0 1
0 0 0 0 1
0 0 0 0 1









    = (a1, a2, a3, a4)


















1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1









+








0 0 0 0 1
0 0 0 0 1
0 0 0 0 1
0 0 0 0 1
0 0 0 0 1



















    = (a1, a2, a3, a4)








1 0 0 0 1
0 1 0 0 1
0 0 1 0 1
0 0 0 1 1
0 0 0 0 1









と 表される。 これにより、生成行列 は、

    G =








1 0 0 0 1
0 1 0 0 1
0 0 1 0 1
0 0 0 1 1
0 0 0 0 1









となる。 また、w = (a1, a2, a3, a4, c) の 情報ビット系列 a1 a2 a3 a4 の おのおの に 0, 1 を 代入すると、符号長 5 の 単一パリティ検査符号

    C = { 00000, 10001, 01001, 00101, 00011, 11000, 10100, 10010
            01100, 01010, 00110, 11101, 11011, 10111, 01111, 11110 }   ―― (2.14)

を得る。

2.2.4   組織符号 と その生成

  図 2.9 のように、情報ビット系列 と パリティ検査ビット系列 の 位置 が 明確に分かれている 符号 を、組織符号 (systematic code) という。 符号長 と 情報ビット数 を 明示して (n, k) 組織符号 ともいう。

fig_02_09
図 2.9   (n, k) 組織符号 の 符号

  例題 2.2 のように、単に G を 乗じる 符号化 では、情報ビット系列 α = a1 a2 a3 は ばらばら に なって 符号化 され、組織符号 にならない。 この場合、受信語 から 情報ビット系列 を 取り出すには 別の処理が必要となり、効率的 でない。

  そこで、ここでは、行列 の 既約標準形 というものを 利用する 組織符号 の 生成方法について 述べる。

  図 2.10 のように、k × n (k < n) の 生成符号 G の 左側 の k × k 行列 の 階数 が k の とき、行基本操作 (1.5節参照) によって、G を つぎの 形 に 変形 することができる。

        G0 = (Ik P)     ――― (2.15)

fig_02_10
図 2.10   (n, k) 既約標準形 への 変形

ここで、Ikk 次 の 単位行列 である。 このような 生成行列 G0 の 形 を 既約標準形 という。 もし、G の 左側 の k × k 行列 の 階数 が k より 小さければ、G の 列ベクトル の 適当な 入れ換え によって 階数 を k にしておく。

  生成行列 が 既約標準形 G0 の場合、情報ベクトル を α = (a1, a2, …, ak) とすると、

        α G0 = α (Ik P) = (α  α P)     ――― (2.16)

のように 符号化 される。 この 符号語 (α, α P) は、情報ビット系列 α が まとまっているので 組織符号 に なっている。 (図 2.11)

fig_02_11
図 2.11   組織符号 の 生成

例題 2.4

(6, 4) 線形符号 の 生成行列 を

        G =






1 1 1 0 0 1
0 1 0 1 1 0
1 0 1 1 0 1
1 1 0 1 1 1







とする。

(1) 既約標準形 G0 を 求めよ。

(2) 情報ベクトル α = (a1, a2, a3, a4) を G0 によって 符号化 せよ。

解答

(1) そのまま 行基本操作 を 行うと G

    G =






1 1 1 0 0 1
0 1 0 1 1 0
1 0 1 1 0 1
1 1 0 1 1 1







①+③
①+④
―――→







1 1 1 0 0 1
0 1 0 1 1 0
0 1 0 1 0 0
0 0 1 1 1 0







②+③
―――→







1 1 1 0 0 1
0 1 0 1 1 0
0 0 0 0 1 0
0 0 1 1 1 0







    ③←→④
――――→







1 1 1 0
0 1 0 1
0 0 1 1
0 0 0 0
0 1
1 0
1 0
1 0







    ――― (2.17)

と なり、左側 4 × 4 行列 の 階数 は 3 であり 単位行列 にできない。 そこで G の 第4列 と 第5列 を 入れ換えた行列

    G ' =






1 1 1 0 0 1
0 1 0 1 1 0
1 0 1 0 1 1
1 1 0 1 1 1







について 行基本操作 を 行うと、

    G ' =






1 1 1 0 0 1
0 1 0 1 1 0
1 0 1 0 1 1
1 1 0 1 1 1







①+③
①+④
―――→







1 1 1 0 0 1
0 1 0 1 1 0
0 1 0 0 1 0
0 0 1 1 1 0







②+③
―――→







1 1 1 0 0 1
0 1 0 1 1 0
0 0 0 1 0 0
0 0 1 1 1 0







      ③←→④
――――→







1 1 1 0 0 1
0 1 0 1 1 0
0 0 1 1 1 0
0 0 0 1 0 0







②+①
―――→







1 0 1 1 1 1
0 1 0 1 1 0
0 0 1 1 1 0
0 0 0 1 0 0







③+①
―――→







1 0 0 0 0 1
0 1 0 1 1 0
0 0 1 1 1 0
0 0 0 1 0 0







        ④+②
④+③
―――→







1 0 0 0 0 1
0 1 0 0 1 0
0 0 1 0 1 0
0 0 0 1 0 0







    ――― (2.19)

と なる。 これより、G の 既約標準形

        G0 =






1 0 0 0 0 1
0 1 0 0 1 0
0 0 1 0 1 0
0 0 0 1 0 0







    ――― (2.20)

が 得られる。

(2) 情報ベクトル α = (a1, a2, a3, a4) と G0 の 積 より、

      w = α G0 = (a1, a2, a3, a4)






1 0 0 0 0 1
0 1 0 0 1 0
0 0 1 0 1 0
0 0 0 1 0 0







          = (a1, a2, a3, a4, a2+a3, a1)     ――― (2.21)

と なる。 式(2.21) は 左側 4ビット が 情報ビット系列 に 一致し、組織符号 に なっている。 ◆

2.2.5   パリティ検査行列

  (n, k) 線形符号 C の 生成行列 Gk × n 行列 であり、符号語 は w = α G によって 生成される。 いま、(n - k) × n 行列 H があり、

        G H T = Ο   (Οk × (n - k) の 0 行列)     ――― (2.22)

を 満たすとする。 このとき、式(2.22) の 両辺に 左から 情報ベクトル α を かけると、

        w H T = 0     ――― (2.23)

          NOTE-   w : 符号語

と なる。 この式を パリティ検査方程式 (parity chech equation) といい、(n - k) × n 行列 Hパリティ検査行列 (parity check matrix) という。 式(2.23) から わかるように、H の 列数 は 符号長 に 等しい。 パリティ検査行列 H が 与えられているとき、式(2.23) を 満たす 符号語 w の 全体は (n, k) 線形符号 を つくる。

  G が 既約標準形 (Ik P) の場合は、式(2.22) を満たす H は ( -P T  In-k ) と なる (図 2.12)。
実際、このとき、

        G H T = (Ik P)



-P
In-k




= -P + P = Ο     ――― (2.24)

と なる。

fig_02_12_a_         fig_02_12_b_
(a)   G の 既約標準形 (b)   H の 既約標準形
図 2.12   GH の 既約標準形

例題 2.5

(7, 3) 線形符号 の 生成行列 を

        G =





1 0 0 1 0 1 1
0 1 0 1 1 0 1
0 0 1 0 1 1 1






と する。 パリティ検査行列 H を 求めよ。

解答

  NOTE-   既約標準形 G0 = (Ik P) で
    Ik : k × k の 単位行列
    P : パリティを付与する際の計算行列
    n : 符号長     k : 情報ビット長
    ビットにおいて -a = a なので -P = P

G は 既約標準形 より、P =





1 0 1 1
1 1 0 1
0 1 1 1






である。 検査行列 は H = ( -P T  In-k ) から
        H =







1 1 0 1 0 0 0
0 1 1 0 1 0 0
1 0 1 0 0 1 0
1 1 1 0 0 0 1








    ――― (2.25)

と なる     ◆