情報理論

10.誤り検出符号と誤り訂正符号
1
• 誤り検出符号
– パリティ検査符号
• 誤り訂正符号
– 垂直水平パリティ符号
– ハミング符号
2
誤り検出符号
(パリティ検査符号)
3
通信路符号と冗長性
ここからは、通信路符号化において、主に2元符号を考察してい
く。通信路アルファベットを B  {0,1} とする。
(定義)情報ビットと検査ビット
通信路符号語は、情報源符号語に加えて意識的に冗長部分
を付加して構成される。情報を表す記号列を情報部分といい、
冗長性を表す記号列を冗長部分という。特に、2元符号の場
合、情報部分を情報ビット、冗長部分を検査ビットという。
4
通信路符号の数学的表現
情報ビ ッ ト
w  ( w1 , w2 ,
, wn )  ( x1 ,
nビ ッ ト
冗長ビ ッ ト
, x k , p1 ,
kビ ッ ト
, pnk )
n  kビ ッ ト
 ( x, p)
(通信路)符号語=情報部分+冗長部分
ただし、
x  ( x1 , x2 ,
, xk )
p  ( p1, p2 ,
, pn  k )
 1  i  k , wi  xi  B  {0,1}

k  1  i  n, wi  pi  k  B  {0,1}
5
パリティ(遇奇性)
(定義)パリティ
n
符号語 w  w1 , , wn  B
に対して、次式が
成り立つとき、偶数パリティを持つという。

w1  w2 

 wn  0
 n

  wi (mod 2)  0 
 i 1

また、次式が成り立つとき、奇数パリティを持つという。
w1  w2 
 wn  1
 n

  wi (mod 2)  1
 i 1

6
例
次の符号が偶数パリティを持つか、奇数パリティを持つ
かを判定せよ。
w  ( w1 ,
, wn )
 (0, 0,1,1, 0,1, 0,1)
略記法
 00110101
 w  mod 2  4
i
(mod 2)  0
よって、偶数パリティを持つ。
これ以降では、
 mod 2 
符号に現れる1の
個数が偶数
を省略することもある。
7
練習
次の式を計算せよ。
(1)
1 0 11 0 11
(2)
11 0  0  0 11
(3)
10 10 0 10
(4)
3  4  7  5  8  9  1 (mod 2)
(5)
9  3  6  4  8  7  5 (mod 2)
(6)
5  4  3  8  6  9  2 (mod 2)
8
練習
次の符号が偶数パリティを持つか、奇数パリティを持つ
かを判定せよ。
(1)
(1,1,1,0,1,1,0,1)
(2) (0,1, 0,1,1, 0,1,1)
(3) (0, 0, 0,1,1, 0,1,1)
(4)
10111000
11001100
(6) 01001100
(5)
9
パリティ検査(符号)
1番単純な通信路符号としてパリティ検査について考える。パ
リティ検査は1誤り検出符号になっている。
パリティ検査符号は以下の符号語の形式になる。
w  ( x1 , x2 ,
, xn 1 , p )
n 1ビ ッ ト
情報ビット
1 ビッ ト
冗長ピット
これらに関係する概念を順にみていく。
10
パリティ検査(符号)の定義
(定義)パリティ検査(符号)
1ビットの検査ビット(パリティビット) p  B を持ち、偶数パリ
ティだけを符号語とするような符号を(偶数)パリティ検査符号と
n 1
いう。情報ビットを x  ( x1 , , xn 1 )  B とすると次式が
成り立つ。
w  ( x1 ,
x1 
, xn 1 , p)  B n
 xn 1  p  0
 p  x1 
 xn 1
偶数パリティ検査では、
情報ビットが偶数パリティを持
てばパリティビットは0で、
奇数パリティを持てばパリティ
ビットは1。
11
例
次の情報源符号語から、偶数パリティ検査符号を構成せよ。
(1)
x1  ( x ,
, x )  (1,0,1,1,1,0,0)  1011100
1
1
1
7
p1   x11  mod 2  4 (mod 2)  0
よって、以下のように通信路符号語が得られる。
w1  ( x11 ,
, x71 , p1 )  (1,0,1,1,1,0,0,0)  (1011100,0)
 10111000
(2)
x2  ( x12 ,
p  x
2
2
1
略記法
, x72 )  (0,1,1,1,1,0,1)  0111101
 mod 2  5 (mod 2)  1
よって、以下のように通信路符号語が得られる。
w2  ( x12 ,
, x72 , p2 )  (0,1,1,1,1,0,1,1)  (0111101,1)
 01111011
