誤り訂正符号

IEICE TRANS. COMMUN., VOL.E89–B, NO.1 JANUARY 2006
1
PAPER
誤り訂正符号
大槻知明 † , Regular Member
1.
はじめに
ディジタル信号の高品質な伝送や記録・再生には,誤り制
御技術が不可欠である.これは,伝送路には歪みや雑音
が存在するからである.また,ある一定の送信電力でよ
り優れた品質を実現する,あるいは所要送信電力を低減
するためにも,誤り制御技術は必要不可欠である.誤り制
御技術は,携帯電話や衛星通信などのディジタル通信シ
ステムや,CD や DVD などの AV 機器(記録装置)に広
く用いられている.通信システムにおける誤り制御技術
は,FEC(前方誤り訂正:Forward Error Correction)方
式と ARQ(自動再送要求:Automatic Repeat reQuest)
方式に大別される.FEC 方式は,誤り訂正符号を用い
て伝送路での誤りを検出・訂正する.一方,ARQ 方式
は,誤り検出符号を用いて伝送路での誤りを検出し,送
信側にデータの再送を要求する.ARQ 方式は,誤りの
検出ができればいいため,FEC 方式に比べ情報に付加す
る冗長が少なくてすむが,帰還通信路とバッファが必要
である.また,ARQ 方式に FEC を用いた Hybrid ARQ
(HARQ) 方式もある.本稿では,FEC 方式として,代
表的な誤り訂正符号について説明する.
2.
線形ブロック符号
ブロック符号とは,符号語と呼ばれる固定長ベクトルか
ら成る集合である.ベクトルの要素数を符号長と呼び n
で表す.符号語の要素は l 個の要素から成る符号アルファ
ベットから選ばれる.符号アルファベットが 0, 1 の2つ
の元から成るとき,その符号は二元符号と呼ばれ,符号
語の各要素はビットと呼ばれる.また,符号アルファベッ
トの数が q (q > 2) であるとき,この符号は q 元符号と
呼ばれる.符号長 n の二元符号の符号語として取り得る
ベクトルの個数は 2n である.この 2n 個のベクトルから
M = 2k (k < n) 個のベクトルを選択して符号を構成す
る.このようにして得られるブロック符号を (n, k) ブロッ
ク符号と言う.このとき符号化率は k/n である.ci , cj
を (n, k) ブロック符号の任意の2つの符号語とし,α1 , α2
を符号アルファベットの任意の元とする.α1 ci + α2 cj が
(n, k) ブロック符号の符号であるとき,その符号は線形
符号となる.この定義からわかるように,線形符号はす
べての要素が 0 である符号語を含む.
Manuscript received January 1, 2005.
Manuscript revised April 1, 2005.
Final manuscript received November 11, 2005.
†
〒 223-8522 横浜市港北区日吉 3-14-1 慶應義塾大学理工
学部情報工学科
2.1
最小距離と誤り訂正
線形ブロック符号のの誤り訂正能力を決める重要なパラ
メータでの一つに最小距離がある.今,ハミング重みが t
以下の (n, k) 線形ブロック符号について,符号ベクトル
ci が送信され,受信ベクトルが r = ci + e であるとき,
ハミング重みが w(e) ≤ t であるすべての誤りパターン
e に対して,復号器が ĉ = ci を出力する場合を考える.
ここで,2k 個の符号ベクトルは,すべて等確率で送信さ
れると仮定する.そのときの最適復号は,受信ベクトル
r に最も近い符号ベクトルを選ぶ,すなわちハミング距
離 d(ci , r) が最も小さい符号ベクトルを選ぶ最小距離復
号である.ここで,d(x, y) はベクトル x, y 間のハミン
グ距離を表す.最小距離復号器は,符号の最小距離 dmin
が dmin ≥ 2t + 1 であるとき,ハミング重みが w(e) ≤ t
であるすべての誤りパターン e を検出し,訂正すること
ができる.すなわち,最小距離が dmin である (n, k) 線
形ブロック符号は,以下の条件を満たすときのみ,t 個
までの誤りを訂正することができる.
⌊
⌋
1
t≤
(dmin − 1)
2
ここで記号 ⌊x⌋ はガウスの記号であり,x 以下の最大の
整数を表す.
2.2
巡回符号
巡回符号 (Cyclic Code) は,符号語を巡回シフトしたも
のも,また符号語となる符号である.巡回符号の特徴に,
符号化が容易なことがある.
2.3
ハミング符号
ハミング符号には,二元,非二元のどちらも存在する.例
として,二元ハミング符号について,その性質を示す.こ
こで二元ハミング符号とは,以下のような符号パラメー
タを持つ (n, k) 線形ブロック符号である.
1. ブロック長:n = 2m − 1
2. 情報ビット長:k = 2m − m − 1
3. パリティビット長:n − k = m
ここで m ≥ 3 である.m = 3 のとき,(7,4) ハミング符号
が得られる.ハミング符号の生成多項式は,GF(2m ) の
原始元 α の最小多項式 (α を根とする最小次数の非零の
多項式) である.なお,α が G(x) の根であれば G(α) = 0
IEICE TRANS. COMMUN., VOL.E89–B, NO.1 JANUARY 2006
2
であり,(G(α))2 = G(α2 ) = 0 であるので,α2 も根であ
2
d−1
る.これを繰り返して得られる根 {α, α2 , α2 , · · · , α2 }
d
を α の共役根という.ここで,d は α2 = α を満たす最
小の正の整数である.(7,4) ハミング符号の生成多項式
は,G(x) = x3 + x + 1 である.
(n, k) パリティ符号の検査行列は,n − k 個の行と n
個の列を有する.二元 (n, k) ハミング符号の場合,n =
2m − 1 個の列ベクトルは,すべての要素が 0 であるベク
トルを除く,長さ n − k = m のすべてのベクトルから成
る.m > 1 の場合,パリティ検査行列の列ベクトルを加
えると零ベクトルとなるものが存在する.従って,(n, k)
ハミング符号の最小距離は dmin = 3 である.生成行列
G とパリティ検査行列 H には,次の関係が成立する.
GHT = 0 (mod 2)
(1)
HGT = 0 (mod 2)
(2)
ハミング符号の誤り訂正法として,シンドロームを
用いる方法がある.ここで,シンドロームとは,受信多
項式に根 α を代入した結果である.今,1ビット以下の
誤りについて考える.シンドロームが 0 のとき誤りがな
いとし,0 でないとき,シンドロームは誤りビットに対
応する H の列ベクトルに相当する.H の列ベクトルは
それぞれ独立であるため,誤りビット位置を特定し訂正
することができる.
2.4
BCH 符号
ハ ミ ン グ 符 号 は ,GF(2m ) の 原 始 元 α の 最 小 多 項
式 を 生 成 多 項 式 と す る 符 号 で あ る .こ れ に 対 し ,
{α, α3 , · · · , α2t−1 } の t 個の元を根としてもつ最小多項
式を生成多項式とする符号を BCH (Bose-ChaudhuriHocquenghem) 符号と言う.t = 1 の BCH 符号はハミ
ング符号となる.BCH 符号の復号では,根が複数であ
ることを利用して,複数ビット誤りの復号事象を分解す
る.例として,符号長 n = 15, 情報ビット数 k = 7 をも
ち,2ビットのランダム誤りを訂正する BCH(15,7) 符
号を用いて復号手順を説明する.BCH(15,7) 符号の生
成多項式は,G(x) = (x4 + x + 1)(x4 + x3 + x2 + x +
1) = x8 + x7 + x6 + x4 + 1 である.まず,受信多項式
Y (x) = C(x) + E(x) について,以下で定義される共役
根でない独立な根から得られるシンドローム S1 , S3 を計
算する.
Si = Y (αi ),
i = 1, 2, 3, · · · , 2t − 1
(3)
ここで,C(x) は符号語,E(x) は誤りの位置を示す誤り
多項式である.また,C(αi ) = 0 であるので,Si = E(αi )
となる.誤り位置 i1 , i2 , · · · , il (l ≤ t) に対し,誤り位置
多項式と呼ばれる次式を定義する.
σ(z) = (1 − αi1 z)(1 − αi2 z) · · · (1 − αil z)
= 1 + σ1 z + σ2 z 2 + · · · + σ l z l
誤り位置多項式 σ(z) は,αi1 , αi2 , · · · , αil を根として持
つので,シンドロームから,この σ(z),すなわち σi が求
まれば誤り位置が分かる.l = 2 の場合,σ1 , σ2 は,S1 , S3
を用いて次式のように表される.
σ1 = S 1
σ2 =
S13 + S3
S1
(4)
シンドロームを用いて誤り多項式 σ(z) を求めた後,
α−i , i = 0, 1, 2, · · · を代入することでその根を求め,誤り
位置を特定する.この復号法は時間がかかるので,t = 2
の二重誤り訂正符号では,誤り位置多項式の係数と根の
関係を表で用意しておき,表を参照することで誤り位置
を特定することが多い.
2.5
リード・ソロモン (RS) 符号
BCH 符号は,符号を構成するシンボルが GF (2) の元 0,
1 であり,その生成多項式の一つの根 α をガロア拡大体
GF (2m ) の元に選んで構成される.これに対し,リード・
ソロモン (RS) 符号は,符号を構成するシンボルが,α が
定義されるガロア拡大体 GF (2m ) の元である BCH 符号
である.そのため,RS 符号は,シンボル単位で誤りを
訂正する符号である.t 個までのシンボル誤りを訂正す
る RS 符号の生成多項式 G(x) は,次式で与えられる.
G(x) = (x − α)(x − α2 ) · · · (x − α2t )
(5)
ここで,符号長は n = 2m − 1,情報シンボル数は k =
n − 2t である.
RS 符号は,多値符号であるため,誤りの大きさも
必ずしも 1 ではない.そのため,RS 符号の復号の際に
は,BCH 符号の復号の際と同様,誤り位置を推定する
のに加えて,誤りの大きさを推定する必要がある [1][2].
RS 符号は,実用上最も重要な誤り訂正符号の一つ
であり,CD や DVD,放送など,幅広く用いられている.
3.
畳み込み符号
ブロック符号が一定の情報長 (ブロック) 単位で符号化す
る符号であるのに対し,畳み込み符号は過去の数ビットを
用いて現時点での符号化ビットを得る符号であり,情報系
列と符号系列の対応が逐次的である.符号化率 R = k/n
の畳み込み符号では,情報ビット k ビットに対し,符号
化ビット n ビットを出力する.各 n ビットは,現在及び
過去の情報ビットによって定まる.この現在及び過去の
情報ビットへの依存長を拘束長 K と一般に表す.拘束長
の定義として,過去の情報ビットへの依存長だけを表す
場合もある.
3.1
畳み込み符号器
図 1 に,R = 1/2,K = 3 の畳み込み符号の符号器を示
す.符号器は,K − 1 個のシフトレジスタと mod 2 の加
算器により構成され,その接続の仕方により現在及び過
去のビット間の相関が決まる.復号の際には,この相関
を用いる.接続の仕方の表現方法の一つに,ブロック符
号と同様の生成行列がある.図 1 の場合,生成行列 G(D)
は次式のように表される.
大槻知明: 誤り訂正符号
3
㐔ᘇⁿ⟤Ꮔ
3.3
符号系列の終端
ථງ
ฝງ
ฝງ
図 1 畳み込み符号器:R = 1/2, K = 3, G(D) = [1 + D 2
D + D2 ]
≟ឺ
S00
1+
00
11
S01
S10
10
11
00
ථງ
01
ථງ
3.4
10
S11
01
図2
トレリス線図:G(D) = [1 + D 2
G(D) = [1 + D2
1 + D + D2 ]
1 + D + D2 ]
実際のアプリケーションでは,情報系列は有限長であり,
符号系列も有限長となる.最後の情報ブロックの符号化
終了と同時に符号系列を打ち切ると,終わりに近い情報
ブロックが影響を与える符号ブロックを生成しなくなる
ため,この情報ブロックは誤って復号されやすくなる.
そのため,通常,情報ブロックの最後に,シフトレジス
タの状態を特定できるように,ダミービット 0 をシフト
レジスタ数分の K − 1 ビット入力して符号系列を終端す
る.この終端処理により,誤り率特性を改善することが
できる.終端処理は誤り利得性を改善する一方,ダミー
ビットの送信により伝送効率を下げるので,終端を行う
間隔は十分長くとる.
(6)
ここで,D は遅延演算子であり,Di は i 単位時間 (ここ
では1ビット時間) の遅延を表す.なお,本稿では2元
符号として畳み込み符号を説明するが,一般には q 元符
号であってもよい.符号器の別の表現方法として,mod
2 加算器と入力及びシフトレジスタ出力の接続の有無を
1, 0 で表現し,接続全体を表すその2進系列を 8 進表現
する方法も良く用いられている.図 1 の符号器の場合,
(5, 7)8 と表す.ここで添え字の “8”は,8 進表現である
ことを表し,省略されることもある.
3.2 トレリス線図
畳み込み符号の入力ビット,シフトレジスタの状態,符
号器出力(符号化ビット)の関係を表す方法に,トレリ
ス線図がある.図 2 に,図 1 のトレリス線図を示す.Sij
はシフトレジスタの中身が 1 時刻前が j ,2 時刻前が i で
あることを表す.同じ状態を Sji と表すこともある.図
の例では,シフトレジスタ数が 2 であるので,状態数は
22 の 4 である.トレリス線図の実線は,符号器への入
力が 0 であるときに生じる符号器の状態遷移を表す.ま
た破線は,符号器への入力が 1 であるときに生じる符号
器の状態遷移を表す.各状態間の線は枝 (ブランチ) と
呼ばれる.枝に付けられているラベルは,その状態遷移
に対応する符号器出力を表す.図の例では,符号化率が
R = 1/2 であるので,各状態からの遷移は 1 ビット入力
に対応する 2 本である.R = k/n の場合,符号器には k
ビットずつ入力されるので,各状態からの遷移は 2k 本
である.
入力情報に対する符号器出力は,トレリス線図では
枝の連なりとなる.これをパスという.
ビタビ復号法
畳み込み符号の代表的な復号法の一つに,トレリス線図
上で最尤復号を効率的に実現するビタビ復号法がある.
ビタビ復号法では,パスの周期的な再結合を考慮してパ
スを取捨選択するため,最尤復号を効率的に実現するこ
とができる.簡単のために,1 ビットの入力に対し,1 本
の枝と 1 つの状態遷移が生じる k = 1 の場合について説
明する.この場合,各時刻の各状態では 2 つの異なる状
態から遷移する枝がある.各枝の符号語と対応する受信
符号語から,各枝 (符号語) の確からしさを表すメトリッ
ク (metric) を計算する.メトリックには,硬判定復号時
にはハミング距離を用いたり,軟判定復号時には尤度や
対数尤度を用いる.尤度や対数尤度では,共通となる係
数は一般に無視する.AWGN 通信路において,送信符
号語 c,受信符号語 r の場合,共通な係数を無視すると,
対数尤度は次式で与えられる.
λ = (r − c)2
= |r|2 + |c|2 − 2rc
(7)
また,BPSK の場合,|r|2 , |s|2 は s = +1, S = −1 で互
いに共通であり,次式のように簡略化できる.
∑
λ=
(−2ri si )
(8)
i
∑
ここで, は,各枝のメトリックを計算する場合,その
枝の符号語にわたる総和である.上式に −1 をかけた値
をメトリックとして用いる場合も多い.軟判定復号は,硬
判定復号に比べ,誤り率特性を信号対雑音電力比 (SNR:
Signal-to-Noise power Ratio) で数 dB 程度改善する.
図 3 に,図 1 に対する硬判定復号時のビタビ復号法
の復号例を示す.ここで,入力情報系列は (0, 1, 0, 1, 1,
0, 0) で,最後の (0,0) はシフトレジスタの状態を特定し
復号特性を改善するたの入力で,終端ビット系列と呼ば
れる.この終端処理により,誤り率特性を改善すること
ができる.このとき,符号系列は (00, 11, 01, 00, 10, 10,
11) である.また, 受信系列は (00, 10, 11, 00, 10, 11,
11) であるとする.図のトレリス線図では,時刻 3 の各状
態で2つのパスが合流している.例えば,S00 では,符
号系列 (00, 00, 00) と (11, 01, 11) の 2 つのパスが合流し
IEICE TRANS. COMMUN., VOL.E89–B, NO.1 JANUARY 2006
4
0
1
2
3
4
5
6
හ㒂㏳ಘ㊨
7
t
≟ឺ
S00 0
00
00
0
11
11
11
S01
2
01
01
10
2
0
00
4
10
S11
00
3
11 11
11
1
S10
᝗ሒ⣌า
➚ྒ⣌า
ུಘ⣌า
ᚗྒ⣌า
00
1
1
0
00
01
2
10
2
2
1
00
01
2
10
10
01
2
00
3
11
11 11
1
10
01
00
3
11
አ➚ྒჹ
(N, K) Co
3
㏳ಘ㊨
හᚗྒჹ
(N, K) Ci
አᚗྒჹ
(N, K) Co
11
አ㒂㏳ಘ㊨
01
2
図4
ථງ
3
連接符号
ථງ
10
2
⤂❻ࣄࢴࢹ
1
0
0
00
11
01
00
10
10
11
00
10
11
00
10
11
11
0
1
0
1
1
0
0
༰ࡢ㐽ᢝࡊࡒࣇࣚࣤࢲᯖࢅ㸡ኯ⥲ࡢᚗྒࡊࡒࣂࢪࢅࡐࡿࡑࡿ♟ࡌ
図3
හ➚ྒჹ
(n, k) Ci
3
10
01
00
2
ビタビ復号法の復号例:G(D) = [1 + D 2
1 + D + D2 ]
ある.畳み込み符号の最小自由距離は,通常,拘束長を
長くすると大きくなる.そのため,特性は改善されるが,
状態数が指数関数的に増えるため,必要なシフトレジス
タ数や処理が増え複雑になる.通常,拘束長が K ≤ 10
まではビタビ復号が適用される.より長い拘束長の畳み
込み符号に対しては,逐次復号法が用いられる [1][2].
4.
ている.各パスのメトリック,すなわち受信系列とのハ
ミング距離は,前者は 3,後者は 4 である.そこで,ハミ
ング距離の小さいパスを生き残りパスとして選択し,選
択したパスのメトリック 3 とパスの履歴 (00, 00, 00) を
記録する.同様に時刻 3 の S10 では,符号系列 (00, 11,
01) と (11, 10, 10) の 2 つのパスが合流し,ハミング距
離の小さい前者のパス (ハミング距離 2) を選択し,選択
したパスメトリック 2 とパスの履歴 (00, 11, 01) を記録
する.図 3 では,各状態 Sij の ⃝ の中に生き残りパスの
ハミング距離を記入している.同様の処理を各時刻,各
状態で行う.その際,時刻 3 以降の各状態では,時刻 0
までさかのぼって距離を求める必要はない.時刻 3 以降
の各状態では,合流するパスの 1 時刻前の状態での距離
及びパスの履歴と,その状態から現在の状態への遷移の
距離及び符号語を,それぞれ加えたものを用いればよい.
例えば,時刻 4,状態 S00 では,時刻 3 の状態 S00 から
と S10 からの 2 つのパスが合流する.このとき,時刻 3
の状態 S00 にはハミング距離 3 及びパス (00, 00, 00) が,
S10 にはハミング距離 2 及びパス (00, 11, 01) がそれぞ
れ記録されている.時刻 3 から 4 への遷移は,S00 から
S00 へはパス 00, ハミング距離 0 が,S10 から S00 へは
パス 11, ハミング距離 2 がそれぞれ対応する.時刻 0 か
ら 3 までのハミング距離およびパスに,時刻 3 から 4 へ
のハミング距離およびパスをそれぞれ加算すると,パス
(00, 00, 00, 00),ハミング距離 3 + 0 = 3 と,パス (00,
11, 01, 11),ハミング距離 2 + 2 = 4 が得られる.S00 で
は,時刻 3 と同様の処理を行う.例では,トレリスは時
刻 7 で終端しているので,上記の処理を繰り返し,時刻
7 で状態 S00 で選択されたパスが受信系列に最も近いパ
スとして選択され,選択パスに対応する情報系列 (0, 1,
0, 1, 1, 0, 0) が復号結果として出力される.
パスが長くなると,終端時刻より前に生き残りパス
の先頭は確定することが多い.図の例では,時刻 3 の各
状態での生き残りパスはすべて (00, xx, xx) であり,時
刻 0 での符号ブロックは 00 と確定できる.従って,復号
器では終端まで待たず,パスの確定した部分に対応する
情報系列を順次,復号結果として出力できる.通常,パ
スの長さが拘束長の 5, 6 倍程度の長さになるまでに確定
することが多い [1][2].
畳み込み符号の特性は,最小自由距離 df ree に大き
く依存する.図 1 の場合,最小自由距離は df ree = 5 で
連接符号
連接符号 (concatenated code) は,通常,図 4 に示すよ
うに,2つの符号器を直列に配置して構成される.ここ
で初めの符号器の符号 Co を外符号,次の符号器の符号
Ci を内符号と呼ぶ.今,内符号を二元 (n, k) 符号 Ci ,外
符号を 2k 元 (N, K) 符号 Co とする.このとき,Ci の符
号器,通信路,Ci の復号器から成るブロックは,k ビッ
トを一つの単位として扱う通信路と見なすことができる.
この内符号から成る通信路に対して,k ビットを 1 シン
ボルとする外符号を用いる.このとき,連接符号の符号
化率は R = kK/nN となる.通常,内符号には二元の
ランダム誤り訂正符号が用いられ,外符号には GF (2k )
を元とするシンボル誤り訂正符号が用いられる.代表的
な構成例としては,(内符号に BCH 符号,外符号に RS
符号) や (内符号に畳み込み符号,外符号に RS 符号) が
ある.また,内符号器と外符号器の間には,通常,誤り
系列をランダム化するインタリーバ (交錯器) が配置さ
れる.
5.
ターボ符号
ターボ符号は,理論限界 (シャノン限界) に近い特性を,
現実的な演算量で実現する符号である.1993 年に Berrou
らによって提案され [3],現在,衛星通信,移動通信,光
ファイバ通信など多くの分野で用いられている,あるい
は使用が検討されている.ターボ符号は,並列連接畳み
込み符号 (PCCC: Parallel Concatenated Convolutional
Code) とも呼ばれ,その符号器の基本構成は,図 5 に示
すように,複数の要素畳み込み符号器と,要素畳み込み
符号器間に配置されるインタリーバから成る.各要素畳
み込み符号器は,同じでも良いし,異なっても良い.図
の符号器の例では,情報ビット系列は一定の系列長のブ
ロックに分割された後,そのまま出力,要素符号器 1 に
入力,インタリーバ (交錯器) を介して要素符号器 2 に入
力の各処理が行われる.各要素符号器の出力はパリティ
ビット系列として出力され,多重化,または間引き多重
化される.ここで,間引き多重化とは,例えば偶数時刻
では要素符号器 1 のパリティビットを,奇数時刻では要
素符号器 2 のパリティビットを,それぞれ選択して多重
化することをいう.
ターボ符号の特徴は,要素復号器間で軟出力を繰り
返しやりとりし,復号性能を改善する繰り返し復号にあ
大槻知明: 誤り訂正符号
5
᝗ሒࣄࢴࢹ⣌า
ࢲ࢘ࢴࢠࢿ࣭ࢺ㸯ࣂࣛࢷ࢔᳠ᰕ⾔าࡡ⾔᳠ᰕᘟ࡞ᑊᚺ
ࣂࣛࢷ࢔ࣄࢴࢹ
⣌า
こ⣪
➚ྒჹ
࢕ࣤࢰ
࣭ࣛࣁ
ኣ㔔໩
㛣ᘤࡀ
ኣ㔔໩
こ⣪
➚ྒჹ
図5
හᙼ
࢙ࢴࢩ
ࣂࣛࢷ࢔ࣄࢴࢹ
⣌า
ターボ符号器
ࣄࢴࢹࢿ࣭ࢺንᩐࢿ࣭ࢺ㸯ࣂࣛࢷ࢔᳠ᰕ⾔าࡡา࡞ᑊᚺ
図 7 タナーグラフ: (12,6) LDPC 符号.列重み wc = 3,行重み
wr = 6,内径 4
ࢸ࢕ࣤࢰ
࣭ࣛࣁ
ࠈࠈ஥๑ೋ
஥๑ᑊᩐᑦᗐẒ
ུಘ⣌า
አ㒂ೋ
࢕ࣤࢰ
࣭ࣛࣁ
こ⣪
ᚗྒჹ
こ⣪
ᚗྒჹ
ᚗྒჹฝງ
㏳ಘ㊨ೋࢅ゛⟤
図6



