データ通信の信頼性を支える技術の一つに「誤り訂正符号」があります。
その中心的な数学的ツールが「パリティ検査行列」です。
パリティ検査行列は符号理論における線形符号の構造を記述するための行列であり、エラー検出・訂正の計算を体系的に行うための重要な概念です。
本記事では、パリティ検査行列の定義・役割・計算方法を、符号理論の基礎とともにわかりやすく解説していきます。
パリティ検査行列とは何か?基本定義と符号理論における位置づけ
それではまず、パリティ検査行列の基本的な定義と符号理論における位置づけについて解説していきます。
パリティ検査行列(Parity Check Matrix)とは、線形符号の符号語(コードワード)を特徴づける行列であり、符号語がすべてこの行列とのベクトル積でゼロベクトルを満たすという性質を持ちます。
線形符号と符号語の基礎
符号理論における線形符号とは、ベクトル空間の部分空間として定義される符号です。
kビットの情報語をnビットの符号語に変換する(n, k)線形符号では、n-k個の冗長ビット(パリティビット)が付加されます。
生成行列Gを使って情報語uを符号語c = uGに変換し、パリティ検査行列Hを使って受信語に誤りがないかを確認するという手順が線形符号の基本的な使い方です。
パリティ検査行列の数学的定義
(n, k)線形符号のパリティ検査行列Hは、(n-k)×n の行列として定義されます。
符号語cに対して:H・c^T = 0(ゼロベクトル)
これを満たすベクトルcの全体が符号Cを構成します。
受信語rに対して:シンドローム s = H・r^T
s = 0なら誤りなし、s ≠ 0なら誤りありと判定します。
このシンドローム(syndrome)を計算することで、どのビットにエラーが発生したかを特定できる可能性があります。
生成行列との関係
パリティ検査行列Hと生成行列Gの間には重要な関係があります。
生成行列Gの行ベクトルはパリティ検査行列Hの核空間(ヌル空間)を構成しており、G・H^T = 0という関係が成り立ちます。
この関係を利用することで、一方の行列からもう一方を構築することが可能です。
パリティ検査行列の計算方法と実際の例
続いては、パリティ検査行列の具体的な計算方法と例を確認していきます。
抽象的な定義だけでは理解しにくいため、具体的な数値例を用いてパリティ検査行列の計算手順を見ていきましょう。
(7, 4)ハミング符号のパリティ検査行列
最も有名な線形符号の一つがハミング符号であり、その中でも(7, 4)ハミング符号は符号理論の入門として広く学ばれています。
(7, 4)ハミング符号のパリティ検査行列H:
H = [ 1 0 1 0 1 0 1 ]
[ 0 1 1 0 0 1 1 ]
[ 0 0 0 1 1 1 1 ]
Hの列ベクトルは1から7の2進数表現(001〜111)に対応しています。
この構造により、シンドロームの計算結果がそのままエラービットの位置を示す形になっており、非常にエレガントな設計といえるでしょう。
シンドロームを使ったエラー訂正の手順
パリティ検査行列を使ったエラー訂正の手順を確認していきます。
手順1:受信語rのシンドロームを計算する(s = H・r^T)
手順2:s = 0なら受信語は正しい符号語→そのまま情報を取り出す
手順3:s ≠ 0なら、シンドロームsと一致するHの列ベクトルの位置がエラービットの位置
手順4:該当するビットを反転して誤りを訂正する
ハミング符号はこの手順により1ビットのエラーを確実に訂正でき、さらに2ビットのエラーを検出(訂正は不可)できます。
系統符号と組織符号の形式
線形符号の中でも「系統符号(組織符号)」は、情報ビットと冗長ビットを明確に分離した構造を持ちます。
系統符号のパリティ検査行列は標準形(組織形)で表現でき、H = [ P^T | I_{n-k} ]という形になります(Pはパリティ生成行列、I_{n-k}は単位行列)。
この標準形により、符号の構造の把握・設計・実装が容易になるでしょう。
パリティ検査行列の応用と現代の符号理論
続いては、パリティ検査行列の応用と現代の符号理論における位置づけを確認していきます。
パリティ検査行列の概念は、古典的なハミング符号にとどまらず、現代の高度な誤り訂正符号の基礎にもなっています。
BCH符号・リード・ソロモン符号への発展
BCH符号はハミング符号を一般化した強力な線形符号であり、複数ビットのエラー訂正が可能です。
リード・ソロモン符号はBCH符号の特殊ケースとして位置づけられ、連続バーストエラー(連続した複数ビットの誤り)に特に強いという特性を持ちます。
QRコード・CD/DVDの誤り訂正・宇宙通信などにリード・ソロモン符号が広く採用されており、パリティ検査行列の概念が日常のあらゆる場面で活用されています。
LDPC符号とパリティ検査行列の疎性
現代の通信規格で広く使われているLDPC符号(低密度パリティ検査符号)は、非常に疎な(ゼロが多い)パリティ検査行列を特徴とします。
疎な行列を使うことで、信念伝播アルゴリズムによる効率的な復号が可能となり、シャノン限界に近い性能を実現できます。
5G通信規格のデータチャネルにはLDPC符号が採用されており、現代の高速無線通信を支える重要技術となっているでしょう。
情報理論とパリティ検査行列の関係
シャノンの情報理論において、誤り訂正符号の限界(シャノン限界)は通信路の容量によって決まります。
パリティ検査行列の設計は、この理論的な限界にどれだけ近づけるかというチャレンジと深く結びついています。
ターボ符号・LDPC符号・極符号(ポーラー符号)などの現代符号は、パリティ検査行列の数学的な性質を最大限に活用することでシャノン限界に迫る性能を実現しています。
まとめ
本記事では、パリティ検査行列の定義・役割・計算方法・現代符号理論への応用まで解説してきました。
パリティ検査行列は線形符号の核となる数学的ツールであり、シンドロームを計算することでデータの誤りを検出・訂正するための基盤を提供します。
ハミング符号に始まり、BCH符号・リード・ソロモン符号・LDPC符号へと発展してきた符号理論の歴史は、パリティ検査行列という概念を中心に展開されてきたといっても過言ではありません。
情報理論・通信工学・コンピューターサイエンスを深く学ぶうえで、パリティ検査行列の理解は欠かせない基礎知識となるでしょう。