12
練習
以下のような情報源記号が与えられているとき、偶数
パリティ検査符号を求めよ。
(4)
x1  (1,1,1, 0,1,1, 0)
x2  (0,1, 0,1,1, 0,1)
x3  (0,0,0,1,1,0,1)
x4  1011100
(5)
x5  1100110
(6)
x6  0100110
(1)
(2)
(3)
13
偶数パリティ符号における符号語
HC (1)
0
HC (2)
00
01
HC (3) 001
000
011
010
1
:符号語
10
11
101
100
111
110
14
HC (4)
0010
0000
1010
0110
1000
1100
0100
0011
0111
1110
1011
1111
0001
0101
1001
1101
:符号語
15
練習
情報ビットが4ビット x  B で、パリティビットが1ビット p  B
5
の偶数パリティ符号 w  B
を考える。この符号語になりえ
るハイパーキューブ HC (5) 上頂点を図示せよ。
4
16
パリティ検査符号の誤り検出原理
性質:パリティ検査符号語間のハミング距離
偶数パリティ検査符号 W において、
各符号語 i, j, i  j, wi , wj W
のハミング距離
で以下が成り立つ。
d h ( wi , w j )  2( s  1)
 s  1
証明
各符号語 wi , w j W は全て偶数パリティを持つので、ハ
ミング距離が dh (wi , w j )  1 となることは無い。また、異
なる符号語では、 dh (wi , w j )  0 となることも無い。
QED
17
パリティ検査符号の情報伝送速度
情報ビットが n  1 で、検査ビットが1ビットの
n ビットのパリティ検査符号
w  ( x1 , x2 ,
, xn 1 , p )
n 1ビ ッ ト
の情報速度
RP
1 ビッ ト
は次式で表わされる。
n 1
RP 
[bit / 記号]
n
情報速度=
情報ビット長
符号長
18
誤り訂正符号
19
代表的誤り訂正符号
垂直水平パリティ符号
パリティ検査符号の拡張による誤り訂正符号
ハミング符号
誤りベクトルの考察による誤り訂正符号
20
垂直水平パリティ符号
21
垂直水平パリティ符号
1ビット誤り検出可能な符号であるパリティ検査符号の考
え方を拡張し、1ビット誤り訂正可能な符号を構成できる。
まず、情報ビット4ビット、冗長ビット5ビットからの9ビットの
垂直水平パリティ符号の構成法を示す。
w  ( w1 , w2 ,
, w9 )
 ( x1 , x2 , x3 , x4 , p1 , p2 , p3 , p4 , p5 )
 ( x , p)
22
情報ビット
列に関する
冗長ビット
x11
x12
r1
x21
c1
x22
c2
r2
p
行に関する
冗長ビット
全体の
冗長ビット
w  ( x11 , x12 , x21, x22 , r1, r2 , c1, c2 , p)
ただし、冗長ビットは次式で定める。
r2  x21  x22
r1  x11  x12
c1  x11  x21 c2  x12  x22
p  r1  r2  c1  c2  x11  x12  x21  x22
23
垂直水平パリティ符号における誤り訂
正の原理
i
j
列の誤り検出
行の誤り検出
誤っている (i, j ) 要素を
特定→1ビット誤り訂正
24
垂直水平パリティ符号における誤り訂
正能力
2ビット誤りを検出可能であるが、
丸と四角のどちらの組が誤りかは
を判定できない。
2ビット誤りを検出可能である。行
は特定できるが、どの列がは特定
不能。
2ビット誤りを検出可能である。列
は特定できるが、どの行かは特定
不能。
25
一般的な垂直水平パリティ符号
c
r
r c
r 1
c 1
r c
一般に、情報ビットが
であるとき、
符号ビットを (r  1)  (c  1) として構成できる。
したがって冗長ビットは r  c  1 である。
26
例
w  ( x11 , x12 , x21, x22 , r1, r2 , c1, c2 , p)
の垂直水平パリティ符号を考える。このとき、次の情報
ビットから垂直水平符号を求めよ。
x  0101  x11x12 x21x22
 r1  x11  x12  0  1  1, r2  x21  x22  0  1  1,