H=


ターボ復号器
る.図 6 に対応する復号器を示す.復号器は,各要素畳
み込み符号器に対応した要素復号器と,ビット系列の順
序を整合させるインタリーバ及びデインタリーバから成
る.各要素復号器は,情報ビットが “1”である確率と “0”
である確率の比の対数で定義される対数尤度比 (LLR) を
計算し出力する.要素復号器 1 は,受信信号から得られ
る LLR である通信路値と,要素復号器 2 から得られる
LLR を事前値 (事前対数尤度比) として用いて,それら
が分かったことを条件とする LLR である事後値を計算
する.そして,要素復号器を通すことで増す LLR の増
分を外部値として出力する.要素復号器 2 も,要素復号
器 1 からの外部値を事前値として受け取り,要素復号器
1 と同様の処理をする.
要素復号器間で LLR のやりとりを繰り返した後,事
後値の正負を判定して復号結果とする.通常,繰り返し
回数は 10 回程度に設定される.このような復号法を繰
り返し復号と呼ぶ.
6.

ࠈࠈ஥๑ೋ
አ㒂ೋ
஥๑ᑊᩐᑦᗐẒ
低密度パリティ検査 (LDPC) 符号
6.1 概要及び定義
低密度パリティ検査 (LDPC: Low-Density Parity-Check)
符号は,1960 年代に R.G. Gallager により提案された誤
り訂正符号である [4].LDPC 符号は,多くの 0 とわずか
な 1 から成る疎なパリティ検査行列 H で定義される線形
ブロック符号で,Sum-Product 復号法と呼ばれる反復復
号を用いることで,シャノン限界に非常に近い特性を達
成する.また,復号計算量は符号長に対して線形時間で
あり,復号アルゴリズムは並列実装可能であることから,
通信・放送・記録などの各分野で注目されている.符号長
N , 情報長 K の LDPC 符号を一般に (N, K) LDPC 符
号と表す. このときパリティビット数 M は M = N − K
で与えられ,パリティ検査行列 H は M × N 行列となる.
下式に (12, 6)LDPC 符号のパリティ検査行列 H を示す.
1
1
0
1
0
0
1
1
0
0
1
0
1
1
0
0
0
1
0
1
0
1
1
0
0
1
0
0
1
1
1
0
1
0
0
1
1
0
1
0
1
0
0
0
1
1
1
0
0
0
0
1
1
1
0
0
1
1
0
1
1
0
1
0
0
1
0
1
1
1
0
0




 (9)


