如何理解杰林码信道检错纠错论文?

如何理解我的信道检错纠错编码论文《概率加权的信道检错纠错码》?这里首先得根据加权概率进行编码说起:

φ ( x ) = r p ( x ) \varphi\left( x \right) = rp\left( x \right)

对于二进制序列来讲,只有 φ ( 0 ) \varphi\left( 0 \right) φ ( 1 ) \varphi\left( 1 \right) 。而在信道检错纠错编码时,我们设 φ ( 1 ) = 1 \varphi\left( 1 \right) = 1 ,也就是说符号1的编码概率为1。根据自信息量的定义

I ( x ) = log 2 φ ( x ) I\left( x \right) = -\log_{2}{\varphi\left( x \right)}

于是符号1在整个编码过程中其自信息量为0,也就是说编码后的结果只与符号0有关,与符号1无关(符号1在信道检错纠错过程中只保留规律特征,不再占有信息量)。设

φ ( 0 ) = 1 d \varphi\left( 0 \right) = \frac{1}{d}

显然, d d 可以取大于等于1的任意实数。于是符号0的自信息量为

I ( 0 ) = log 2 1 d I\left( 0 \right) = -\log_{2}\frac{1}{d}

因为符号1不再有信息量,所以我们一定存在一个这样的结论:

编码 m log 2 1 d \frac{m}{- \log_{2}\frac{1}{d}} 个符号0必然输出 m m 个比特

可以这样来理解这个结论,设编码 c c 个符号0,必然输出 m m 个比特,于是根据信息熵就有

c log 2 1 d = m -c\log_{2}\frac{1}{d} = m

于是

c = m log 2 1 d c = \frac{m}{-\log_{2}\frac{1}{d}}

显然,编码 c c 个符号0,就必然输出 m m 个比特。但是,根据我的纠错方法,在二进制序列中 c c 个符号0是存在两种极端的分布方式,因为符号1不再占信息量,但是符号1却表征了二进制序列的特征。于是有

方式一 c c 个符号0在二进制序列中最稀疏的分布,如:011011011…;对于这样最稀疏的情况下,显然预处理后的二进制序列(没有编码的二进制序列,但是已经按照规律添加了相关的符号)需要编码 3 c 3c 个符号(包括了符号0和符号1)才能输出 m m 个比特。因为, c c 已知,且每个符号0后面必然存在2个符号1,于是符号1的个数为 2 c 2c ,但是又因为 2 c 2c 个符号1不占任何的信息量,所以总共 3 c 3c 个符号才能输出 m m 个比特。

方式二 c c 个符号0在二进制序列中最密集的分布,如:010101…;同理,需要编码 2 c 2c 个符号(包括了符号0和符号1)才能输出 m m 个比特。

接下来再取看我论文里面的3.2.3节就容易多了。则最小检错距离就是

l min = 6 c = 6 m log 2 1 d l_{\min} = 6c = \frac{- 6m}{\log_{2}\frac{1}{d}}

那么什么是最大纠错范围?

这里首先得约束一个实际应用的现象,由于计算机的编码精度问题(不可能无限精度计算),所以往往需要约束一个确定的 m m 值,则 l min l_{\min} 的值就固定了,也就是说在检错时,会固定译码 l min l_{\min} 长度的二进制序列,然后再判断这个二进制序列是否符合规律。那么每次需要固定译码 l min l_{\min} 长度的二进制序列,则错误就不一定只发生在编码后的 m m 个比特中,因为预处理后的二进制序列在某个片段中一定存在最稀疏和最密集的特征,同时也存在介于这两种特征的片段。

基于这个分析,所以有了如下的结论。

每次固定译码 l min = 6 m log 2 1 d l_{\min} = \frac{- 6m}{\log_{2}\frac{1}{d}} 个比特的二进制序列,若序列不符合规律,则错误必然发生在 l min 2 log 2 1 d = 3 m - \frac{l_{\min}}{2}\log_{2}\frac{1}{d} =3m (以当前 m m 个比特最后位置开始,向前 3 m 3m 个比特)个比特范围内。

为什么是 3 m 3m ?这个结论我在论文中已经推理了。

由于确定了最大纠错范围为 3 m 3m ,且根据BSC信道,出现错误的特征是:某些符号1按照某个误比特率被解调为符号0,某些符号0按照某个误比特率被解调为符号1。于是 3 m 3m 确定比特窗口(可以理解是一种滑块,每一个滑块中包含了 3 m 3m 个比特)中出现错误的位置就是一个确定现象了。比如假设出现1个错误,根据组合数于是错误的位置就有 C 3 m 1 C_{3m}^{1} 种可能性,出现2个错误时,错误的位置就有 C 3 m 2 C_{3m}^{2} 种可能性。相信通过这个方法可以扩展到任意信道,比如BEC信道。

又由于每种错误的可能性已经确定,那么对于编写程序来讲就是将每一种可能性去尝试验证,BSC信道下的纠错处理方法是:将某一种可能性错误位置对应的比特取非即可。验证方法也很简单,就是将取非后的 3 m 3m 个比特去译码,若译码出的二进制序列符合规律,者说明错误已经被纠正了,如果译码出的二进制序列不符合规律则错误尚未纠正,接着验证下一种可能性。直到所有可能性都验证完成了。

但是,这样的方法存在一种可能性,就是译码出的二进制序列符合规律,但是这个二进制序列却不是正确的结果。怎么理解呢?对于一个长度为 l min l_{\min} 的二进制序列,总的组合数 2 l min 2^{l_{\min}} 种,但是符合人为设定的规律的组合方式是有限的,比如有 m m 种。比如正确的应该是A序列,但是译码出的却是错误的B序列,但是A和B序列都符合人为设定的规律。那么出现这样情况的概率为

P err = m 2 l min P_{\text{err}} = \frac{m}{2^{l_{\min}}}

我论文中介绍了 P err P_{\text{err}} 为误判概率,其中 m m l min l_{\min} 的斐波那契数列或者是帕多瓦数列而且可以非常简单的证明了我所提出的纠错方法是可以从理论上达到100%纠错的。即

lim l min + m 2 l min = 0 \lim_{l_{\min} \rightarrow + \infty}\frac{m}{2^{l_{\min}}} = 0

由于理论上能证明所有错误可以实现100%纠正,则我所介绍的纠错方法中,码率(码率实际上就是信息熵的倒数)就是信道容量。于是,我论文中给出了当BSC信道下的误比特率为 ε 0.0708452972684 \varepsilon \leq 0.0708452972684 ,且码率为 0.630929754 0.630929754 时,可以达到信道容量。所以说,我的纠错方法是世界上第二个从理论上证明可以达到信道容量的编码方法,其中极化码算一个。关键是,我的编码方法实现简单。
需要说明的是:我在论文中只是给出了这一类检错纠错方法的一种,主要是给出一个思想。基于这个思想我们可以通过不同的规律添加符号的方法来支持任何码率。

发布了27 篇原创文章 · 获赞 38 · 访问量 7570

猜你喜欢

转载自blog.csdn.net/wjlxueshu/article/details/90108317
今日推荐