c1  x11  x21  0  0  0, r2  x12  x22  1  1  0,
s  x11  x12  x21  x22  0
w  (0,1,0,1,1,1,0,0,0)
27
練習
w  ( x11 , x12 , x21, x22 , r1, r2 , c1, c2 , p)
の垂直水平パリティ符号を考える。このとき、次の情報
ビットから垂直水平パリティ符号を求めよ。
(1)
(2)
(3)
x1  0001
x2  1001
x3  1101
(4)
x4  1110
28
誤り訂正例
w  ( x11 , x12 , x21, x22 , r1, r2 , c1, c2 , p)
の垂直水平パリティ符号を考える。このとき、次の符号か
ら誤りを訂正せよ。
y  w  e  000111000
0 0 1
0 1 1
0 0 0
パリティの検査から、
x21 が誤っていることが判明する。
行ベクトル毎、列ベクトル毎にパリティ検査を
行い、誤りっている行と列の交差している箇所
が誤りである。
誤りベクトルと、正しい符号は以下である。
e  010000000 w  y  e  010111000
29
練習
w  ( x11 , x12 , x21, x22 , r1, r2 , c1, c2 , p)
の垂直水平パリティ符号を考える。このとき、このとき、次
の符号から誤りを訂正せよ。
(1)
(2)
(3)
(4)
y1  100101011
y2  111101101
y3  100110110
y4  111001010
30
垂直水平パリティ符号の符号語間距離
w  ( x11 , x12 , x21, x22 , r1, r2 , c1, c2 , p)
で定義される垂直水平パリティ符号のの各符号語間の距離に
おいて、次式がなりたつ。
i, j, i  j dh (wi , w j )  3
wi   xi , pi 
dh ( xi , x j )  1
dh ( xi , x j )  2
w j   x j , pj 
において、
のとき、行と列の検査1ビットづつ異なる。
のとき、少なくとも行と列のどちらかが、
31
検査ビットが2か所異なる。
垂直水平パリティ符号の情報速度
w  ( x11 , x12 , x21, x22 , r1, r2 , c1, c2 , p)
で定義される2×2の情報ビットを持つ垂直水平パリティ符号
の情報速度 RVHP (2  2)
は、次式で表わされる。
4
RVHP (2  2) 
[bit / 記号]
9
より一般に、 r  c の情報ビットを持つ垂直水平パリティ符
号の情報速度 RVHP (r  c) は、次式で表らわされる。
rc
RVHP (r  c) 
[bit / 記号]
(r  1)(c  1)
32
ハミング符号
33
ハミング符号
垂直水平パリティ符号より効率的に冗長ビットを作り出
す方法が知られている。
まず、情報ビット4ビット、冗長ビット3ビットからの7ビットのハ
ミング符号の構成法を示す。(これを(7,4)ハミング符号とい
う。)
w  (w1 , w2 ,
, w7 )
 ( x1 , x2 , x3 , x4 , p1 , p2 , p3 )
 ( x, p)
(7, 4) ハミング符号という。
( n, k ) 符号
n : 符号総長
k : 情報ビット長
34
(7,4)ハミング符号
w  (w1 , w2 ,
, w7 )
 ( x1 , x2 , x3 , x4 , p1 , p2 , p3 )
 ( x, p)
冗長ビットを次の規則で定める。
p1  x1  x2  x3
(mod 2) での演算。
(mod 2) は省略する。
p2  x2  x3  x4
p3  x1  x2
 x4
なぜ、この式で定義する
かは、後で示す。
35
検査方程式
w  (w1 , w2 ,
, w7 )  ( x1 , x2 , x3 , x4 , p1 , p2 , p3 )
に対して、冗長ビットの決め方から次の関係式が成り立つ。
 w1  w2  w3  w5  0 ( x1  x2  x3  p1  0)

 w2  w3  w4  w6  0 ( x2  x3  x4  p2  0)
 w  w  w  w  0 ( x  x  x  p  0)
2
4
7
1
2
4
3
 1
この関係式を検査方程式という。誤りが混入しなければ、
検査方程式を満足するはずである。
36
シンドローム
検査方程式から、誤りの位置を特定するための情報を抽
出することができる。受信語が y  ( y1 , y2 , , y7 )
であるとき、受信語から次式で定義される3ビット s1s2 s3
をシンドロームという。
 s1  y1  y2  y3  y5

 s2  y2  y3  y4  y6
s  y  y  y  y
1
2
4
7
 3
受信語の誤り位
置を診断するた
めの情報
検査方程式の右辺で、送信記号 wi
を受信記号 y に置き換える。
i
37
誤りベクトルとシンドローム
 s1  y1  y2  y3  y5

 s2  y2  y3  y4  y6
s  y  y  y  y
1
2
4
7
 3
通信路により誤りの混入
 s1   w1  e1    w2  e2    w3  e3    w5  e5 

  s2   w2  e2    w3  e3    w4  e4    w6  e6 
 s  w  e   w  e   w  e   w  e 
1
1
2
2
4
4
7
7
 1
 s1  e1  e2  e3  e5

  s2  e2  e3  e4  e6
s  e  e  e  e
 3 1 2 4 7