パリティ検査行列において,行は各検査式,列は各
ビットにそれぞれ対応する.LDPC 符号の符号化は,通
常,生成多項式 G を用いて行われる. 生成多項式はパリ
ティ検査行列 H が決まると一意に決定される. 情報系列
を i とすると,符号語は x = iG と符号化される. LDPC
符号はパリティ検査行列 H の各行各列に含まれる 1 の数
(行重み,列重み) が一様であるパリティ検査行列 H で
定義されるレギュラ LDPC 符号と,各行,各列に含まれ
る 1 の数が一様でないパリティ検査行列 H で定義される
イレギュラ LDPC 符号の 2 種類に大別される.レギュラ
LDPC 符号の行重み及び列重みをそれぞれ wr ,wc とす
ると,以下の関係が成り立つ.wr = wc N/M , wc ≪ M ,
R = K/N = 1 − wc /wr . 最適な次数分布を持つイレギュ
ラ LDPC 符号は,レギュラ LDPC 符号やターボ符号よ
りも優れた BER 特性を達成することが報告されている
[5].
LDPC 符号のパリティ検査行列 H が疎であって
も,LDPC 符号の生成多項式 G は, 必ずしも疎になると
か限らない. LDPC 符号の符号化及び復号では, 生成行
列 G, パリティ検査行列 H それぞれに含まれる 1 の数だ
け演算を要するため, 後に述べる復号が符号長 N に対し
線形時間で行われる一方で, 符号化は N 2 の時間を要す
る. この符号化と復号の時間のギャップが LDPC 符号の
ボトルネックとされている.
6.2
LDPC 符号の二部グラフ表現
LDPC 符号はタナーグラフ [6] と呼ばれる二部グラフを
用いて表現できる.その符号構成や復号法,性能解析の
際には,タナーグラフを用いると便利なことが多い.(9)
式のタナーグラフを図 7 に示す.
タナーグラフにおいてチェックノードは行列の行に,
ビットノードは行列の列に,ビットノードとチェックノー
ドを結ぶエッジは行列の成分 1 にそれぞれ対応する.
LDPC 符号の特性は,符号,すなわちグラフ構造に大
きく依存する.LDPC 符号の復号法である Sum-Product
復号法では,自分以外のすべてのビットの情報を独立に
IEICE TRANS. COMMUN., VOL.E89–B, NO.1 JANUARY 2006
6
ࢲ࢘ࢴࢠࢿ࣭ࢺ㸯ࣂࣛࢷ࢔᳠ᰕ⾔าࡡ⾔᳠ᰕᘟ࡞ᑊᚺ
N
111111
111111
Block 1
Girth 6
111111
LB
䝿䝿䝿䝿䝿䝿䝿䝿
䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭䚭111111
Block 2
Block 1䜘า⨠ᥦ䛝䛥Block
ࣄࢴࢹࢿ࣭ࢺንᩐࢿ࣭ࢺ㸯ࣂࣛࢷ࢔᳠ᰕ⾔าࡡา࡞ᑊᚺ
受け取ることができる場合,すなわちグラフが木グラフ
である場合のみ正確な事後確率を計算し,最大事後確率
(MAP) 復号を実現する.実際には,グラフは木グラフ
ではないため,事後確率の近似値を計算する.その近似
精度を高くするためには,グラフが疎なグラフであるこ
とが必要である.また,グラフが疎な場合にも,ループ
(またはサイクルとも呼ばれる) が特性に大きく影響する.
ループとは,始点のノードへ同じエッジを 1 度も通過せず
に戻ってくるパス (エッジの連なり) を意味する.タナー
グラフ上にループが存在すると,復号時に伝搬させる尤
度間に相関が現れるため,近似精度が劣化してしまう.
しかし,グラフにループを持たない符号は最小距離の観
点で優れた符号になりえない.そのため,通常 LDPC 符
号は,ループの最小値である内径 (girth) が大きくなるよ
うに設計される.図 7 の例では,内径は太線で示されて
いるように最小値である 4 となっている.図 8 に,Girth
が 6 である (10,5) LDPC 符号のタナーグラフ示す.
Block 1䜘า⨠ᥦ䛝䛥Block
㻋䛥䛦䛝Block 2䛮䛵␏䛰䜑⨠ᥦ䟻
Block 3
図9
レギュラ LDPC 符号の Gallager 構成法
において検査行列をすべて記憶しておく必要があるのに
対し,確定的構成法では,検査行列を規則的に構成する
ため記憶しておく必要がない.また,その規則性を利用
することにより高速かつ簡単な符号器,復号器を構成す
ることが可能となる.確定的構成法には,置換行列に基
づくアレー LDPC 符号や準巡回符号などの巡回符号に
基づく LDPC 符号など,様々な構成法がある.通信や放
送では,確定的構成法に基づく LDPC 符号が用いられて
いる [8].
確定的構成法の例として,アレー LDPC 符号 [9] を
示す.アレー LDPC 符号は,単位行列を巡回シフトした
ものを部分行列として構成される.L × L 単位行列 I 及
び素数 q ,q 以下の正数 j (j ≤ q) で与えられるアレー
LDPC 符号の検査行列を次式に示す.
 I

