LDPC码Gallager论文解读

本文主要是解读Gallager关于LDPC码的论文《Low-Density Parity-Check Codes》,也记录了一些论文里不包含但是很重要的相关资料。
最近研究点涉及到LDPC编码,将学习到的内容在此博客中记录,供学习交流,有错误之处还请指正。
持续更新中。。。

Gallager论文解读:低密度奇偶校验码

Low-Density Parity-Check Codes (LDPC)

简介

LDPC码是麻省理工学院Robert Gallager于1963年在博士论文中提出的一种具有稀疏校验矩阵的分组纠错码。几乎适用于所有的信道,因此成为编码界近年来的研究热点。它的性能逼近香农限,且描述和实现简单,易于进行理论分析和研究,译码简单且可实行并行操作,适合硬件实现。

定义:(来自百度LDPC码
任何一个 ( n , k ) (n,k) (nk) 分组码,如果其信息元与监督元之间的关系是线性的,即能用一个线性方程来描述的,就称为线性分组码。
低密度奇偶校验码图(LDPC码)本质上是一种线形分组码,它通过一个生成矩阵 G G G 将信息序列映射成发送序列,也就是码字序列。对于生成矩阵 G G G,完全等效地存在一个奇偶校验矩阵 H H H,所有的码字序列 C C C构成了 H H H 的零空间 (null space),即 。

LDPC 码的奇偶校验矩阵H是一个稀疏矩阵,相对于行与列的长度,校验矩阵每行、列中非零元素的数目(我们习惯称作行重、列重)非常小,这也是LDPC码之所以称为低密度码的原因。由于校验矩阵H的稀疏性以及构造时所使用的不同规则,使得不同LDPC码的编码二分图(Taner图)具有不同的闭合环路分布。而二分图中闭合环路是影响LDPC码性能的重要因素,它使得LDPC码在类似可信度传播(Belief ProPagation)算法的一类迭代译码算法下,表现出完全不同的译码性能。
当H的行重和列重保持不变或尽可能的保持均匀时,我们称这样的LDPC码为正则LDPC码,反之如果列、行重变化差异较大时,称为非正则的LDPC码。研究结果表明正确设计的非正则LDPC码的性能要优于正则LDPC。根据校验矩阵H中的元素是属于 G F ( 2 ) GF(2) GF(2) 还是 G F ( q ) ( q = 2 p ) GF(q)(q=2p) GF(q)(q=2p),我们还可以将LDPC码分为二元域或多元域的LDPC码。研究表明多元域LDPC码的性能要比二元域的好。

论文摘要部分

Summary–A low-density parity-check code is a code specified by a parity-check matrix with the following properties: each column contains a small fixed number j ≥ 3 j \geq 3 j3 of 1’s and each row contains a small fixed number k > j k > j k>j of 1’s. The typical minimum distance of these codes increases linearly with block length for a fixed rate and fixed j j j. When used with maximum likelihood decoding on a sufficiently quiet binary-input symmetric channel, the typical probability of decoding error decreases exponentially with block length for a fixed rate and fixed j j j.
 A simple but nonoptimum decoding scheme operating directly from the channel a posteriori probabilities is decribed. Both the equipment complexity and the data-handling capacity in bits per second of this decoder increase approximately linearly with block length.
 For j > 3 j > 3 j>3 and a sufficiently low rate, the probability of error using this decoder on a binary symmetric channel is shown to decrease at least exponentially with a root of the block length. Some experimental results show that the actual probability of decoding error is much smaller than this theoretical bound.

1. 数据传输编码

LDPC编码属于信道编码,本质是为了提高信道的可靠性
LDPC是一种线性分组码,码字由信息位和校验位组成;

属于信道编码
码字 = 信息位 + 校验位

主要测试以下两种信道下的编码效果:

  1. BSC (Binary Symmetric Channel):二进制对称信道
  2. White Gaussian Noise Channel:高斯白噪声信道

低密度奇偶校验码是奇偶校验码的改进。

  • 问:为什么会出现LDPC?
  • 答:因为奇偶校验码的解码很难应用,而使用低密度则有很合适的解码方案。虽然LDPC码不是最好的码,但是由于存在很简单的解码方案,弥补了不是最优码的缺憾。

对比:奇偶校验码和低密度奇偶校验码?
包括:编码方式对比、解码方式对比、编码效果对比、数据率对比等

2. 编码

LDPC码的矩阵形式可以用 ( n , j , k ) (n, j, k) (n,j,k)表示

( n , j , k ) (n, j, k) (n,j,k) n n n表示码长, j j j表示矩阵每列1的个数, k k k表示矩阵每行1的个数。

下图是奇偶校验矩阵的一个案例:
校验矩阵示例
图二是LDPC码 ( 20 , 3 , 4 ) (20, 3, 4) (20,3,4)的矩阵表示案例,虽然LDPC码的形式不是信息位和比特位组合的形式,但是可以通过一定的线性变换转换成那种形式:
LDPC矩阵
LDPC码虽然不是最好的码,但是该编码方案存在非常简单的解码方案,这弥补了它不是最好的码的缺憾。

These codes are not optimum in the somewhat artificial sense of minimizing probability of decoding error for a given block length, and it can be shown that the maximum rate at which these codes can be used is bounded below channel capacity. However, a very simple decoding scheme exists for low-density codes, and this compensates for their lack of optimality.

Gallager码的构造

Gallager码 ( n , j , k ) (n, j, k) (n,j,k)的构造步骤:

  1. 将码集矩阵其分成 j j j 个子矩阵,每个矩阵每列只有 1 个1;
  2. 第一个子矩阵中的1成下降趋势构成,如Fig. 2;
  3. 其它子矩阵由第一个子矩阵通过随机列置换构成。

除了Gallager的构造方法,还有很多其它构造方法,如下三角法构造。

Gallager说这种码集的构造方法能够证明含有两个有意思的结果:

  1. 码距
  2. 解码错误的概率

There are two interesting results that can be proven using this ensemble, the first concerning the minimum distance of the member codes, and the second concerning the probability of decoding error.

请思考:为什么使用这种方式构造?
见如下解读:
(未完待续。。。)

3. 解码

Gallager主要提出了两种解码方案:

  1. Probabilistic Decoding
    该方案简单,但是只能用于BSC并且码率远小于信道容量的情况;
  2. Probability of Error Using Probabilistic Decoding
    从信道输出的后验概率中解码。

在第一种解码方案中:该方案只适用于校验集比较小的情况,此时解码解码过程才合理,因为大部分校验集要么只有一个不满足要么都被满足。解码器计算所有的校验矩阵,当某一位数据位使得多个校验矩阵不满足时,则改变此数据位的值;使用此改变后的值继续计算校验矩阵,直到所有的校验矩阵都满足。

In the first decoding scheme, the decoder computes all the parity checks and then changes any digit that is contained in more than some fixed number of unsatisfied parity-check equations. Using these new values, the parity checks are recomputed, and the process is repeated until the parity checks are all satisfied.

当出错的数据位d超过1位该怎么办?见如下分析:
校验集节点可如下Fig. 6表示,选择一个出错的数据位d,将其作为根节点,与d相关联的边表示包含d节点的校验矩阵;在子节点下重复此过程,直到将全部校验方程表述完为止

节点:码字
边:校验矩阵

此图中包含两层节点,假设节点d和处于第一层的部分节点传输错误,则第二层中无错误的节点和校验矩阵能够解码出第一层的错误节点;重复此过程,节点d能够在第二次迭代后被成功解码。
校验集的树形表示

解码方案一:概率解码 Probabilistic Decoding

理论分析

已知接收到的符号为 { y } \{y\} {y} 且 发送的码字d满足第 j j j 个校验方程 S S S,则令码字d为1的概率表示如下:
P r [ x d = 1 ∣ { y } , S ] P_r[x_d=1 | \{y\}, S] Pr[xd=1{y},S]

定理1: P d P_d Pd 表示已知接收的码字则第 d d d 位为1的概率, P i l P_{il} Pil 表示接收的码字的第 l l l 位满足第 i i i 个校验方程的概率, S S S 表示发送的码字满足所有的校验方程,则:
P r [ x d = 0 ∣ { y } , S ] P r [ x d = 1 ∣ { y } , S ] = 1 − P d P d ∏ i = 1 j 1 + ∏ l = 1 k − 1 ( 1 − 2 P i l ) 1 − ∏ l = 1 k − 1 ( 1 − 2 P i l ) ( 1 ) \frac{ P_r[x_d=0 | \{y\}, S] } { P_r[x_d=1 | \{y\}, S] } = \frac{1 - P_d}{P_d} \prod_{i=1}^{j} \frac{ 1 + \prod_{l=1}^{k-1} (1-2P_{il}) }{ 1 - \prod_{l=1}^{k-1} (1-2P_{il}) } \qquad\qquad\qquad(1) Pr[xd=1{y},S]Pr[xd=0{y},S]=Pd1Pdi=1j1l=1k1(12Pil)1+l=1k1(12Pil)1

为了证明定理1,我们需要如下引理。
引理1:设 m m m 长独立二元序列中第 l l l 位是1的概率为 p l p_l pl,则序列中含偶数个1的概率为:
1 + ∏ l = 1 m ( 1 − 2 P l ) 2 . . . . . . . . . . P 偶 数 个 1 \frac{1 + \prod_{l=1}^m (1-2P_l)}{2} ..........P_{偶数个1} 21+l=1m(12Pl)..........P1
含奇数个1的概率为:
1 − ∏ l = 1 m ( 1 − 2 P l ) 2 . . . . . . . . . . P 奇 数 个 1 \frac{1 - \prod_{l=1}^m (1-2P_l)}{2} ..........P_{奇数个1} 21l=1m(12Pl)..........P1

引理1证明:设 f ( t ) = ∏ l = 1 m [ ( 1 − p l ) + p l t ] f(t) = \prod_{l=1}^m [(1-p_l) + p_lt] f(t)=l=1m[(1pl)+plt],将其展开成 t t t 的多项式形式。在 f ( t ) f(t) f(t) 的展开式中, t 2 k t^{2k} t2k 项的系数为 m m m 长独立二元序列中出现 2 k 2k 2k 个1的概率。 t 2 k + 1 t^{2k+1} t2k+1 项的系数为n长独立序列中出现 2 k + 1 2k+1 2k+1 个1的概率。因此, t = 1 t=1 t=1 时, f ( t ) f(t) f(t) 中偶此项部分的和就是 m m m 长独立二元序列中含有偶数个1的概率,该值可用下式计算:
f ( 1 ) + f ( − 1 ) 2 = ∏ l = 1 m [ ( 1 − p l ) + p l ] + ∏ l = 1 m [ ( 1 − p l ) − p l ] 2 = 1 + ∏ l = 1 m ( 1 − 2 p l ) 2 \frac{f(1) + f(-1)}{2} = \frac{{ \prod_{l=1}^m [(1-p_l) + p_l] } + { \prod_{l=1}^m [(1-p_l) - p_l] }}{2} \\ = \frac{1 + \prod_{l=1}^m (1 - 2p_l)}{2} 2f(1)+f(1)=2l=1m[(1pl)+pl]+l=1m[(1pl)pl]=21+l=1m(12pl)
含奇数个1的概率为:
1 − f ( 1 ) + f ( − 1 ) 2 = 1 − ∏ l = 1 m ( 1 − 2 p l ) 2 1 - \frac{f(1) + f(-1)}{2} = \frac{1 - \prod_{l=1}^m (1 - 2p_l)}{2} 12f(1)+f(1)=21l=1m(12pl)
引理1证毕。

定理1证明:根据Bayes准则有
P r [ x d = 0 ∣ { y } , S ] P r [ x d = 1 ∣ { y } , S ] = ( 1 − P d P d ) ( P r [ S ∣ x d = 0 , { y } ] P r [ S ∣ x d = 1 , { y } ] ) ( 2 ) \frac{ P_r[x_d=0 | \{y\}, S] } { P_r[x_d=1 | \{y\}, S] } = ( \frac{1 - P_d}{P_d} ) ( \frac{ P_r[S | x_d=0, \{y\}] }{ P_r[S | x_d=1, \{y\}] } ) \qquad\qquad\qquad(2) Pr[xd=1{y},S]Pr[xd=0{y},S]=(Pd1Pd)(Pr[Sxd=1,{y}]Pr[Sxd=0,{y}])2
(注: P d P_d Pd与迭代次数无关,由信道特性决定。 )
已知 x d = 0 x_d = 0 xd=0 d d d 所在的校验方程满足当且仅当该方程中其它 ( k − 1 ) (k-1) (k1) 个位置含有偶数个1,由于所有的数据都是统计独立的,因此,所有的 j j j 个校验方程都被满足的概率就是单个校验方程被满足的概率。由引理1可得:
P r [ S ∣ x d = 0 , { y } ] = ∏ i = 1 j [ 1 + ∏ l = 1 k − 1 ( 1 − 2 p i l ) 2 ] ( 3 ) P_r[S | x_d=0, \{y\}] = \prod_{i=1}^j [\frac{1 + \prod_{l=1}^{k-1} (1 - 2p_{il})}{2}] \qquad\qquad\qquad(3) Pr[Sxd=0,{y}]=i=1j[21+l=1k1(12pil)]3
同样的,
P r [ S ∣ x d = 1 , { y } ] = ∏ i = 1 j [ 1 − ∏ l = 1 k − 1 ( 1 − 2 p i l ) 2 ] ( 4 ) P_r[S | x_d=1, \{y\}] = \prod_{i=1}^j [\frac{1 - \prod_{l=1}^{k-1} (1 - 2p_{il})}{2}] \qquad\qquad\qquad(4) Pr[Sxd=1,{y}]=i=1j[21l=1k1(12pil)]4
定理1证毕。

解码过程

从上述结果可以看出,当层数很多时,解码很困难。但是,可以使用简单的迭代技术计算任意层的情况。

Judging from the complexity of this result, it would appear difficult to compute the probability that the transmitted digit in position d is a 1 conditional on the received digits in two or more tiers of the tree in Fig. 6. Fortunately, however, the many-tier case can be solved from the l-tier case by a simple iterative technique.

Gallager的分析如下:
首先考虑只有两层的示例,根据第二层接收到的数据能够得出第一层每个数据为1的概率;然后,根据得到的第一层的数据,可以得到接收到的节点 d d d 为1的概率。这个过程的有效性取决于根据定理1得到的新增的 P i l P_{il} Pil 的独立性。通过归纳,可以根据任意层数的节点得出接收到的节点 d d d 为1的概率。
对于每个节点 d d d 来说,使用公式(1)能够得出该节点更新后的概率;计算另一个节点的概率时,使用更新后的其它所有节点带入(1)中计算。如果能够成功解码,则随着迭代次数的增加,每个节点的概率都会趋于0或1(取决于发送的数据)。
迭代过程有效性说明:
迭代过程的有效性取决于公式(1)中的独立性假设被满足;当树节点出现环时,假设不成立。由于每层节点的个数都比上一层多 ( j − 1 ) ( k − 1 ) (j-1)(k-1) (j1)(k1) 个,当 m m m 特别小的时候,也就是码字很小,这个假设肯定会不成立。然而,基于合理的假设即相关性的影响比较小而且在某种程度上可以消除影响,独立性的假设可以被忽略;并且,即使在 m m m 层不再满足独立性,但是前 m − 1 m-1 m1 次迭代已经能够减少了每个节点 d d d 的不确定性程度,然后可以将 m − 1 m-1 m1 次后的结果作为原始接收序列重新迭代。

迭代次数

这种迭代方案的最重要的特点就是每个节点 d d d 的每次迭代计算和块长是独立的。因此,解码过程需要的平均迭代次数由一个与块长度的对数成比例的数量限制。

实际计算的优化

为了在实际计算中更方便地计算定理(1),通过对数似然比可以更方便地运算,如下:
ln ⁡ 1 − P d P d = α d β d , ln ⁡ 1 − P i l P i l = α i l β i l \ln \frac{ 1 - P_d }{ P_d } = \alpha_d \beta_d, \ln \frac{ 1 - P_{il} }{ P_{il} } = \alpha_{il} \beta_{il} lnPd1Pd=αdβd,lnPil1Pil=αilβil
ln ⁡ [ P r [ x d = 0 ∣ { y } , S ] P r [ x d = 1 ∣ { y } , S ] ] = α d ′ β d ′ \ln[\frac{ P_r[x_d=0 | \{y\}, S] }{ P_r[x_d=1 | \{y\}, S] }] = \alpha_d^{'} \beta_d^{'} ln[Pr[xd=1{y},S]Pr[xd=0{y},S]]=αdβd
其中, α \alpha α 表示 s i g n sign sign 函数(如下图), β \beta β 表示对数似然比的量级。
sign函数图
【此处实际计算过程等待补充。。。】

解码方案二:使用概率解码的错误概率 (Probability of Error Using Probabilistic Decoding)

Case1: j = 3 j=3 j=3
概率译码的数学分析比较困难,但可以很容易地推导出误差概率的一个很弱的界。
假设BSC信道的交叉概率为 p 0 p_0 p0 和包含所有码字的 j = 3 j=3 j=3 ( n , j , k ) (n, j, k) (n,j,k) 码。参考Fig. 6,从上往下标记层数,即最上层为第0层,需要解码的数据 d d d 处于第 m m m 层。
按照如下方式改变解码过程:如果与第一层中的某个数据相关的两个校验矩阵都不被满足,则改变此数据;将改变后的数据作为第一层的新数据,在第二层中重复此过程;在其它层中重复此过程,直到得出最后一层 d d d 的概率值。
采用此过程,数据 d d d 的解码错误概率是方案一中迭代m次后得到的概率的上限。虽然两种方案都是基于m层数中的接收数据,但是方案一的概率译码(Probabilistic Decoding)总是从这些数据中选择最可能的决定。

问:为什么方案二的错误概率是方案一的上限?
答:因为方案一总是选择最可能的决定即改变使得校验方程不满足的个数最大的码字,而方案二选择的是当两个校验矩阵不满足的码字,明显方案一更准确。

如果一个数据位接收错误的概率为 p 0 p_0 p0,那么校验方程不满足的概率为这个校验方程中其它 k − 1 k-1 k1个数据位中有偶数个数据不满足的概率,即 k − 1 k-1 k1个数据位中有偶数个1的概率,概率值为:
1 + ( 1 − 2 p 0 ) k − 1 2 ( 7 ) \frac{ 1 + (1 - 2p_0)^{k-1} }{ 2 } \qquad\qquad\qquad(7) 21+(12p0)k17

由于,只有当有两个与该数据位有关的校验矩阵不满足时,才纠正该错误,则第一层中数据位出现错误并且被纠正的概率可表示如下:
p 0 [ 1 + ( 1 − 2 p 0 ) k − 1 2 ] 2 . . . . . P [ 对 ∣ 错 ] ( 8 ) p_0[ \frac{ 1 + ( 1-2p_0 )^{k-1} }{ 2 } ]^2 .....P[对|错]\qquad\qquad\qquad(8) p0[21+(12p0)k1]2.....P[]8
类似的,则第一层中数据位本来正确但是被改变的概率可表示如下:
( 1 − p 0 ) [ 1 − ( 1 − 2 p 0 ) k − 1 2 ] 2 . . . . . P [ 错 ∣ 对 ] ( 9 ) (1 - p_0)[ \frac{ 1 - ( 1-2p_0 )^{k-1} }{ 2 } ]^2 .....P[错|对] \qquad\qquad\qquad(9) (1p0)[21(12p0)k1]2.....P[]9
综合公式(8)和(9),通过此方案迭代后,第一层中某个数据的错误率( p 1 = p 0 − P [ 对 ∣ 错 ] + P [ 错 ∣ 对 ] p_1 = p_0 - P[对|错] + P[错|对] p1=p0P[]+P[])可表示如下:
p 1 = p 0 − p 0 [ 1 + ( 1 − 2 p 0 ) k − 1 2 ] 2 + ( 1 − p 0 ) [ 1 − ( 1 − 2 p 0 ) k − 1 2 ] 2 ( 10 ) p_1 = p_0 - p_0[ \frac{ 1 + ( 1-2p_0 )^{k-1} }{ 2 } ]^2 + (1 - p_0)[ \frac{ 1 - ( 1-2p_0 )^{k-1} }{ 2 } ]^2 \qquad\qquad\qquad(10) p1=p0p0[21+(12p0)k1]2+(1p0)[21(12p0)k1]210
分析迭代过程,简单表示(后面的公式13是更准确的表示) p i + 1 p_{i+1} pi+1 p i p_i pi 的关系如下:
p i + 1 = p 0 − p 0 [ 1 + ( 1 − 2 p i ) k − 1 2 ] 2 + ( 1 − p 0 ) [ 1 − ( 1 − 2 p i ) k − 1 2 ] 2 ( 11 ) p_{i+1} = p_0 - p_0[ \frac{ 1 + ( 1-2p_i )^{k-1} }{ 2 } ]^2 + (1 - p_0)[ \frac{ 1 - ( 1-2p_i )^{k-1} }{ 2 } ]^2 \qquad\qquad\qquad(11) pi+1=p0p0[21+(12pi)k1]2+(1p0)[21(12pi)k1]211

对于特别小的 p 0 p_0 p0,序列 [ p i ] [p_i] [pi] 收敛于0,通过数据图可得出此结论, p i + 1 p_{i+1} pi+1 p i p_i pi 的关系图如下:
pi迭代收敛图
从图中可知,
0 < p i + 1 < p i ( f o r 0 < p i ≤ p 0 ) ( 12 ) 0 < p_{i+1} <p_i \quad\quad (for \quad 0 < p_i \le p_0) \qquad\qquad(12) 0<pi+1<pi(for0<pip0)12
p i + 1 = p i ( f o r p i = 0 ) p_{i+1} = p_i \quad\quad (for \quad p_i = 0) pi+1=pi(forpi=0)

Fig. 9展示了不同 k k k 所对应的最大的 p 0 p_0 p0 .
最大的p0
对于比较小的 p i p_i pi 来说,当 [ p i → 0 ] [p_i \to 0] [pi0] 时,(11)可以表示如下:
p i + 1 ≈ p i 2 ( k − 1 ) p 0 p_{i+1} \approx p_i2(k-1)p_0 pi+1pi2(k1)p0
(提示: lim ⁡ x → 0 ( 1 + x ) 1 x = e 且 e x = 1 + x + x 2 + . . . \lim_{x \to 0} (1 + x)^{\frac{1}{x}} = e 且e^x=1+x+x^2+... limx0(1+x)x1=eex=1+x+x2+...
因此,当迭代次数 i i i 足够大时,
p i ≈ c [ 2 ( k − 1 ) p 0 ] i p_i \approx c[2(k-1)p_0]^i pic[2(k1)p0]i
c c c 是只取决于 i i i 的常数。由于树中独立层的数量随块长度呈对数增长,因此当块长度的负幂次较小时,解码错误的概率趋近于0。这种缓慢的接近0的方法似乎是译码方案修改和严格的独立性要求的结果,而不是概率译码作为一个整体的结果。
我关于负幂次的理解:块长度的负幂次较小即 n − 1 n^{-1} n1 较小,即 n n n 较大,则独立层的数量越大,则可迭代的次数越大,则解码概率趋近于 0。
若该理解有误还请批评指正,非常感谢。

思考:对比上一解码方式,思考此方式中的缓慢接近于0

Case2: j > 3 j>3 j>3
同样的论证可以应用于每个数据位多余3个校验集的情况中,对于正整数 d d d ,当且仅当一个数据位不满足的校验方程个数大于等于 d d d 时才改变此数据位(在上面的案例中, d = 2 d=2 d=2 ),因此,使用与(11)相同的证明可得如下更一般的情况:
p i + 1 = p 0 − p 0 ∑ l = b j − 1 ( j − 1 l ) [ 1 + ( 1 − 2 p i ) k − 1 2 ] l [ 1 − ( 1 − 2 p i ) k − 1 2 ] i − 1 − l + ( 1 − p 0 ) ∑ l = b j − 1 ( j − 1 l ) [ 1 − ( 1 − 2 p i ) k − 1 2 ] l [ 1 + ( 1 − 2 p i ) k − 1 2 ] i − 1 − l ( 13 ) p_{i+1} = p_0 - p_0 \sum_{l=b}^{j-1} \dbinom{j-1}{l} [ \frac{ 1 + ( 1-2p_i )^{k-1} }{ 2 } ]^l [ \frac{ 1 - ( 1-2p_i )^{k-1} }{ 2 } ]^{i-1-l} \\ \qquad\qquad\qquad+ (1-p_0) \sum_{l=b}^{j-1} \dbinom{j-1}{l} [ \frac{ 1 - ( 1-2p_i )^{k-1} }{ 2 } ]^l [ \frac{ 1 + ( 1-2p_i )^{k-1} }{ 2 } ]^{i-1-l} \qquad (13) pi+1=p0p0l=bj1(lj1)[21+(12pi)k1]l[21(12pi)k1]i1l+(1p0)l=bj1(lj1)[21(12pi)k1]l[21+(12pi)k1]i1l(13)
因此,整数 d d d 可以用来最小化 p i + 1 p_{i+1} pi+1 。最小值的解就是满足下面不等式的最小的整数 d d d
1 − p 0 p 0 ≤ [ 1 + ( 1 − 2 p i ) k − 1 1 − ( 1 − 2 p i ) k − 1 ] 2 b − j + l ( 14 ) \frac{ 1-p_0 }{ p_0 } \leq [\frac{ 1 + ( 1-2p_i )^{k-1} }{ 1 - ( 1-2p_i )^{k-1} }]^{ 2b-j+l } \qquad\qquad (14) p01p0[1(12pi)k11+(12pi)k1]2bj+l(14)
从这个公式中可以看出, p i p_i pi 减小的时候, b b b 也减小。Fig. 10刻画了当 b b b 改变时, p i + 1 p_{i+1} pi+1 p i p_i pi 的关系,图中的断点表示 b b b 的变化,
pi的迭代图

对于足够小的交叉概率来说,随着迭代次数的增加,解码错误率趋于0的证明和之前的证明相同。但是,序列 [ p i → 0 ] [p_i \to 0] [pi0] 的渐进法和之前的证明不同。参照(14),如果 p i p_i pi 足够小,当 j j j 为偶数时, b b b j / 2 j/2 j/2 ;当 j j j 为奇数时, b b b ( j + 1 ) / 2 (j+1)/2 (j+1)/2 。使用上述定义的 b b b ,(13)可以如下扩展:
p i + 1 = p 0 ( j − 1 j − 1 2 ) ( k − 1 ) ( i − 1 ) / 2 p i ( i − 1 ) / 2 + 高 阶 项 ( j 为 偶 数 ) ( 15 ) p_{i+1} = p_0 \dbinom{j-1}{\frac {j-1}{2}} (k-1)^{(i-1)/2}p_i^{(i-1)/2} + 高阶项 \qquad(j 为偶数)\qquad (15) pi+1=p0(2j1j1)(k1)(i1)/2pi(i1)/2+j15
p i + 1 = ( j − 1 j / 2 ) ( k − 1 ) i / 2 p i i / 2 + 高 阶 项 ( j 为 奇 数 ) p_{i+1} = \dbinom{j-1}{j/2} (k-1)^{i/2}p_i^{i/2} + 高阶项 \qquad(j 为奇数)\qquad pi+1=(j/2j1)(k1)i/2pii/2+j
据此,当选择了正的常数 C j k C_{jk} Cjk 和足够大的迭代次数 i i i 后,
p i ≤ e x p [ − C j k ( j − 1 2 ) i ] ( j 为 偶 数 ) ( 16 ) p_i \leq exp[-C_{jk}(\frac{j-1}{2})^i] \qquad\qquad (j 为偶数)\qquad (16) piexp[Cjk(2j1)i]j(16)
p i ≤ e x p [ − C j k ( j 2 ) i ] ( j 为 奇 数 ) p_i \leq exp[-C_{jk}(\frac{j}{2})^i] \qquad\qquad(j 为奇数)\qquad piexp[Cjk(2j)i]j

两个解码方案的区别

  1. 方案一中根节点为第0层,方案二中根节点为第m层;但都是从上向下执行迭代过程。
  2. 方案二的错误概率是方案一的上限,因为方案一总是选择最可能的决定即改变使得校验方程不满足的个数最大的码字,而方案二选择的是当两个校验矩阵不满足的码字,明显方案一更准确。

4. 实验结果

[未完待续。。。]


参考阅读:

  1. 论文原文:Cancellieri G . Low Density Parity Check Codes[J]. 1963.
  2. 和计算法:置信传播算法
  3. 参考教材:《现代编码理论 赵晓群编》,入门推荐阅读,LDPC码部分已拍照存为PDF,百度云下载
  • 13
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值