-
QR码是一类循环码。著名的(23,12,7)Golay码就是一个QR码,它的扩展码是(24,12,8)扩展Golay码,二十世纪80年代在NASA的Voyager spacecraft program中被用于传输木星(Jupiter)和土星(Saturn)的彩色照片。在美国政府的两个标准中也指定使用(24,12,8)扩展Golay码[1-2]。
QR码是在1958年被提出的[3]。从那时起,人们对QR码的研究就一直没有停止过[4-8]。
QR码是一类译码比较困难的“好”码[9];而对于Q译R码的码,文献[10]认为QR码类的译码算法通常不具有规范的结构,针对不同的QR码,采用不同的译码算法[10]。因此对QR码的译码算法研究具有一定的理论意义和实际意义。
本文针对所有二进制QR码给出一个通用的简化查表译码算法。目前已有的二进制QR码的查表译码算法一般都是针对特定的QR码,本文给出的算法不仅具有适用性广的特点,而且译码表的行数也是最小的。
HTML
-
假设C是二进制$(n,k,d)$循环码,H=[AT,I]是C的一个一致校验矩阵。
设$\mathbf{e}=\left[ {{\mathbf{e}}_{M}},{{\mathbf{e}}_{P}} \right]$,其中${{\mathbf{e}}_{M}}=[{{e}_{1}},\cdots ,{{e}_{k}}]$是信息部分,${{\mathbf{e}}_{P}}=[{{e}_{k+1}},\cdots ,{{e}_{n}}]$是校验部分,$\mathbf{s}=\mathbf{e}{{\mathbf{H}}^{\text{T}}}$。
为了得到一个适用于所有QR码的通用算法,本文对QR进行研究,发现QR码都具有一些性质,利用这些性质可以得到一个通用的简化查表译码算法。将结果用6个定理的形式给出。
定理1 若$\mathbf{e}=\left[ {{\mathbf{e}}_{M}},{{\mathbf{e}}_{P}} \right],w({{\mathbf{e}}_{M}})\ge 1$,则$w(\mathbf{e}{{\mathbf{H}}^{\text{T}}})\ge d-w(\mathbf{e})$。
证明:因为码字的重量至少是d,而${{\mathbf{e}}_{M}}\left[ \mathbf{I},\mathbf{A} \right]=\left[ {{\mathbf{e}}_{M}},{{\mathbf{e}}_{M}}\mathbf{A} \right]$是非零码字,所以$w({{\mathbf{e}}_{M}})+w({{\mathbf{e}}_{M}}\mathbf{A})\ge d$。由于$\mathbf{e}{{\mathbf{H}}^{\text{T}}}={{\mathbf{e}}_{M}}\mathbf{A}+{{\mathbf{e}}_{P}}$,而$w(\mathbf{e}{{\mathbf{H}}^{\text{T}}})\text{=}w({{\mathbf{e}}_{M}}\mathbf{A}+{{\mathbf{e}}_{P}})\ge w({{\mathbf{e}}_{M}}\mathbf{A})-w({{\mathbf{e}}_{P}})$,故$w(\mathbf{e}{{\mathbf{H}}^{\text{T}}})\ge d-w({{\mathbf{e}}_{M}})-w({{\mathbf{e}}_{P}})=d-w(\mathbf{e})$。
因为$d\ge 2t+1$,所以由定理1可得:
定理 2 若$\mathbf{e}=\left[ {{\mathbf{e}}_{M}},{{\mathbf{e}}_{P}} \right]$,其中$w({{\mathbf{e}}_{M}})\ge 1,w(\mathbf{e})\le t$,则$w(\mathbf{e}{{\mathbf{H}}^{\text{T}}})\ge t+1$。
由H=[AT,I]的结构及矩阵的乘法容易看出:
定理 3 若$\mathbf{e}=\left[ {{\mathbf{0}}_{1\times k}},{{\mathbf{e}}_{P}} \right]$,则$\mathbf{e}{{\mathbf{H}}^{\text{T}}}={{\mathbf{e}}_{P}}$。
由定理2和定理3可得:
定理 4 若$w(\mathbf{e})\le t$,则$w(\mathbf{e}{{\mathbf{H}}^{\text{T}}})\le t$当且仅当$\mathbf{e}=\left[ {{\mathbf{0}}_{1\times k}},\mathbf{e}{{\mathbf{H}}^{\text{T}}} \right]$。
定理4给出了一个如何判别错误只出现在校验部分的方法及如何确定错误模式的方法。因此当错误只出现在校验部分时就可统一处理,而不必将每个错误模式和其对应的伴随式一一列出。下面只须考虑信息部分一定有错误出现的情形。
当$\mathbf{e}=\left[ {{\mathbf{e}}_{M}},{{\mathbf{e}}_{P}} \right]$时,定理5给出了${{\mathbf{e}}_{P}}$与e的伴随式和$[{{\mathbf{e}}_{M}},{{\mathbf{0}}_{1\times (n-k)}}]$的伴随式之间的关系。
定理 5 设$\mathbf{e}=\left[ {{\mathbf{e}}_{M}},{{\mathbf{e}}_{P}} \right]$。若$[{{\mathbf{e}}_{M}},{{\mathbf{0}}_{1\times (n-k)}}]{{\mathbf{H}}^{\text{T}}}={{\mathbf{s}}_{M}}$,则${{\mathbf{e}}_{P}}=\mathbf{e}{{\mathbf{H}}^{\text{T}}}-{{\mathbf{s}}_{M}}$。
证明:${{\mathbf{e}}_{P}}=(\mathbf{e}-[{{\mathbf{e}}_{M}},{{\mathbf{0}}_{1\times (n-k)}}]){{\mathbf{H}}^{\text{T}}}=\mathbf{e}{{\mathbf{H}}^{\text{T}}}-{{\mathbf{s}}_{M}}$。
由定理5可知,在错误向量的伴随式及其信息部分对应的伴随式已知的情况下可以得到错误向量的校验部分。
当错误仅出现在信息部分,且错误个数不超过t时,错误向量的总数为${{N}_{f}}=\sum\limits_{i=1}^{t}{\left( \begin{align} & k \\ & i \\ \end{align} \right)}$。设${{N}_{f}}$个信息部分出错的错误向量为:
其对应的伴随式分别为:
表 1将向量${{\mathbf{s}}_{\mathbf{i}}}$及$\mathbf{e}_{M}^{i}$并置在一行,得到一个${{N}_{f}}$行、n列的表,这个表称为信息部分伴随式与错误模式的对应表MPSET(message part syndrome error table):
伴随式 错误模式 ${{\mathbf{s}}_{1}}$ $\mathbf{e}_{M}^{1}$ ${{\mathbf{s}}_{2}}$ $\mathbf{e}_{M}^{2}$ $\vdots $ $\vdots $ ${{\mathbf{s}}_{{{N}_{f}}}}$ $\mathbf{e}_{M}^{{{N}_{f}}}$ 在实际译码时并不知道错误向量的信息部分,所以定理5的结果不具可操作性。定理6则从理论上保证由错误向量的伴随式和表MPSET,通过比较向量的汉明重量就可确定错误向量。因为错误向量的伴随式可通过接收到的向量得到,而表MPSET可事先做好,所以定理6的结果可实际操作。
定理 6 设$\mathbf{e}=\left[ {{\mathbf{e}}_{M}},{{\mathbf{e}}_{P}} \right],w(\mathbf{e})\le t$。若$w({{\mathbf{e}}_{M}})\ge 1$,$\mathbf{s}=\mathbf{e}{{\mathbf{H}}^{\text{T}}}$,则存在唯一一个$i\text{ (}1\le i\le {{N}_{f}})$,使得$w([\mathbf{s}-{{\mathbf{s}}_{i}},\mathbf{e}_{M}^{i}])\le t$ 。此时一定有$\mathbf{e}=[\mathbf{e}_{M}^{i},\mathbf{s}-{{\mathbf{s}}_{i}}]$。
证明:由MPSET的构造可知,存在$1\le i\le {{N}_{f}}$使得${{\mathbf{e}}_{M}}=\mathbf{e}_{M}^{i}$。再由定理5知$\mathbf{e}=[\mathbf{e}_{M}^{i},\mathbf{s}-{{\mathbf{s}}_{i}}]$,故$w([\mathbf{s}-{{\mathbf{s}}_{i}},\mathbf{e}_{M}^{i}])=w(\mathbf{e})$。
下面只需证当$j\ne i$时必有:
实际上由定理1可得: