二维码笔记系列(原文地址):
- 『二维码学习笔记(一) | 二维码概述』
- 『二维码学习笔记(二) | 数据分析与数据编码』
- 『二维码学习笔记(三) | 纠错编码』
- 『二维码学习笔记(四) | 信息构建与模块放置』
- 『二维码学习笔记(五) | 数据掩码与版本信息』
唠唠闲话
书接上回(上篇跳转地址)。CSDN 有字数限制,只能拆分了。。。
编码效率
概述
本节讨论编码效率问题,特别地,博客只讨论线性分组码的情形。
编码过程的这几个步骤涉及计算:
- 信息编码,即 F q k → F q n \mathbb{F}_q^k\rightarrow\mathbb{F}_q^n Fqk→Fqn
- 信息解码,即 I m ( C ) → F q k Im(C)\rightarrow\mathbb{F}_q^k Im(C)→Fqk
- 填补缺失,比如 ( ∗ , 0 , 0 ) → ( 0 , 0 , 0 ) (*,0,0) \rightarrow (0,0,0) (∗,0,0)→(0,0,0)
- 检测错误,比如 ( 1 , 1 , 0 ) (1,1,0) (1,1,0)
- 计算编码距离
- 纠正错误,比如 ( 1 , 0 , 0 ) → ( 0 , 0 , 0 ) (1,0,0)\rightarrow(0,0,0) (1,0,0)→(0,0,0)
前四步存在高效算法(多项式时间),但计算编码距离和纠错不存在处理一般情形的高效算法。
这种纠错上的困难性,既是坏处也是好处:
- 坏处在于:我们不能用任意线性码来制定编码规则,否则纠错带来的时间开销过大,效率过低
- 好处在于,这种困难性可以应用于非对称加密系统
坏处是可以避免的,比如构造特殊编码,使编码具备更多性质,允许更多操作,继而存在更高效的算法,应用上我们并不需要设计能处理一般编码的算法。
好处是这类数论难题通常导致加密算法的产生,这部分理论与二维码关联很低,放在{% post_link programming/gsoc/QR-CODE-02-extra-McEliece 番外篇 %}中介绍。
编码算法
下边介绍线性码中编码,解码,补缺,检错,求距离以及纠错这些步骤的一般计算方法。
下设 C C C 为 ( n , k , d ) q (n, k,d)_q (n,k,d)q 线性分组码,生成元矩阵为 G ∈ F n × k G\in \mathbb{F}^{n\times k} G∈Fn×k,奇偶检验矩阵为 H ∈ F k × n H\in \mathbb{F}^{k\times n} H∈Fk×n,设 x = ( x 1 , ⋯ , x k ) t ∈ C x=(x_1,\cdots,x_k)^t\in C x=(x1,⋯,xk)t∈C 为信息。
-
编码:用矩阵 G G G 左乘信息 x x x
C : F q k → F q n x ↦ G x = x ′ \begin{align*} C:\mathbb{F}_q^k&\rightarrow\mathbb{F}_q^n\\ x&\mapsto Gx=x' \end{align*} C:Fqkx→Fqn↦Gx=x′ -
解码:由线性代数知识易得矩阵 G ′ ∈ F k × n G'\in \mathbb{F}^{k\times n} G′∈Fk×n 使得 G ′ G G'G G′G 为 k k k 阶单位矩阵。左乘矩阵 G ′ G' G′ 即从 x ′ x' x′ 中解码信息 x x x。
-
检错:根据 ker ( H ) = I m ( C ) \ker(H)=Im(C) ker(H)=Im(C),只需判断 H x ′ Hx' Hx′ 是否为 0。
-
补缺:不妨设 x ′ x' x′ 缺失了前 e < d e<d e<d 个数据,将 G G G 相应分块化,得
G x = ( G 0 G 1 ) x = ( x 1 ′ ⋮ x e − 1 ′ x e ′ ⋮ x n ′ ) = ( ∗ ⋮ ∗ x e ′ ⋮ x n ′ ) \begin{align*} Gx =\begin{pmatrix} G_0 \\ G_1 \end{pmatrix} x=\begin{pmatrix} x_1'\\\vdots\\ x_{e-1}'\\ x_e'\\ \vdots\\ x_n' \end{pmatrix}=\begin{pmatrix} *\\\vdots\\ *\\ x_e'\\ \vdots\\ x_n' \end{pmatrix} \end{align*} Gx=(G0G1)x=⎝ ⎛x1′⋮xe−1′xe′⋮xn′⎠ ⎞=⎝ ⎛∗⋮∗xe′⋮xn′⎠ ⎞
反解得到原始数据 x x x
G 1 x = ( x e ′ ⋮ x n ′ ) , x = G 1 − 1 ( x e ′ ⋮ x n ′ ) \begin{align*} G_1x=\begin{pmatrix} x_e'\\ \vdots\\ x_n' \end{pmatrix}, x=G_1^{-1}\begin{pmatrix} x_e'\\ \vdots\\ x_n' \end{pmatrix} \end{align*} G1x=⎝ ⎛xe′⋮xn′⎠ ⎞,x=G1−1⎝ ⎛xe′⋮xn′⎠ ⎞
当 e < d e<d e<d 时,左侧方程组必有解,而 RS 码中 G 1 G_1 G1 还是可逆的,此时直接左成逆矩阵还原数据。 -
求距离:回顾介绍了编码距离 d d d 的两个计算性质:
- d d d 为生成元矩阵 G G G 列空间中非零向量的最小权
- d d d 为奇偶检验矩阵 H H H 的线性相关列向量组的最小长度
这两条性质给出了 d d d 的上下界,因此随机选取列向量来计算 d d d,但文献论证了计算一般线性码的编码距离不是 RP 问题(nondeterministic polynomial time),也即不存在针对一般线性码的高效算法
-
纠错:假设码字 x ′ = G x + z x'=Gx+z x′=Gx+z,其中 z z z 为纠错范围内的错误扰动,左乘矩阵 H H H 得
b = H x ′ = H ( G x + z ) = H G x + H z = H z b = Hx' = H(Gx+z) = HGx + Hz = Hz b=Hx′=H(Gx+z)=HGx+Hz=Hz求解线性方程组 H z = b Hz=b Hz=b 计算错误扰动 z z z,由于 z z z 处在纠错范围内,存在唯一向量 z z z 使得
H z = b , w t ( z ) ≤ ⌊ d − 1 2 ⌋ Hz=b,\ wt(z) \leq \lfloor\frac{d-1}{2}\rfloor Hz=b, wt(z)≤⌊2d−1⌋线性方程组的解构成了一个仿射空间(线性空间+平移向量),问题等同于求该空间中权重最小的向量。然而这个问题的求解仍是困难的,哪怕对 RS 码,参阅文献:Maximum-Likelihood Decoding of Reed-Solomon Codes is NP-hard
注:表面上看,纠错只是解线性方程,但由于这是对有限域上讨论,且问题不是求出方程的一个解,而是计算最小解。由于解空间是随着维数以指数形式增长,暴力破解自然行不通。这种表明简单,但应用到有限域就变得复杂的现象在数论中经常出现,比如计算离散对数 l o g q ( a ) log_q(a) logq(a) 。
最后,回到文章重点,RS 码及纠错算法,由于 RS 码取到了 Singleton Bound,编码距离计算简单,难点在纠错上。
Reed-Solomon 纠错
Reed-Solomon 码是一组纠错码,由 Irving S. Reed 和Gustave Solomon 在 1960 年引入。它有许多应用,比如 MiniDiscs、CD、DVD、蓝光光盘、二维码、DSL、WiMAX 等等。
RS 码具有以下特点:
- RS 码满足 Singleton Bound
- RS 码存在高效的解码算法
- RS 码在现实生活中被广泛应用
背景知识
具备高效算法的编码通常具有丰富的结构性质,RS 码便是如此,其为一类特殊线性码,以范德蒙德矩阵(Vandermonde matrix) 为生成元矩阵。
我们先介绍理论基础,再给出 RS 码的定义和性质(这么安排并不好,有空调整一下)。
下设 F \mathbb{F} F 为数域, α = ( α 0 , ⋯ , α n − 1 ) ∈ F n − 1 \alpha=(\alpha_0,\cdots,\alpha_{n-1})\in\mathbb{F}^{n-1} α=(α0,⋯,αn−1)∈Fn−1,且 α i \alpha_i αi 互不相等。
-
数域可以分两大类,有理数域 Q \mathbb{Q} Q,实数域 R \mathbb{R} R 和复数域 C \mathbb{C} C 等属于特征 0 域;有限域 F p F_p Fp 及其扩张,属于特征 p 域,线性代数理论对两类数域均适用。
-
称数域 F \mathbb{F} F 为有限域,若其仅有有限个元素,并将包含 q q q 个元素的有限域记为 F q \mathbb{F}_q Fq,有限域也被称为伽罗瓦域(Galois Filed)。由近世代数可知
- 有限域均形如 F q \mathbb{F}_q Fq,其中 q = p r q=p^r q=pr, p p p 为素数
- 同阶的有限域相互同构
- 记 F q ∗ = F q − { 0 } \mathbb{F}_q^*=\mathbb{F}_q-\{0\} Fq∗=Fq−{0},其乘法结构作成 q − 1 q-1 q−1 阶循环群
- 特别地, r r r 取 1 时, F p \mathbb{F}_p Fp 称为素域,其结构简单,同构于 Z / p Z \mathbb{Z}/p\mathbb{Z} Z/pZ
- 一般地, F q \mathbb{F}_q Fq 同构于素域 F p \mathbb{F}_p Fp 关于 x r − 1 x^r-1 xr−1 的分裂域。当 r ≠ 1 r\neq 1 r=1时, F \mathbb{F} F 结构复杂,而不是简单的模 q q q 结构。
-
性质: F \mathbb{F} F 上的 n n n 次多项式 f ( x ) f(x) f(x) 至多存在 n n n 个根。若干说明:
- “ n n n 个根”指 F \mathbb{F} F 上的根,通过带余除法和归纳法容易证明
- 代数基本定理表明 n n n 次多项式恰有 n n n 个根,这里 n n n 个根指代数闭包 F ˉ \bar{\mathbb{F}} Fˉ 上的根,比如实数域上 x 2 + 1 = 0 x^2+1=0 x2+1=0 没有根,但在代数闭域 C \mathbb{C} C 上有两个根
- 零多项式的次数一般假定为无穷
-
如下定义范德蒙德矩阵 V ( α , k ) ∈ F n × k V(\alpha,k)\in\mathbb{F}^{n\times k} V(α,k)∈Fn×k
V ( α , k ) = ( 1 α 0 α 0 2 ⋯ α 0 k − 1 1 α 1 α 1 2 ⋯ α 1 k − 1 ⋮ ⋮ ⋮ ⋱ ⋮ 1 α n − 1 α n − 1 2 ⋯ α n − 1 k − 1 ) V(\alpha,k)= \begin{pmatrix} 1 & \alpha_0 & \alpha_0^2 & \cdots & \alpha_0^{k-1}\\ 1 & \alpha_1 & \alpha_1^2 & \cdots & \alpha_1^{k-1}\\ \vdots & \vdots & \vdots & \ddots & \vdots\\ 1 & \alpha_{n-1} & \alpha_{n-1}^2 & \cdots & \alpha_{n-1}^{k-1} \end{pmatrix} V(α,k)=⎝ ⎛11⋮1α0α1⋮αn−1α02α12⋮αn−12⋯⋯⋱⋯α0k−1α1k−1⋮αn−1k−1⎠ ⎞
当 k ≤ n k\leq n k≤n 时,由范德蒙德行列式易证 V ( α , k ) V(\alpha,k) V(α,k) 的秩为 k k k
∣ 1 α 0 α 0 2 ⋯ α 0 k − 1 1 α 1 α 1 2 ⋯ α 1 k − 1 ⋮ ⋮ ⋮ ⋱ ⋮ 1 α k − 1 α k − 1 2 ⋯ α k − 1 k − 1 ∣ = ∏ i > j ( α i − α j ) ≠ 0 \begin{align*} \begin{vmatrix} 1 & \alpha_0 & \alpha_0^2 & \cdots & \alpha_0^{k-1}\\ 1 & \alpha_1 & \alpha_1^2 & \cdots & \alpha_1^{k-1}\\ \vdots & \vdots & \vdots & \ddots & \vdots\\ 1 & \alpha_{k-1} & \alpha_{k-1}^2 & \cdots & \alpha_{k-1}^{k-1} \end{vmatrix}=\prod_{i>j}(\alpha_i-\alpha_j)\neq 0 \end{align*} ∣ ∣11⋮1α0α1⋮αk−1α02α12⋮αk−12⋯⋯⋱⋯α0k−1α1k−1⋮αk−1k−1∣ ∣=i>j∏(αi−αj)=0 -
范德蒙德矩阵与多项式有紧密联系:左乘运算可转化为多项式运算
( 1 α 0 α 0 2 ⋯ α 0 k − 1 1 α 1 α 1 2 ⋯ α 1 k − 1 ⋮ ⋮ ⋮ ⋱ ⋮ 1 α n − 1 α n − 1 2 ⋯ α n − 1 k − 1 ) ( a 0 a 1 ⋮ a k − 1 ) = ( ∑ i = 0 k − 1 a i α 0 i ∑ i = 0 k − 1 a i α 1 i ⋮ ∑ i = 0 k − 1 a i α n − 1 i ) = ( f ( α 0 ) f ( α 1 ) ⋮ f ( α n − 1 ) ) \begin{align*} \begin{pmatrix} 1 & \alpha_0 & \alpha_0^2 & \cdots & \alpha_0^{k-1}\\ 1 & \alpha_1 & \alpha_1^2 & \cdots & \alpha_1^{k-1}\\ \vdots & \vdots & \vdots & \ddots & \vdots\\ 1 & \alpha_{n-1} & \alpha_{n-1}^2 & \cdots & \alpha_{n-1}^{k-1} \end{pmatrix} \begin{pmatrix} a_0\\ a_1\\ \vdots\\ a_{k-1} \end{pmatrix}= \begin{pmatrix} \sum\limits_{i=0}^{k-1}a_i\alpha_0^i\\ \sum\limits_{i=0}^{k-1}a_i\alpha_1^i\\ \vdots\\ \sum\limits_{i=0}^{k-1}a_i\alpha_{n-1}^i \end{pmatrix}= \begin{pmatrix} f(\alpha_0)\\ f(\alpha_1) \\ \vdots \\ f(\alpha_{n-1}) \end{pmatrix} \end{align*} ⎝ ⎛11⋮1α0α1⋮αn−1α02α12⋮αn−12⋯⋯⋱⋯α0k−1α1k−1⋮αn−1k−1⎠ ⎞⎝ ⎛a0a1⋮ak−1⎠ ⎞=⎝ ⎛i=0∑k−1aiα0ii=0∑k−1aiα1i⋮i=0∑k−1aiαn−1i⎠ ⎞=⎝ ⎛f(α0)f(α1)⋮f(αn−1)⎠ ⎞其中 f ( x ) = ∑ i = 0 k − 1 a i x i f(x)=\sum\limits_{i=0}^{k-1}a_ix^i f(x)=i=0∑k−1aixi,从这一性质也能看出 V ( α , k ) V(\alpha,k) V(α,k) 为列满秩矩阵
V ( α , k ) X = O ⇔ f ( α i ) = 0 , ∀ 0 ≤ i ≤ n ⇒ f = 0 ( deg ( f ) < = n ) ⇒ X = ( a 0 , ⋯ , a k ) t = O \begin{align*} V(\alpha,k)X=O&\Leftrightarrow f(\alpha_i)=0,\ \forall\ 0\leq i\leq n\\ &\Rightarrow f=0\quad (\deg(f)<=n)\\ &\Rightarrow X=(a_0,\cdots, a_k)^t=O \end{align*} V(α,k)X=O⇔f(αi)=0, ∀ 0≤i≤n⇒f=0(deg(f)<=n)⇒X=(a0,⋯,ak)t=O特别地,当 k = n k=n k=n 时, V ( α , k ) V(\alpha,k) V(α,k) 为可逆矩阵
-
推论:对任意 { y i } i = 0 k − 1 ⊆ F q n \{y_i\}_{i=0}^{k-1}\subseteq\mathbb{F}_q^n {yi}i=0k−1⊆Fqn,存在唯一次数不大于 k − 1 k-1 k−1 的多项式 f f f,使得 f ( α i ) = y i f(\alpha_i)=y_i f(αi)=yi。具体地, f f f 的各项系数 { a i } i = 0 k − 1 \{a_i\}_{i=0}^{k-1} {ai}i=0k−1 由以下线性方程组得到
V ( α , n ) ( a 0 a 1 ⋮ a k − 1 ) = ( y 0 y 1 ⋮ y n − 1 ) V(\alpha,n) \begin{pmatrix} a_0\\ a_1\\ \vdots \\ a_{k-1} \end{pmatrix}= \begin{pmatrix} y_0\\ y_1\\ \vdots \\ y_{n-1} \end{pmatrix} V(α,n)⎝ ⎛a0a1⋮ak−1⎠ ⎞=⎝ ⎛y0y1⋮yn−1⎠ ⎞ -
推论2:有限域上,任意映射 F q → F \mathbb{F}_q\rightarrow\mathbb{F} Fq→F 可写为次数不超过 q − 1 q-1 q−1 的多项式。此外,利用性质 x q = x x^q=x xq=x,任意多项式可以转化为次数不超过 q − 1 q-1 q−1 的多项式。
这个现象很有趣:有限域上的函数没有可积可微的概念,所有映射都是多项式!且函数集是有限集。
基本概念
Reed Solomon 码是满足 Singleton Bound 且具有高效算法的一类编码。(以下是 RS 码的 Original View)
下设 q ≥ n ≥ k q\geq n\geq k q≥n≥k, α = ( α 0 , ⋯ , α n − 1 ) ∈ F q n \alpha=(\alpha_0,\cdots,\alpha_{n-1})\in\mathbb{F}_q^n α=(α0,⋯,αn−1)∈Fqn 且其中元素互不相同。
-
如下定义 F q n \mathbb{F}_q^n Fqn 的子集 R S q ( α , n , k ) RS_q(\alpha,n,k) RSq(α,n,k),称为信息长 k k k,块长 n n n 的关于向量 α \alpha α 的 Reed-Solomon 码
R S q ( α , n , k ) = { ( f ( α 0 ) , ⋯ , f ( α n − 1 ) ) ∣ f ( x ) ∈ F q [ x ] , deg ( f ) ≤ k − 1 } RS_q(\alpha,n,k)=\{(f(\alpha_0), \cdots, f(\alpha_{n-1}))|f(x)\in\mathbb{F}_q[x],\ \deg(f)\leq k-1\} RSq(α,n,k)={(f(α0),⋯,f(αn−1))∣f(x)∈Fq[x], deg(f)≤k−1} -
写成线性变换形式
R S q ( α , n , k ) : F q k ↪ F q [ x ] → F q n ( a 0 ⋮ a n − 1 ) ↦ f ( x ) = ∑ i = 0 k − 1 a i x i ↦ ( f ( α 0 ) ⋮ f ( α n − 1 ) ) \begin{align*} RS_q(\alpha,n,k):\mathbb{F}_q^k&\hookrightarrow \mathbb{F}_q[x]&\rightarrow \mathbb{F}_q^n\qquad\qquad\\ \begin{pmatrix}a_0\\\vdots\\a_{n-1}\end{pmatrix} &\mapsto f(x)=\sum_{i=0}^{k-1}a_ix^i &\mapsto \begin{pmatrix}f(\alpha_0)\\\vdots\\ f(\alpha_{n-1})\end{pmatrix} \end{align*} RSq(α,n,k):Fqk⎝ ⎛a0⋮an−1⎠ ⎞↪Fq[x]↦f(x)=i=0∑k−1aixi→Fqn↦⎝ ⎛f(α0)⋮f(αn−1)⎠ ⎞根据上一节讨论,其生成元矩阵为 V ( α , k ) V(\alpha, k) V(α,k)
-
RS 码满足 Singleton Bound,根据以下等价关系可证
- d d d 为 R S q ( α , k , n ) RS_q(\alpha,k,n) RSq(α,k,n) 的编码距离
- d d d 为生成元矩阵 V ( α , k ) V(\alpha,k) V(α,k) 列空间的最小权重
- d d d 为 n - ( V ( α , k ) V(\alpha,k) V(α,k) 列空间的最大零数)
一方面,由于 deg ( f ) ≤ k − 1 \deg(f)\leq k-1 deg(f)≤k−1, f ( α i ) f(\alpha_i) f(αi) 中至多有 k − 1 k-1 k−1 项为 0,因而 d ≥ n − ( k − 1 ) d\geq n-(k-1) d≥n−(k−1);另一方面,取 f ( x ) = ( x − α 0 ) ⋯ ( x − α k − 1 ) f(x)=(x-\alpha_0)\cdots(x-\alpha_{k-1}) f(x)=(x−α0)⋯(x−αk−1) 得到权重为 n − k + 1 n-k+1 n−k+1 的列向量,证毕。
-
将满足 Singleton Bound 的编码称为 MDS(Maximum Distance Separable) 码 。容易证明: ( n , k , d ) q (n,k,d)_q (n,k,d)q 线性分组码为 M D S MDS MDS 码当且仅当其生成元矩阵 G G G 的任意 k × k k\times k k×k 阶子矩阵可逆。
特殊 RS 码
我们考虑在编码中更常用一种的 RS 码:取 n = q − 1 n=q-1 n=q−1。
-
我们先给出一个引理,用于求解该 RS 码的奇偶检验矩阵
∑ a ∈ F q a d = 0 , ∀ 0 < d < q − 1 \begin{align*} \sum_{a\in\mathbb{F}_q}a^d=0,\ \forall\ 0<d<q-1 \end{align*} a∈Fq∑ad=0, ∀ 0<d<q−1证明:设 γ \gamma γ 为 F q ∗ \mathbb{F}_q^* Fq∗ 乘法群的生成元
∑ a ∈ F q a d = ∑ a ∈ F ∗ a d = ∑ i = 1 q − 1 γ i ⋅ d = ∑ i = 1 q − 1 ( γ d ) i = 1 − ( γ d ) q 1 − γ d − 1 = 0 \begin{align*} \sum_{a\in\mathbb{F}_q}a^d &=\sum_{a\in\mathbb{F}^*}a^d =\sum_{i=1}^{q-1}\gamma^{i\cdot d}\\ &=\sum_{i=1}^{q-1}(\gamma^{d})^i =\frac{1-(\gamma^d)^q}{1-\gamma^d}-1=0 \end{align*} a∈Fq∑ad=a∈F∗∑ad=i=1∑q−1γi⋅d=i=1∑q−1(γd)i=1−γd1−(γd)q−1=0根据循环群性质, a q − 1 ≡ 1 , ∀ a ≠ 0 a^{q-1}\equiv 1,\forall a\neq 0 aq−1≡1,∀a=0,继而有 ( γ d ) q ≡ γ d (\gamma^d)^q\equiv \gamma^d (γd)q≡γd
-
设 α = ( γ 1 , γ 2 ⋯ , γ p − 1 ) \alpha=(\gamma^1,\gamma^2\cdots,\gamma^{p-1}) α=(γ1,γ2⋯,γp−1), R S q ( α , k , n ) RS_q(\alpha,k,n) RSq(α,k,n) 的生成元矩阵 V ( α , k ) V(\alpha,k) V(α,k) 为
V ( α , k ) = ( 1 γ 1 γ 2 ⋯ γ k − 1 1 ( γ 2 ) 1 ( γ 2 ) 2 ⋯ ( γ 2 ) k − 1 ⋮ ⋮ ⋮ ⋱ ⋮ 1 ( γ p − 2 ) 1 ( γ p − 2 ) 2 ⋯ ( γ p − 2 ) k − 1 1 1 1 ⋯ 1 ) \begin{align*} V(\alpha,k)&=\begin{pmatrix} 1 & \gamma^1 & \gamma^2 & \cdots & \gamma^{k-1}\\ 1 & (\gamma^2)^1 & (\gamma^2)^2 & \cdots & (\gamma^2)^{k-1}\\ \vdots & \vdots & \vdots & \ddots & \vdots\\ 1 & (\gamma^{p-2})^1 & (\gamma^{p-2})^2 & \cdots & (\gamma^{p-2})^{k-1}\\ 1 & 1 & 1 & \cdots & 1 \end{pmatrix} \end{align*} V(α,k)=⎝ ⎛11⋮11γ1(γ2)1⋮(γp−2)11γ2(γ2)2⋮(γp−2)21⋯⋯⋱⋯⋯γk−1(γ2)k−1⋮(γp−2)k−11⎠ ⎞
其奇偶检验矩阵由下式确定R S q ( α , n , k ) = { ( c 1 , c 2 , ⋯ , c q − 1 ) ∣ c ( γ j ) = 0 , ∀ 1 ≤ j ≤ n − k } w h e r e c ( x ) = ∑ l = 1 q − 1 c l x l = ∑ l = 1 q − 1 f ( γ l ) x l \begin{align*} RS_q(\alpha,n,k)&=\{(c_1,c_2,\cdots,c_{q-1})|c(\gamma^j)=0,\forall 1\leq j\leq n-k\}\\ where\ c(x)&=\sum\limits_{l=1}^{q-1}c_lx^l =\sum\limits_{l=1}^{q-1}f(\gamma^l)x^l\\ \end{align*} RSq(α,n,k)where c(x)={(c1,c2,⋯,cq−1)∣c(γj)=0,∀1≤j≤n−k}=l=1∑q−1clxl=l=1∑q−1f(γl)xl
利用前一引理易证
c ( γ j ) = ∑ l = 1 p − 1 f ( γ l ) ⋅ ( γ j ) l = ∑ l = 1 p − 1 ( ∑ i = 0 k − 1 a i ( γ l ) i ) ⋅ ( γ j ) l = ∑ i = 0 k − 1 a i ( ∑ l = 1 p − 1 ( γ l ) ( i + j ) ) = 0 \begin{align*} c(\gamma^j) &= \sum_{l=1}^{p-1}f(\gamma^l)\cdot(\gamma^j)^l\\ &=\sum_{l=1}^{p-1}\left(\sum_{i=0}^{k-1}a_i(\gamma^l)^i\right)\cdot(\gamma^j)^l\\ &=\sum_{i=0}^{k-1}a_i\left(\sum_{l=1}^{p-1}(\gamma^l)^{(i+j)}\right) =0 \end{align*} c(γj)=l=1∑p−1f(γl)⋅(γj)l=l=1∑p−1(i=0∑k−1ai(γl)i)⋅(γj)l=i=0∑k−1ai(l=1∑p−1(γl)(i+j))=0最后一式, 1 ≤ i + j ≤ n − k + i ≤ n − 1 ≤ q − 1 1\leq i+j\leq n-k+i\leq n-1\leq q-1 1≤i+j≤n−k+i≤n−1≤q−1
c ( γ j ) = 0 c(\gamma^j)=0 c(γj)=0 的必要性通过比较维数立证。 -
推论: R S q ( ( γ 1 , ⋯ , γ q − 1 ) , n , k ) RS_q((\gamma^1,\cdots,\gamma^{q-1}),n,k) RSq((γ1,⋯,γq−1),n,k) 的奇偶检验矩阵为
H = V ( ( γ 1 , ⋯ , γ q − 1 ) , n − k ) t = ( 1 γ γ 2 ⋯ γ n − 1 1 ( γ 2 ) 1 ( γ 2 ) 2 ⋯ ( γ 2 ) n − 1 ⋮ ⋮ ⋮ ⋱ ⋮ 1 ( γ n − k ) 1 ( γ n − k ) 2 ⋯ ( γ n − k ) n − 1 ) \begin{align*} H &=V((\gamma^1,\cdots,\gamma^{q-1}),n-k)^t\\ &=\begin{pmatrix} 1&\gamma&\gamma^2&\cdots&\gamma^{n-1}\\ 1&(\gamma^2)^1&(\gamma^2)^2&\cdots&(\gamma^2)^{n-1}\\ \vdots&\vdots&\vdots&\ddots&\vdots\\ 1&(\gamma^{n-k})^1&(\gamma^{n-k})^2&\cdots&(\gamma^{n-k})^{n-1}\\ \end{pmatrix} \end{align*} H=V((γ1,⋯,γq−1),n−k)t=⎝ ⎛11⋮1γ(γ2)1⋮(γn−k)1γ2(γ2)2⋮(γn−k)2⋯⋯⋱⋯γn−1(γ2)n−1⋮(γn−k)n−1⎠ ⎞ -
推广的RS码(Generalized RS code) 定义如下
G R S q ( α , n , k ; λ → ) = { ( λ 0 f ( α 0 ) , λ 1 f ( α 1 ) , ⋯ , λ n − 1 f ( α n − 1 ) ) , f ∈ F q [ x ] , deg ( f ) ≤ k − 1 } GRS_q(\alpha,n,k;\overrightarrow\lambda)= \{(\lambda_0f(\alpha_0),\lambda_1f(\alpha_1),\cdots,\lambda_{n-1}f(\alpha_{n-1})),f\in\mathbb{F}_q[x],\deg(f)\leq k-1\} GRSq(α,n,k;λ)={(λ0f(α0),λ1f(α1),⋯,λn−1f(αn−1)),f∈Fq[x],deg(f)≤k−1}其中 α ∈ ( F q ∗ ) n \alpha\in(\mathbb{F}_q^*)^n α∈(Fq∗)n ,此外生成元矩阵为
G = M ⋅ V ( α , k ) , d i a g ( M ) = ( λ 0 , ⋯ , λ n − 1 ) \begin{align*} G &=M\cdot V(\alpha,k),\ diag(M)=(\lambda_0,\cdots,\lambda_{n-1}) \end{align*} G=M⋅V(α,k), diag(M)=(λ0,⋯,λn−1)一般地,可以推导 G R S q ( α , n , k ; λ → ) GRS_q(\alpha,n,k;\overrightarrow\lambda) GRSq(α,n,k;λ) 的对偶码
简单说,RS 码为多项式 f f f 到 f . α f.\alpha f.α 的映射;另一方面,当编码维数为 q − 1 q-1 q−1 时,也可以将 RS 码视为多项式到多项式的映射,即 f ( x ) → c ( x ) f(x) \rightarrow c(x) f(x)→c(x)
纠错算法
本节介绍 Reed Solomon 的 Berlekamp–Welch 算法。
-
我们先表述纠错问题:
- 设 R S q ( α , n , k ) RS_q(\alpha,n,k) RSq(α,n,k) 为 RS 码,编码距离 d = n − k + 1 d=n-k+1 d=n−k+1,纠错能力 e ≤ ⌊ d − 1 2 ⌋ = ⌊ n − k 2 ⌋ e\leq\lfloor\frac{d-1}{2}\rfloor=\lfloor\frac{n-k}{2}\rfloor e≤⌊2d−1⌋=⌊2n−k⌋
- 设 w → = ( w 0 , ⋯ , w n − 1 ) ∈ F q n \overrightarrow{w}=(w_0,\cdots,w_{n-1})\in\mathbb{F}_q^n w=(w0,⋯,wn−1)∈Fqn 为接收到的编码,且至多存在 e e e 个错误
- 求多项式 f ( x ) ∈ F q [ x ] f(x)\in\mathbb{F}_q[x] f(x)∈Fq[x] 使得: deg ( f ) ≤ k − 1 \deg(f)\leq k-1 deg(f)≤k−1 且至多存在 e e e 个数值 α i \alpha_i αi,使得 f ( α i ) ≠ w i f(\alpha_i)\neq w_i f(αi)=wi
-
我们表述算法的过程,再论证细节:
- 计算次数为
e
e
e 的首一多项式
E
(
x
)
E(x)
E(x) 以及次数
e
+
k
−
1
e+k-1
e+k−1 的多项式
Q
(
x
)
Q(x)
Q(x) 使得
w i E ( α i ) = Q ( α i ) , ∀ i = 0 , ⋯ , n − 1 w_iE(\alpha_i) = Q(\alpha_i),\ \forall\ i=0,\cdots,n-1 wiE(αi)=Q(αi), ∀ i=0,⋯,n−1
这里 E ( x ) E(x) E(x) 称为错误检查多项式(Error locator polynomial)
- 若找不到满足这一性质的多项式 E ( x ) E(x) E(x) 和 Q ( x ) Q(x) Q(x),则说明 w → \overrightarrow w w 超出了纠错范围
- 令 f ~ ( x ) = Q ( x ) / E ( x ) \tilde{f}(x)=Q(x)/E(x) f~(x)=Q(x)/E(x),若 Δ ( f ~ , w ) ≤ e \Delta(\tilde{f},w)\leq e Δ(f~,w)≤e,则 f f f 为所求,否则说明 w → \overrightarrow w w 超出了纠错范围。这里 Δ ( f ~ , w ) \Delta(\tilde{f},w) Δ(f~,w) 为满足 f ~ ( α i ) ≠ w i \tilde{f}(\alpha_i)\neq w_i f~(αi)=wi 的 i i i 的个数
- 计算次数为
e
e
e 的首一多项式
E
(
x
)
E(x)
E(x) 以及次数
e
+
k
−
1
e+k-1
e+k−1 的多项式
Q
(
x
)
Q(x)
Q(x) 使得
-
我们先证明,若 w w w 在纠错范围内,则满足性质的多项式 E ( x ) E(x) E(x) 和 Q ( x ) Q(x) Q(x)。设 f f f 为原始信息,如下定义 E ( x ) E(x) E(x) 和 Q ( x ) Q(x) Q(x)
E ( x ) = ∏ i : f ( α i ) ≠ w i ( x − α i ) ⋅ x e − Δ ( f , w ) Q ( x ) = E ( x ) ⋅ f ( x ) \begin{align*} E(x) &= \prod_{i:f(\alpha_i)\neq w_i}(x-\alpha_i)\cdot x^{e-\Delta(f,w)}\\ Q(x) &= E(x)\cdot f(x) \end{align*} E(x)Q(x)=i:f(αi)=wi∏(x−αi)⋅xe−Δ(f,w)=E(x)⋅f(x)当 f ( α i ) ≠ w i f(\alpha_i)\neq w_i f(αi)=wi 时,
w i E ( α i ) = Q ( α i ) = 0 w_iE(\alpha_i)=Q(\alpha_i)=0 wiE(αi)=Q(αi)=0当 f ( α i ) = w i f(\alpha_i)=w_i f(αi)=wi 时,亦有
Q ( α i ) = E ( α i ) f ( α i ) = w i E ( α i ) Q(\alpha_i)=E(\alpha_i)f(\alpha_i)=w_iE(\alpha_i) Q(αi)=E(αi)f(αi)=wiE(αi) -
另一方面,若存在另一组 Q ′ ( x ) , E ′ ( x ) Q'(x),E'(x) Q′(x),E′(x) 满足同一性质,我们断言
Q ′ ( x ) / E ′ ( x ) = Q ( x ) / E ( x ) Q'(x)/E'(x)=Q(x)/E(x) Q′(x)/E′(x)=Q(x)/E(x)换言之,即证
R ( x ) = Q ( x ) ⋅ E ′ ( x ) − Q ′ ( x ) ⋅ E ( x ) = 0 R(x)=Q(x)\cdot E'(x)-Q'(x)\cdot E(x)=0 R(x)=Q(x)⋅E′(x)−Q′(x)⋅E(x)=0注意到 R ( x ) R(x) R(x) 的次数为
deg ( R ( x ) = e + e + k − 1 ≤ n − k + k − 1 < n \deg(R(x)= e+e+k-1\leq n-k+k-1<n deg(R(x)=e+e+k−1≤n−k+k−1<n然而 R ( x ) R(x) R(x) 存在 n n n 个根,继而 R ( x ) = 0 R(x)=0 R(x)=0
R ( α i ) = Q ( α i ) ⋅ E ′ ( α i ) − Q ′ ( α i ) ⋅ E ( α i ) = w i E ( α i ) E ′ ( α i ) − w i E ′ ( α i ) E ( α i ) = 0 , ∀ i = 0 , ⋯ , n − 1 \begin{align*} R(\alpha_i)&=Q(\alpha_i)\cdot E'(\alpha_i)-Q'(\alpha_i)\cdot E(\alpha_i)\\ &=w_iE(\alpha_i)E'(\alpha_i)-w_iE'(\alpha_i)E(\alpha_i)\\ &=0,\quad \forall\ i=0,\cdots, n-1 \end{align*} R(αi)=Q(αi)⋅E′(αi)−Q′(αi)⋅E(αi)=wiE(αi)E′(αi)−wiE′(αi)E(αi)=0,∀ i=0,⋯,n−1 -
结合两部分讨论,若 w w w 在纠错范围内,满足这一性质的 E ( x ) E(x) E(x) 和 Q ( x ) Q(x) Q(x) 必然存在,且计算 Q ( x ) / E ( x ) Q(x)/E(x) Q(x)/E(x) 立得原始信息 f ( x ) f(x) f(x)。若 w w w 在纠错范围外,我们可以用同样方法尝试计算 f ( x ) f(x) f(x) 并检验 Δ ( f , w ) \Delta(f,w) Δ(f,w)。(或许可以尝试证明不存在满足性质的 E ( x ) , Q ( x ) E(x),Q(x) E(x),Q(x))
-
最后剩下关键问题,如何计算 E ( x ) , Q ( x ) E(x),Q(x) E(x),Q(x)。
- 待定
E
(
x
)
,
Q
(
x
)
E(x),Q(x)
E(x),Q(x) 的系数,根据多项式次数以及
E
(
x
)
E(x)
E(x) 首一性,变量数目为
e + e + k ≤ n − k + k = n e+e+k\leq n-k+k=n e+e+k≤n−k+k=n
代入 α i \alpha_i αi,得到 n n n 个等式构成的线性方程组
Q ( α i ) = w i E ( α i ) , ∀ i = 0 , ⋯ , n − 1 Q(\alpha_i) = w_iE(\alpha_i),\ \forall i=0,\cdots,n-1 Q(αi)=wiE(αi), ∀i=0,⋯,n−1根据前边讨论,该线性方程组无解或存在唯一解。若无解或解出的 f ( x ) = Q ( x ) / E ( x ) f(x)=Q(x)/E(x) f(x)=Q(x)/E(x) 不满足要求,则表明 w w w 在纠错范围外。
- 待定
E
(
x
)
,
Q
(
x
)
E(x),Q(x)
E(x),Q(x) 的系数,根据多项式次数以及
E
(
x
)
E(x)
E(x) 首一性,变量数目为
-
最后,我们分析算法复杂度:
- 解线性方程组: O ( n 3 ) O(n^3) O(n3)
- 多项式除法: O ( n 2 ) O(n^2) O(n2)
- 总计 O ( n 3 ) O(n^3) O(n3)
BCH 码
上节从范德蒙德矩阵出发定义 ReedSolomon 码,同时也提到,当 n = q − 1 n=q-1 n=q−1 时,RS 码具有更好的性质。本节从循环码的角度出发,给出这一情形 RS 码的等价定义。
循环码
-
循环码为特殊的线性码,其满足在轮转下不变,换言之:
( c 1 , ⋯ , c n ) ∈ C ⇒ ( c 2 , ⋯ , c n , c 1 ) ∈ C (c_1,\cdots, c_{n}) \in C \Rightarrow (c_2,\cdots, c_{n},c_1)\in C (c1,⋯,cn)∈C⇒(c2,⋯,cn,c1)∈C -
循环码常用多项式给出,为此,我们回顾域扩张的结论:
- 设 f ( x ) f(x) f(x) 为多项式,则 F [ x ] \mathbb{F}[x] F[x] 关于模 f ( x ) f(x) f(x) 运算作成环,记为 F [ x ] / ( f ( x ) ) \mathbb{F}[x]/(f(x)) F[x]/(f(x))
- 从环论角度, F [ x ] / ( f ( x ) ) \mathbb{F}[x]/(f(x)) F[x]/(f(x)) 为多项式环 F [ x ] \mathbb{F}[x] F[x] 商主理想 ( f ( x ) ) (f(x)) (f(x)) 得到的环
- 设
f
(
x
)
f(x)
f(x) 次数为
k
k
k,则
F
[
x
]
/
(
f
(
x
)
)
\mathbb{F}[x]/(f(x))
F[x]/(f(x)) 的维数为
k
k
k,且容易取一组基元
1 , x , x 2 , ⋯ x k − 1 1, x, x^2,\cdots x^{k-1} 1,x,x2,⋯xk−1 - 商环 F [ x ] / ( f ( x ) ) \mathbb{F}[x]/(f(x)) F[x]/(f(x)) 为域当且仅当 f ( x ) f(x) f(x) 为不可约多项式
-
特别地,记 R n : = F [ x ] / ( x n − 1 ) R_n:=\mathbb{F}[x]/(x^n-1) Rn:=F[x]/(xn−1),其为 n n n 维线性空间,且存在与 F n \mathbb{F}^n Fn 的自然同构
R n → F n ∑ i = 0 n − 1 c i x i ↦ ( c 0 , ⋯ , c n − 1 ) \begin{align*} R_n&\rightarrow \mathbb{F}^n\\ \sum_{i=0}^{n-1}c_ix^i&\mapsto(c_0,\cdots,c_{n-1}) \end{align*} Rni=0∑n−1cixi→Fn↦(c0,⋯,cn−1)
注意:从下文开始,在 R n R_n Rn 下,默认将多项式与向量等同看待。对 R n R_n Rn 上的多项式,左乘 x x x 为轮转运算
x ⋅ ( c 0 + c 1 x + ⋯ + c n − 1 x n − 1 ) = c n − 1 + c 0 x + c 1 2 + ⋯ + c n − 2 x n − 1 x ⋅ ( c 0 , c 1 ⋯ , c n − 1 ) = ( c n − 1 , c 0 , ⋯ , c n − 2 ) \begin{align*} x\cdot (c_0+c_1x+\cdots+c_{n-1}x^{n-1})&=c_{n-1}+c_0x+c_1^2+\cdots+c_{n-2}x^{n-1}\\ x\cdot(c_0,c_1\cdots, c_{n-1})&= (c_{n-1},c_0,\cdots,c_{n-2}) \end{align*} x⋅(c0+c1x+⋯+cn−1xn−1)x⋅(c0,c1⋯,cn−1)=cn−1+c0x+c12+⋯+cn−2xn−1=(cn−1,c0,⋯,cn−2) -
基于上一命题,我们给出 R n R_n Rn 上循环码的等价刻画:
线性子空间 C ⊆ R n C\subseteq R_n C⊆Rn 为循环码当且仅当 R n . C ⊆ C R_n.C\subseteq C Rn.C⊆C,即 C C C 为 R n R_n Rn 的理想
证明:
若 C C C 为循环码,则 x ⋅ C ⊆ C x\cdot C\subseteq C x⋅C⊆C,继而 C C C 为 R n R_n Rn 的理想;反之,由 x ⋅ C ⊆ C x\cdot C\subseteq C x⋅C⊆C 可得 C C C 为循环码 -
设 I I I 为 R n R_n Rn 的理想,由辗转相除法可得
f , g ∈ I ⇒ gcd ( f , g ) = u f + v g ∈ I f,g\in I\Rightarrow \gcd(f,g)=uf+vg\in I f,g∈I⇒gcd(f,g)=uf+vg∈I
因而 R n R_n Rn 的所有理想均为主理想 ( d ( x ) ) (d(x)) (d(x)) 的形式 -
推论:设 C C C 为 R n R_n Rn 的循环码,则 C = ( d ( x ) ) C=(d(x)) C=(d(x)) 其中 d ( x ) ∣ x n − 1 d(x)|x^n-1 d(x)∣xn−1
证明:
由上一命题,令 d ( x ) d(x) d(x) 为 C C C 所有多项式的最大公因子,则有 C = ( d ( x ) ) C=(d(x)) C=(d(x));另一方面, 0 = x n − 1 ∈ C 0=x^n-1\in C 0=xn−1∈C,从而 d ( x ) ∣ x n − 1 d(x)|x^n-1 d(x)∣xn−1 -
通过获取 x n − 1 x^n-1 xn−1 的因子 d ( x ) d(x) d(x),可以得到所有循环码, d ( x ) d(x) d(x) 也称为 C C C 的生成多项式(Generator polynomial)
-
编码:设 C = ( g ( x ) ) C=(g(x)) C=(g(x)) 为 R n R_n Rn 的循环码,则块长为 n n n,信息长为 k = n − deg ( g ) k=n-\deg(g) k=n−deg(g)。具体地,我们通过以下映射给出编码
F k → R n = F n f ( x ) ↦ f ( x ) ⋅ g ( x ) m o d x n − 1 \begin{align*} \mathbb{F}^k&\rightarrow R_n=\mathbb{F}^n\\ f(x)&\mapsto f(x)\cdot g(x)\mod x^n-1 \end{align*} Fkf(x)→Rn=Fn↦f(x)⋅g(x)modxn−1这里 f ( x ) f(x) f(x) 为次数小于 k k k 的多项式,映射右侧利用关系 x n = 1 x^n=1 xn=1 进行降阶
-
设生成元多项式
g ( x ) = a 0 + a 1 x + a 2 x 2 + ⋯ + a n − k x n − k g(x) = a_0+a_1x+a_2x^2+\cdots+a_{n-k}x^{n-k} g(x)=a0+a1x+a2x2+⋯+an−kxn−k
则循环编码的矩阵为
( a 0 a 1 ⋯ a n − k 0 ⋯ 0 0 0 a 0 a 1 ⋯ a n − k ⋯ 0 0 ⋮ ⋱ ⋱ ⋱ ⋱ ⋱ ⋮ ⋮ 0 0 ⋯ a 0 a 1 ⋯ a n − k 0 0 0 ⋯ 0 a 0 a 1 ⋯ a n − k ) t \begin{pmatrix} a_0&a_1&\cdots&a_{n-k}&0&\cdots&0&0\\ 0&a_0&a_1&\cdots&a_{n-k}&\cdots&0&0\\ \vdots&\ddots&\ddots&\ddots&\ddots&\ddots&\vdots&\vdots\\ 0&0&\cdots&a_0&a_1&\cdots&a_{n-k}&0\\ 0&0&\cdots&0&a_0&a_1&\cdots&a_{n-k} \end{pmatrix}^t ⎝ ⎛a00⋮00a1a0⋱00⋯a1⋱⋯⋯an−k⋯⋱a000an−k⋱a1a0⋯⋯⋱⋯a100⋮an−k⋯00⋮0an−k⎠ ⎞t
由循环码特点,该矩阵列向量均在编码空间上,且矩阵秩为 k k k -
检错:设 v ( x ) = c ( x ) + e ( x ) v(x)=c(x)+e(x) v(x)=c(x)+e(x) 其中 c ( x ) c(x) c(x) 为数据码字, e ( x ) e(x) e(x) 为错误信息,则
v ( x ) = e ( x ) m o d g ( x ) v(x) = e(x)\mod g(x) v(x)=e(x)modg(x)
v ( x ) v(x) v(x) 模 g ( x ) g(x) g(x) 的余数多项式称为 syndrome polynomial,通过该多项式可以检查信息是否存在错误
本原循环码
下设 F , K \mathbb{F},\mathbb{K} F,K 为以 F p \mathbb{F}_p Fp 为素域的有限域,且 K \mathbb{K} K 为 F \mathbb{F} F 的扩域。
-
回顾域扩张的相关结论:
- 域扩张 K / F \mathbb{K}/\mathbb{F} K/F 为单扩张
- 设 K = F ( α ) \mathbb{K}=\mathbb{F}(\alpha) K=F(α) ,则 α \alpha α 称为 K \mathbb{K} K 在 F \mathbb{F} F 上的本原元素
- 等价地,本原元素 α \alpha α 为 K ∗ \mathbb{K}^* K∗ 乘法群的生成元
- 对任意 β ∈ K \beta\in\mathbb{K} β∈K,满足 f ( α ) = 0 f(\alpha)=0 f(α)=0 的次数最小的首一多项式 f f f 称为 α \alpha α 的极小多项式
- 易见极小多项式均为不可约多项式( F 上 \mathbb{F}上 F上)
- 设
g
(
x
)
∈
F
[
x
]
g(x)\in\mathbb{F}[x]
g(x)∈F[x],则
g ( x ) = L C M [ g 1 ( x ) , ⋯ , g r ( x ) ] , deg ( g ) = r g(x) =LCM[g_1(x),\cdots,g_r(x)],\deg(g)=r g(x)=LCM[g1(x),⋯,gr(x)],deg(g)=r
其中 g i ( x ) g_i(x) gi(x) 为 g ( x ) g(x) g(x) 第 i i i 个根的极小多项式 - 本原元素 α \alpha α 的极小多项式称为 F \mathbb{F} F 上的本原多项式
- 设 f f f 为 F \mathbb{F} F 上的本原多项式,则 x x x 为 K = F [ x ] / ( f ( x ) ) \mathbb{K}=\mathbb{F}[x]/(f(x)) K=F[x]/(f(x)) 上的本原元素
- 注1:不是所有不可约多项式均为本原多项式,由定义易见,本原多项式 = 单扩张为分裂扩张的多项式
- 注2:环论上的本原多项式定义为系数互素的多项式(与域论版本无关,主要用与Gauss 引理)
-
下设 q = p m , n = q − 1 q=p^m, n=q-1 q=pm,n=q−1。设 { β i } i = 1 q − 1 \{\beta_i\}_{i=1}^{q-1} {βi}i=1q−1 为域 F q \mathbb{F}_{q} Fq 上的非零元,则
x n − 1 = ∏ i = 1 q − 1 ( x − β i ) = ∏ β ∈ F q ∗ ( x − β ) \begin{align*} x^{n}-1 = \prod_{i=1}^{q-1} (x-\beta_i) = \prod_{\beta\in\mathbb{F}_q^*} (x-\beta) \end{align*} xn−1=i=1∏q−1(x−βi)=β∈Fq∗∏(x−β)- 注意到左侧为 n n n 次多项式,而根据群阶 β i \beta_i βi 为该多项式的 n n n 个根,因而等式成立
- n = q − 1 n=q-1 n=q−1 称为 F p \mathbb{F}_p Fp 上的本原块长(Primitive Block Length)
- 将以 n n n 为块长的循环码称为本原循环码(Primitive Cyclic Code)
-
考虑 R n = F p [ x ] / ( x n − 1 ) R_n = \mathbb{F}_p[x]/(x^n-1) Rn=Fp[x]/(xn−1) 上的循环码,根据上一节讨论,循环码由 x n − 1 x^n-1 xn−1 的因子给出,设
x n − 1 = f 1 ( x ) ⋯ f r ( x ) x^n-1=f_1(x)\cdots f_r(x) xn−1=f1(x)⋯fr(x)
其中 f i ( x ) f_i(x) fi(x) 为不可约多项式,由分解可得, R n R_n Rn 的因子有 2 r 2^r 2r 个 -
下边分析不可约因子 f i ( x ) f_i(x) fi(x) 都有哪些
-
根据前一式子, F p m \mathbb{F}_{p^m} Fpm 的所有非零元构成 x n − 1 x^n-1 xn−1 的所有根
-
因而 f i ( x ) f_i(x) fi(x) 均为某些根的极小多项式,我们将属于同一 f i ( x ) f_i(x) fi(x) 的根称为相互共轭的
-
设 β ∈ F q ∗ \beta\in\mathbb{F}_q^* β∈Fq∗,则与 β \beta β 共轭的元素为
{ β , β p , β p 2 , ⋯ , β p s − 1 } \{\beta, \beta^{p},\beta^{p^2},\cdots,\beta^{p^{s-1}}\} {β,βp,βp2,⋯,βps−1}
其中 s s s 为使得 β p s = β \beta^{p^{s}}=\beta βps=β 成立的最小正整数
证明:
有限域为完备域,因而有域同构
F q → F q x ↦ x q \begin{align*} \mathbb{F}_{q} &\rightarrow \mathbb{F}_{q}\\ x&\mapsto x^q \end{align*} Fqx→Fq↦xq
该映射保持素域 F p \mathbb{F}_p Fp 不变,但将元素 β \beta β 变为 β p \beta^p βp,因而 β \beta β 与 β p \beta^p βp 落在同一极小多项式上;另一方面,可以考虑用根与系数关系证明系数落在 F p \mathbb{F}_p Fp 上 -
设 α \alpha α 为域扩张 F q / F p \mathbb{F}_q/\mathbb{F}_p Fq/Fp 的本原元素,此时设 β = α t \beta=\alpha^t β=αt,共轭集为
{ α t , α t ⋅ p , α t ⋅ p 2 , ⋯ , α t ⋅ p s − 1 } \begin{align*} \{\alpha^t, \alpha^{t\cdot p},\alpha^{t\cdot p^2},\cdots,\alpha^{t\cdot p^{s-1}}\} \end{align*} {αt,αt⋅p,αt⋅p2,⋯,αt⋅ps−1}
根据循环群的性质, t ⋅ p s ≡ 1 m o d n t\cdot p^s\equiv 1\mod n t⋅ps≡1modn,换言之,可以通过计算 p p p 在循环群 Z / ( n t Z ) \mathbb{Z}/(\frac nt\mathbb{Z}) Z/(tnZ) 中的阶数确定 α t \alpha^t αt 极小多项式的次数
-
-
举个例子,考虑 F 2 3 \mathbb{F}_{2^3} F23
x 7 − 1 = ( x − 1 ) ⋅ ( x 3 + x + 1 ) ⋅ ( x 3 + x 2 + 1 ) = ( x − 1 ) ⋅ ( x − α ) ( x − α 2 ) ( x − α 4 ) ⋅ ( x − α 3 ) ( x − α 6 ) ( x − α 12 ) \begin{align*} x^7-1 &= (x-1)\cdot (x^3+x+1)\cdot(x^3+x^2+1)\\ &=(x-1)\cdot (x-\alpha)(x-\alpha^2)(x-\alpha^4)\cdot (x-\alpha^3)(x-\alpha^6)(x-\alpha^{12}) \end{align*} x7−1=(x−1)⋅(x3+x+1)⋅(x3+x2+1)=(x−1)⋅(x−α)(x−α2)(x−α4)⋅(x−α3)(x−α6)(x−α12)
下边三部分与三个不可约多项式对应,其中 α 12 = α 5 \alpha^{12}=\alpha^5 α12=α5 -
设 R n R_n Rn 的循环码 C C C 以 g ( x ) g(x) g(x) 为生成元多项式。设 c ( x ) = v ( x ) + e ( x ) ∈ F p c(x)=v(x)+e(x)\in\mathbb{F}_p c(x)=v(x)+e(x)∈Fp,其中 v ( x ) v(x) v(x) 为数据编码, e ( x ) e(x) e(x) 为噪声,设 g ( x ) g(x) g(x) 的 r r r 个根分别为 ( g 1 , g 2 , ⋯ , g r ) (g_1, g_2,\cdots,g_r) (g1,g2,⋯,gr),则
v ( g i ) = c ( g i ) + e ( g i ) = e ( g i ) , ∀ i ∈ { 1 , … , r } v(g_i) = c(g_i)+e(g_i)= e(g_i), \forall\ i\in\{1,\dots,r\} v(gi)=c(gi)+e(gi)=e(gi),∀ i∈{1,…,r}
由此得到 r r r 个等式,我们希望通过这些等式求解错误信息 e ( x ) e(x) e(x)
BCH 码
一般地,我们通过编码距离计算纠错能力,而 BCH 码相反,我们根据纠错位来设计编码。
相关内容参考笔记稿(后续整理博客)
相关链接
YouTube 视频:编码理论
Wiki 百科:Reed Solomon code
Wiki 百科:BCH Code
油管视频-Mary Wootters:Algebraic Coding Theory
油管视频:Information Theory, Coding and Cryptography