低密度奇偶检查码(Low-density parity-check code,LDPC code),是线性
分组码(linear block code)的一种,用于更正传输过程中发生错误的编码方式。
在1962年,低密度奇偶检查码(LDPC code)即被Gallager提出,并被证明其错误校正能力非常接近理论最大值,
香农极限(Shannon Limit);不过受限于当时技术,低密度奇偶检查码并无法实现。低密度奇偶检查码被重新发现,并随着
集成电路的技术演进,低密度奇偶检查码的实现逐渐可行,而成为各种先进通信系统的频道编码标准。
低密度奇偶检查码是基于具有
稀疏矩阵性质的奇偶检验矩阵建构而成。对(n, k)的低密度奇偶检查码而言,每k比特数据会使用n比特的
码字(codeword)编码。以下是一个被(16, 8)的低密度奇偶检查码使用的奇偶检验矩阵H。当中可以见得
矩阵内的元素1数量远少于元素0数量,所以具有
稀疏矩阵性质,也就是低密度的由来。
低密度奇偶检查码的解码,可对应成
二分图(bipartite graph)作表示。下方的
二分图是依照上述奇偶检验矩阵H建置,其中H的行(column)对应至check node,而H的列(row)对应至bit node。check node和bit node之间的连接,由H内的元素1决定;好比H中第一行(column)和第一列(row)的元素1,使check node和bit node两者各自最左手边的第一个彼此连接。
低密度奇偶检查码的解码算法,主要基于有迭代性(iterative)的
置信传播(belief propagation);整个解码流程如下方所示:
详细的解码算法,常见有两种:总和-乘积算法(Sum-Product Algorithm)和最小值-总和算法(Min-Sum Algorithm)。总和-乘积算法具有较佳的错误更正能力,却具较高的计算复杂度;反之,最小值-总和算法在稍微减低的错误更正能力下,换取较低的计算复杂度。
假设在一通信系统的频道有
AWGN属性,而发送信号为,接收信号是,bit node有n个,check node有m个。而总和-乘积算法在解码流程如下: