低密度パリティ検査符号

低密度パリティ検査符号（ていみつどパリティけんさふごう、、）は、誤り訂正符号の1つで、ノイズのある通信チャンネルを通してメッセージを通信する手法のひとつである。
LDPCは、情報伝送レートの理論上の上限値であるシャノン限界に極めて近いレートを達成した最初の符号であった。
1963年に開発されたときは実装が実用的ではなかったので、LDPC符号は忘れ去られてしまった。
その後50年あまりにわたる符号理論の歴史のなかで様々な誤り訂正符号が提案されてきたが、
LDPCは今日においても最も効率的な符号であり続けている。
情報技術が爆発的に成長し、高効率な伝送符号の開発に商業的関心が高まっている。
LDPC符号の実装はターボ符号などに比べて遅れていたが、ソフトウェア特許による妨害のないことがLDPCへの興味をひきつけた。2003年には、6つのターボ符号を破り、デジタルテレビの衛星通信の標準となった。
1960年代にMITの博士論文内でLDPCのコンセプトを打ち出したRobert G. Gallagerをたたえて、Gallager符号としても知られる。
符号化.
LDPC符号は送信したい0または1の情報列にパリティ検査行列:Hを掛け合わせる事で求められる。例えば、簡単にするために以下のように3行6列の小さい検査行列Hを考える：
LDPC符号は偶数パリティ条件を満たすように作られる。例えば上記行列Hの場合、行方向に1がある箇所に着目し：
を満たすようにx1~x6の符号を作る。ここで+記号は排他的論理和である。この検査行列の例で、x1=1, x2=0, x3=1の情報列を送信したい場合、その偶数パリティー条件を満たすようにx4=0, x5=1, x6=1と計算される。{1,0,1,0,1,1}が最終的に送信される符号となる。LDPCは復号時の計算を簡単にするため、このパリティ検査行列として疎行列（1の数が少ない、疎）を用いる。これらの符号は1962年にGallagerによって初めて設計された。
復号.
LDPC符号を復号する方法として、対数尤度比(log-likelihood ratio: LLR)を使った繰り返し復号の概要を述べる。詳しい方法は文献を参照されたい。
LLRは「送信信号x=1の時に受信信号yを観測する確率:P(y|x=1)」と「送信信号x=0の時にyを観測する確率:P(y|x=0)」の比を取り、さらに対数をとったものである。つまりLLRがプラスあるいはマイナスに大きくなるほど、正しく送信信号を当てれそうで、反対に0に近くなるほどあやふやになる推定の尤度の指標である。LDPCの復号は検査行列HをベースにLLRを徐々に高めていく繰り返しを伴うプロセスである。
LLRの初期値.
まず、受信信号yをベースに受信時のLLR、受信LLRを求める。これはyに比例した値となり以降の繰り返し復号に使われる。
行方向の計算.
次に検査行列の行（横）方向で1が立っている場所のみに着目し、受信LLRとは異なる新たなLLR、外部LLR（2次元の行列）を計算する。例えば、上記の検査行列Hで1行目に着目した時に、1,2,3,4列目に1が立っている。1行目1列の外部LLRは、自分自身（1列目）を除いたその他の列、2,3,4列目の受信LLRをベースに計算される。その計算式は簡単に言えば2項の掛け算であり、1項目は1もしくは-1の離散値、2項目は正の連続値でいずれも受信LLRの関数である。1項目は検査行列の偶数パリティ条件を計算してると捉えても良い。
列方向の計算.
次に検査行列の列（縦）方向で1が立っている場所に着目し、事前LLRを計算する。事前LLRは次の繰り返しで外部LLRを計算する時に受信LLRと共に使われる。（外部LLR同様に）自分自身を除き、列方向の外部LLRの総和から求められる。
送信信号の推定.
外部LLRをベースに送信信号を推定する。例えば、LLRが正の場合1、負の場合0といった風である。この推定の結果が、検査行列と辻褄が合う（推定した信号が全て偶数パリティー条件を満たす）場合、復号を終了する。そうでない場合、行方向の計算に戻るが、このとき外部LLRを受信LLRだけでなく事前LLRと足し合わせて計算する。これをループして計算する。ループの上限に達した時も復号を終了する。