2.2 符号 と 符号化NOTE- 符号化 は 「もとの 情報ベクトル に ある 行列 (生成行列) を かける」 ということ。 本節では、符号 の 分類 および 線形符号 の 性質 について 簡単に説明し、その 生成方法 を 学ぶ。 また、もっとも 単純な 設計符号である 単一パリティ検査符号 についても 触れる。 2.2.1 ブロック符号 と 非ブロック符号 図 2.6 に 示すように、情報源符号化 された ビット系列 を 一定長 に 区切った それぞれを 情報ブロック といい、ブロックごとに 通信路符号化 したものを 符号ブロック という。 また、符号ブロックの集合を ブロック符号 という。
なお、2元 { 0, 1 } から 構成される 符号 を 2元符号 (binary code) といい、q 進数 のような、q 個 の また、ブロック符号 以外の 符号 を 非ブロック符号 (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 のような 単一パリティ検査符号 を 得る。
NOTE- 上の表は、上から順に 1 の 数 が 少なく 次数 の 低い 順 に なっている。 このような パリティ検査ビット を 付加 することで、受信語 に 含まれる 1 の 数 が 奇数個 であれば 誤り があることがわかる。 ただし、この符号では 受信語 の どの箇所に 誤り があるのか わからないので、誤り の 訂正 は できない。 一般に、符号長 n = k + 1 の 単一パリティ検査符号 では、情報ビット系列 を w1 w2 … wk とすると、符号語 は w1 w2 … wk 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 は 和 に関して 閉じている という。 実際に 工学で 用いられている 符号 は、ほとんど が 線形符号 である。
(n, k) 線形符号 では、符号化 により k 個 の 情報ビット (情報ベクトル) は 長さ n の 符号語 (符号ベクトル) に 変換される。 この変換は、行列 によって 表される。 いま、情報ベクトル および 符号ベクトル を、それぞれ α = (α1, α2, …, αk), w = (w1, w2, …, wn) と すると、行列 G を k × n 行列 として、(n, k) 線形符号 は w = α G ――― (2.4) により生成される。 この 行列 G を 生成行列 (generator matrix) といい、成分表示 は
となる。 このような 符号化 は、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 + c2 は w1 + w2 の パリティ検査ビット である。 よって、C は 線形符号 である。 ◆ 例題 2.2符号長 5 の 線形符号 C の 生成行列 を
と する。 G によって生成される 線形符号 C を 求めよ。 解答符号長 n = k + 1 = 5 より k = 4 であるから、情報ベクトル を α = ( a1, a2, a3 ) ( a1, a2, a3 ∈ { 0, 1 } ) とおく、情報ベクトル α と G の 積 より、
C = { ( a1, a2, a3 ) G |a1, a2, a3 ∈ { 0, 1 } } NOTE- 符号化 は 「もとの 情報ベクトル に ある 行列 (生成行列) を かける」 ということ。 a1, a2 a3 は それぞれ 情報ブロック の 各ビット を 代表している 変数 と 考える。
= ( 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) を 得る。 この符号 C は k = 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)
と 表される。 これにより、生成行列 は、
となる。 また、w = (a1, a2, a3, a4, c) の 情報ビット系列 a1 a2 a3 a4 の おのおの に 0, 1 を 代入すると、符号長 5 の 単一パリティ検査符号
C = { 00000, 10001, 01001, 00101, 00011, 11000, 10100, 10010 を得る。 2.2.4 組織符号 と その生成図 2.9 のように、情報ビット系列 と パリティ検査ビット系列 の 位置 が 明確に分かれている 符号 を、組織符号 (systematic code) という。 符号長 と 情報ビット数 を 明示して (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)
ここで、Ik は k 次 の 単位行列 である。 このような 生成行列 G0 の 形 を 既約標準形 という。 もし、G の 左側 の k × k 行列 の 階数 が k より 小さければ、G の 列ベクトル の 適当な 入れ換え によって 階数 を k にしておく。 生成行列 が 既約標準形 G0 の場合、情報ベクトル を α = (a1, a2, …, ak) とすると、 α G0 = α (Ik P) = (α α P) ――― (2.16) のように 符号化 される。 この 符号語 (α, α P) は、情報ビット系列 α が まとまっているので 組織符号 に なっている。 (図 2.11)
例題 2.4(6, 4) 線形符号 の 生成行列 を
とする。 (1) 既約標準形 G0 を 求めよ。 (2) 情報ベクトル α = (a1, a2, a3, a4) を G0 によって 符号化 せよ。 解答(1) そのまま 行基本操作 を 行うと G は
と なり、左側 4 × 4 行列 の 階数 は 3 であり 単位行列 にできない。 そこで G の 第4列 と 第5列 を 入れ換えた行列
について 行基本操作 を 行うと、
と なる。 これより、G の 既約標準形
が 得られる。 (2) 情報ベクトル α = (a1, a2, a3, a4) と G0 の 積 より、
= (a1, a2, a3, a4, a2+a3, a1) ――― (2.21) と なる。 式(2.21) は 左側 4ビット が 情報ビット系列 に 一致し、組織符号 に なっている。 ◆ 2.2.5 パリティ検査行列(n, k) 線形符号 C の 生成行列 G は k × 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)。
と なる。
例題 2.5(7, 3) 線形符号 の 生成行列 を
と する。 パリティ検査行列 H を 求めよ。 解答
NOTE- 既約標準形 G0 = (Ik P) で
と なる ◆ |