低密度奇偶检查码(Low-density parity-check code,LDPC code),是线性分组码(linear block code)的一种,用于更正传输过程中发生错误的编码方式。
历史在1962年,低密度奇偶检查码(LDPC code)即被Gallager提出,并被证明其错误校正能力非常接近理论最大值,香农极限(Shannon Limit);不过受限于当时技术,低密度奇偶检查码并无法实现。低密度奇偶检查码被重新发现,并随着集成电路的技术演进,低密度奇偶检查码的实现逐渐可行,而成为各种先进通信系统的频道编码标准。1
运作低密度奇偶检查码是基于具有稀疏矩阵性质的奇偶检验矩阵建构而成。对(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);整个解码流程如下方所示:
当接收数据R从通信频道(channel)进入低密度奇偶检查码的解码器,解码器会对消息作初始化(initialization)。
check node根据互相连接的多个bit node内的数据做更新运算(update)。
bit node对相连接的多个check node内的数据做更新运算。
观察终止(termination)条件,来决定是否继续迭代计算。
详细的解码算法,常见有两种:总和-乘积算法(Sum-Product Algorithm)和最小值-总和算法(Min-Sum Algorithm)。总和-乘积算法具有较佳的错误更正能力,却具较高的计算复杂度;反之,最小值-总和算法在稍微减低的错误更正能力下,换取较低的计算复杂度。
总和-乘积算法假设在一通信系统的频道有AWGN属性,而发送信号为,接收信号是,bit node有n个,check node有m个。而总和-乘积算法在解码流程如下:
初始化:假设AWGN的方差(variance)是。
bit noden会被初始化成:
。
check nodem会被初始化成:
。
check node更新:
check nodem更新为:
;其中是连接到check nodem的bit node组合,但不包含第n个bit node。
bit node更新:
bit noden更新为:
;其中是连接到bit noden的check node组合,但不包含第m个check node。
终止:
解码比特计算:假设解码后信号为。Hard-decision解码比特可由下列两式求出:
只要解码后的码字在恒等式成立,即终止迭代计算。
最小值-总和算法[编辑]
最小值-总和演算,大抵上和总和-乘积算法类似,除了于“check node更新”做不一样的计算方式。而改变的计算式如下:
。
本词条内容贡献者为:
方正 - 副教授 - 江南大学