I
...
I
...
I
I
6.3

HA =  I.
..
LDPC 符号の構成法
LDPC 符号のパリティ検査行列は,上記したように疎な
行列である必要がある.これまでに多くの LDPC 符号
の構成法が報告されているが,それらはランダム構成法
と確定的構成法の2つに大別される.ランダム構成法は,
乱数に基づき疎な検査行列を生成する手法である.特に
符号長が長い場合,特性の優れた符号を生成するのに適
している.通常,ランダムに発生した疎な行列をもとに,
上記したように内径が大きくなるように修正する.また,
行重み・列重みに関しても,優れた特性が得られるよう
に設定する.符号化率 R = 1/2 のレギュラ LDPC 符号
では,行重み 6,列重み 3 の符号が最も優れた特性を達
成することが報告されている [7].
図 9 に Gallager によって提案されたランダムなレ
ギュラ LDPC 符号の構成法を示す [4].Block 1 の各行は
行重みの数だけ 1 を連続して横に並べる. このとき,上
の行と 1 の場所がオーバーラップしないように, 階段状
に配置する. つまりブロック 1 の m 行目の k(m − 1) + 1
番目の列から km 番目の列まで 1 が連続して配置される.
Block 2, 3, ..., j についても同様に 1 を連続して配置する.
Block 2 以降にブロックは Block 1 の配置後, それぞれ独
立に列置換を行い各ブロックを組み合わせる. このとき,
ブロック数は列重みに等しく, 各ブロックの大きさ LB は
LB = N/k により与えられる.
一方,確定的構成法では,疎な検査行列を規則的に
構成する.ランダム構成法では,通常,符号器,復号器
LB
䝿䝿䝿䝿
䝿䝿䝿䝿
図 8 タナーグラフ: (10,5) LDPC 符号.列重み wc = 2, 行重み
wr = 4, Girth 6
LB
I
P1
P2
...
...
..
.
Pj−1
P2(j−1)
..
.
...
...
Pq−1
P2(q−1)
..
.

 (10)