検査方程式より
38
ハミング符号の誤り訂正原理
7ビットからなる符号には、1ビット誤りベクトルは7個しかない。
正しい場合を含めて8通りを区別できれば良い。
e1 e2
1 0
0 1
0 0
0 0
0 0
0 0
0 0
0 0
e3
0
0
1
0
0
0
0
0
e4
0
0
0
1
0
0
0
0
e5
0
0
0
0
1
0
0
0
e6
0
0
0
0
0
1
0
0
e7
0
0
0
0
0
0
1
0
s1
1
1
1
0
1
0
0
0
s2
0
1
1
1
0
1
0
0
s3
1
1
0
1
0
0
1
0
各列がシンドロー
ムの定義式に対応
する。
s3  e1  e2  e4  e7
 p3  x1  x2  x4
各行の誤りベクトル
に2進数を割り当て
る。
39
例
w  ( x1, x2 , x3 , x4 , p1, p2 , p、3 )
次のように冗長ビットを
定める(7,4)ハミング符号を考える。
p1  x1  x2  x3
p2  x2  x3  x4
p3  x1  x2  x4
このとき、次の情報ビットに対して符号語を求めよ。
x  0101
p1  x1  x2  x3  0  1  0  1
p2  x2  x3  x4  1  0  1  0
p3  x1  x2  x4  0  1  1  0
 w  ( x, p)  0101100
40
練習
w  ( x1, x2 , x3 , x4 , p1, p、2 , p3 )
に対して、 次のように
冗長ビットを定める(7,4)ハミング符号を考える。
p1  x1  x2  x3
p2  x2  x3  x4
p3  x1  x2  x4
このとき、次の情報ビットに対して符号語を求めよ。
(1)
(3)
x1  0001
x3  1101
(2)
(4)
x2  1001
x4  1110
41
例
w  ( x1, x2 , x3 , x4 , p1, 、
p2 , p3 )
に対して、次のように
冗長ビットを定める(7,4)ハミング符号を考える。
p1  x1  x2  x3
p2  x2  x3  x4
p3  x1  x2  x4
このとき、次の受信語に対して誤り訂正を行え。
y   y1, y2 ,
, y7   0111100
まず、シンドロームを求める。
s1  y1  y2  y3  y5  0  1  1  1  1
s2  y2  y3  y4  y6  1  1  1  0  1
s3  y1  y2  y4  y7  0  1  1  0  0
42
よって、シンドローム s  s1s2 s3  110 より、誤りベクトル
が一意に e  (e1 , e2 ,
, e7 )  0010000 と特定できる。
したがって、次のように誤り訂正できる。
y   y1, y2 ,
, y7   0111100
w  y  e  0111100  0010000
 0101100
43
練習
w  ( x1, x2 , x3 , x4 , p1, 、
p2 , p3 )
に対して、次のように
冗長ビットを定める(7,4)ハミング符号を考える。
p1  x1  x2  x3
p2  x2  x3  x4
p3  x1  x2  x4
このとき、次の受信語に対して誤り訂正を行え。
(1)
y1  1001011
(3)
y3  1101011
(2)
y2  1001001
(4)
y4  0110001
44
一般のハミング符号
( n, k )
ハミング符号
n  2 1
m
情報ビット長:
k  n  m  2 1  m
冗長ビット長: n  k  m
シンドローム長: m
符号長:
m
W  000,111 は、
n  3, m  2, k  1 となり、
ちなみに、符号
(3、1)ハミング符号。
45
練習
2ビットのシンドロームを持つ、
義せよ。
(3,1) ハミング符号を定
46
ハミング符号の符号語間距離
w  ( x1, x2 , x3 , x4 , p1, p、2 , p3 )
に対して、次のように冗長
ビットを定める(7,4)ハミング符号を考える。
p1  x1  x2  x3 p2  x2  x3  x4 p3  x1  x2  x4
このとき、次式が成り立つ。
i, j, i  j dh (wi , w j )  3
wi   xi , pi  w j   x j , p j 
において、
dh ( xi , x j )  1
のとき、定義より少なくとも冗長ビットが2
ビットは異なる。(例えば、 x1 が異なれば、 p1 と p3 も異
なる。)
dh ( xi , x j )  2
のとき、定義より少なくとも冗長ビットが
1ビット異なる。(例えば、x1 とx2 が異なれば、p2 も異なる。)
47
ハミング符号の情報速度
w  ( x1, x2 , x3 , x4 , p1, p2 , p3 )
で定義される(7,4)ハミング符号の情報速度
は、次式で表わされる。
RH (7, 4)
4
RH (7, 4) 
[bit / 記号]
7
より一般に、シンドローム長が m のハミング符号は、情報
ビットが、
n  2 1
m
冗長ビットが
k  n  m  2  m 1
m
の (2 1, 2  m 1) ハミング符号になり、情報速度は
次式表わされる。
m
m
m
2
 m 1
m
m
RH (2  1, 2  m  1) 
[bit / 記号]
m
2 1
48