P(j−1) ... P(j−1)(j−1) ... P(j−1)(q−1)
ここで,Pj は単位行列 I の j 回右巡回シフト行列を表
す.(10) 式で与えられるアレー LDPC 符号の行重み,列
重みは,それぞれ q, j である.良い特性を達成するには,
q を素数とする必要がある.j ≥ 3 の場合,内径が 6 と
なることが示されている [9].
6.4
Sum-Product 復号法
Sum-Product 復号法は,以下に示す基本復号処理を何度
も反復して行う反復型のアルゴリズムである.タナーグ
ラフ上でのメッセージパッシングアルゴリズムと見るこ
とができる.情報の確からしさを事後確率 (APP),APP
比,APP 比の対数である対数尤度比 (LLR) 等の形で更
新・交換するアルゴリズムと見ることができる.各変数
ノード・チェックノードにおいて,メッセージと呼ばれる
実数値を計算し,それらをエッジを通して接続するノー
ドに伝達する.各ノードは,受け取った複数メッセージ
に基づき再びメッセージを計算する.変数ノードでは,
チェックノードから送られてきたメッセージに対し,送
り先のチェックノードからのメッセージを除いた積を計
算し,送り先のチェックノードに返す.チェックノード
では,変数ノードから送られてきたメッセージに対し,
送り先の変数ノードからのメッセージを除いた積和を計
算し,送り先の変数ノードに返す.このメッセージの伝
大槻知明: 誤り訂正符号
7
達を十分に行うことにより,各ビットの事後確率に関す
る LLR の近似値を得る.十分な伝達後,最終的に得ら
れた近似対数事後確率比に基づき,送信ビット系列を推
定する.
自分以外のすべてのビットの情報を独立に受け取る
ことができる場合,すなわちグラフが木グラフである場
合のみ正確な事後確率を計算し,MAP 復号を実現する.
7.
むすび
誤り訂正符号は,通信環境の厳しい無線通信だけでなく,
第 2 回で述べたように,光ファイバ通信でも必要不可欠
な技術となっている.当然のことながら適用分野によっ
て,誤り訂正符号に対する要求や制約条件は異なる.そ
のため,それらを考慮して誤り訂正符号を設計すること
が重要である.誤り訂正符号に関しては,優れた本が数
多く出版されている.興味を持った読者は,是非それら
の本をご参照いただきたい.
参考文献
[1] 岩垂好裕, “符号理論入門,” 昭晃堂, 1992.
[2] 江藤良純・金子敏信監修, “誤り訂正符号とその応用,”オーム社,
1996.
[3] C. Berrou, A. Glavieux, and P. Thitimajshima, “NearShannon-limit error-correcting coding: Turbo codes,” in
Proc. IEEE Int. Conf. Communications, pp. 1064–1070,
May 1993.
[4] R. G. Gallager, Low-density parity-check codes. Cambridge,
MA: M. I. T. Press, 1963.
[5] S. Chung, G.D. Forney, T.J. Richardson, and R. Urbanke,
“On the design of low-density parity-check codes within
0.0045 dB of the Shannon limit,” IEEE Comm. Letters,
vol.5, pp.58–60, Feb. 2001.
[6] R.M. Tanner, “A recursive approach to low complexity
codes,” IEEE Trans. Inform. Theory, vol. 21, pp. 42–55,
Jan. 2004.
[7] T. J. Richardson and R. Urbanke, “The capacity of lowdensity parity-check codes under message-passing decoding,” IEEE Trans. Inform. Theory, vol. 47, pp. 599–618,
Feb. 2001.
[8] T. Ohtsuki, “LDPC codes in communications and broadcasting,” Trans. of IEICE, EB.(to appear)
[9] J. Fan, “Array codes as LDPC codes,” Proc. 2nd Int. Symp.
Turbo Codes and Related Topics, pp. 543-546, 2000.