二维码学习笔记(番外) | 编码理论(下)

二维码笔记系列(原文地址):

唠唠闲话

书接上回(上篇跳转地址)。CSDN 有字数限制,只能拆分了。。。

编码效率

概述

本节讨论编码效率问题,特别地,博客只讨论线性分组码的情形。

编码过程的这几个步骤涉及计算:

  • 信息编码,即 F q k → F q n \mathbb{F}_q^k\rightarrow\mathbb{F}_q^n FqkFqn
  • 信息解码,即 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} GFn×k,奇偶检验矩阵为 H ∈ F k × n H\in \mathbb{F}^{k\times n} HFk×n,设 x = ( x 1 , ⋯   , x k ) t ∈ C x=(x_1,\cdots,x_k)^t\in C x=(x1,,xk)tC 为信息。

  1. 编码:用矩阵 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:FqkxFqnGx=x

  2. 解码:由线性代数知识易得矩阵 G ′ ∈ F k × n G'\in \mathbb{F}^{k\times n} GFk×n 使得 G ′ G G'G GG k k k 阶单位矩阵。左乘矩阵 G ′ G' G 即从 x ′ x' x 中解码信息 x x x

  3. 检错:根据 ker ⁡ ( H ) = I m ( C ) \ker(H)=Im(C) ker(H)=Im(C),只需判断 H x ′ Hx' Hx 是否为 0。

  4. 补缺:不妨设 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= x1xe1xexn = xexn
    反解得到原始数据 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= xexn ,x=G11 xexn
    e < d e<d e<d 时,左侧方程组必有解,而 RS 码中 G 1 G_1 G1 还是可逆的,此时直接左成逆矩阵还原数据。

  5. 求距离:回顾介绍了编码距离 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),也即不存在针对一般线性码的高效算法

  6. 纠错:假设码字 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)2d1

    线性方程组的解构成了一个仿射空间(线性空间+平移向量),问题等同于求该空间中权重最小的向量。然而这个问题的求解仍是困难的,哪怕对 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,,αn1)Fn1,且 α i \alpha_i αi 互不相等

  1. 数域可以分两大类,有理数域 Q \mathbb{Q} Q,实数域 R \mathbb{R} R 和复数域 C \mathbb{C} C 等属于特征 0 域;有限域 F p F_p Fp 及其扩张,属于特征 p 域,线性代数理论对两类数域均适用。

  2. 称数域 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 q1 阶循环群
    • 特别地, 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 xr1 的分裂域。当 r ≠ 1 r\neq 1 r=1时, F \mathbb{F} F 结构复杂,而不是简单的模 q q q 结构。
  3. 性质 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 上有两个根
    • 零多项式的次数一般假定为无穷
  4. 如下定义范德蒙德矩阵 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)= 111α0α1αn1α02α12αn12α0k1α1k1αn1k1
    k ≤ n k\leq n kn 时,由范德蒙德行列式易证 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*} 111α0α1αk1α02α12αk12α0k1α1k1αk1k1 =i>j(αiαj)=0

  5. 范德蒙德矩阵与多项式有紧密联系:左乘运算可转化为多项式运算
    ( 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*} 111α0α1αn1α02α12αn12α0k1α1k1αn1k1 a0a1ak1 = i=0k1aiα0ii=0k1aiα1ii=0k1aiαn1i = f(α0)f(α1)f(αn1)

    其中 f ( x ) = ∑ i = 0 k − 1 a i x i f(x)=\sum\limits_{i=0}^{k-1}a_ix^i f(x)=i=0k1aixi,从这一性质也能看出 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=Of(αi)=0,  0inf=0(deg(f)<=n)X=(a0,,ak)t=O

    特别地,当 k = n k=n k=n 时, V ( α , k ) V(\alpha,k) V(α,k) 为可逆矩阵

  6. 推论:对任意 { y i } i = 0 k − 1 ⊆ F q n \{y_i\}_{i=0}^{k-1}\subseteq\mathbb{F}_q^n {yi}i=0k1Fqn,存在唯一次数不大于 k − 1 k-1 k1 的多项式 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=0k1 由以下线性方程组得到
    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) a0a1ak1 = y0y1yn1

  7. 推论2:有限域上,任意映射 F q → F \mathbb{F}_q\rightarrow\mathbb{F} FqF 可写为次数不超过 q − 1 q-1 q1 的多项式。此外,利用性质 x q = x x^q=x xq=x,任意多项式可以转化为次数不超过 q − 1 q-1 q1 的多项式。

这个现象很有趣:有限域上的函数没有可积可微的概念,所有映射都是多项式!且函数集是有限集。

基本概念

Reed Solomon 码是满足 Singleton Bound 且具有高效算法的一类编码。(以下是 RS 码的 Original View)

下设 q ≥ n ≥ k q\geq n\geq k qnk α = ( α 0 , ⋯   , α n − 1 ) ∈ F q n \alpha=(\alpha_0,\cdots,\alpha_{n-1})\in\mathbb{F}_q^n α=(α0,,αn1)Fqn 且其中元素互不相同

  1. 如下定义 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(αn1))f(x)Fq[x], deg(f)k1}

  2. 写成线性变换形式
    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 a0an1 Fq[x]f(x)=i=0k1aixiFqn f(α0)f(αn1)

    根据上一节讨论,其生成元矩阵为 V ( α , k ) V(\alpha, k) V(α,k)

  3. 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)k1 f ( α i ) f(\alpha_i) f(αi) 中至多有 k − 1 k-1 k1 项为 0,因而 d ≥ n − ( k − 1 ) d\geq n-(k-1) dn(k1);另一方面,取 f ( x ) = ( x − α 0 ) ⋯ ( x − α k − 1 ) f(x)=(x-\alpha_0)\cdots(x-\alpha_{k-1}) f(x)=(xα0)(xαk1) 得到权重为 n − k + 1 n-k+1 nk+1 的列向量,证毕。

  4. 将满足 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=q1

  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*} aFqad=0,  0<d<q1

    证明:设 γ \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*} aFqad=aFad=i=1q1γid=i=1q1(γd)i=1γd1(γd)q1=0

    根据循环群性质, a q − 1 ≡ 1 , ∀ a ≠ 0 a^{q-1}\equiv 1,\forall a\neq 0 aq11,a=0,继而有 ( γ d ) q ≡ γ d (\gamma^d)^q\equiv \gamma^d (γd)qγd

  2. α = ( γ 1 , γ 2 ⋯   , γ p − 1 ) \alpha=(\gamma^1,\gamma^2\cdots,\gamma^{p-1}) α=(γ1,γ2,γp1) 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)= 1111γ1(γ2)1(γp2)11γ2(γ2)2(γp2)21γk1(γ2)k1(γp2)k11
    其奇偶检验矩阵由下式确定

    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,,cq1)c(γj)=0,∀1jnk}=l=1q1clxl=l=1q1f(γ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=1p1f(γl)(γj)l=l=1p1(i=0k1ai(γl)i)(γj)l=i=0k1ai(l=1p1(γ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 1i+jnk+in1q1
    c ( γ j ) = 0 c(\gamma^j)=0 c(γj)=0 的必要性通过比较维数立证。

  3. 推论: R S q ( ( γ 1 , ⋯   , γ q − 1 ) , n , k ) RS_q((\gamma^1,\cdots,\gamma^{q-1}),n,k) RSq((γ1,,γq1),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,,γq1),nk)t= 111γ(γ2)1(γnk)1γ2(γ2)2(γnk)2γn1(γ2)n1(γnk)n1

  4. 推广的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),,λn1f(αn1)),fFq[x],deg(f)k1}

    其中 α ∈ ( 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=MV(α,k), diag(M)=(λ0,,λn1)

    一般地,可以推导 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 q1 时,也可以将 RS 码视为多项式到多项式的映射,即 f ( x ) → c ( x ) f(x) \rightarrow c(x) f(x)c(x)

纠错算法

本节介绍 Reed Solomon 的 Berlekamp–Welch 算法。

  1. 我们先表述纠错问题:

    • R S q ( α , n , k ) RS_q(\alpha,n,k) RSq(α,n,k) 为 RS 码,编码距离 d = n − k + 1 d=n-k+1 d=nk+1,纠错能力 e ≤ ⌊ d − 1 2 ⌋ = ⌊ n − k 2 ⌋ e\leq\lfloor\frac{d-1}{2}\rfloor=\lfloor\frac{n-k}{2}\rfloor e2d1=2nk
    • w → = ( w 0 , ⋯   , w n − 1 ) ∈ F q n \overrightarrow{w}=(w_0,\cdots,w_{n-1})\in\mathbb{F}_q^n w =(w0,,wn1)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)k1 且至多存在 e e e 个数值 α i \alpha_i αi,使得 f ( α i ) ≠ w i f(\alpha_i)\neq w_i f(αi)=wi
  2. 我们表述算法的过程,再论证细节:

    • 计算次数为 e e e 的首一多项式 E ( x ) E(x) E(x) 以及次数 e + k − 1 e+k-1 e+k1 的多项式 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,,n1

    这里 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 的个数
  3. 我们先证明,若 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)

  4. 另一方面,若存在另一组 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+k1nk+k1<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,,n1

  5. 结合两部分讨论,若 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)

  6. 最后剩下关键问题,如何计算 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+knk+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,,n1

    根据前边讨论,该线性方程组无解或存在唯一解。若无解或解出的 f ( x ) = Q ( x ) / E ( x ) f(x)=Q(x)/E(x) f(x)=Q(x)/E(x) 不满足要求,则表明 w w w 在纠错范围外。

  7. 最后,我们分析算法复杂度:

    • 解线性方程组: 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=q1 时,RS 码具有更好的性质。本节从循环码的角度出发,给出这一情形 RS 码的等价定义。

循环码

  1. 循环码为特殊的线性码,其满足在轮转下不变,换言之:
    ( 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

  2. 循环码常用多项式给出,为此,我们回顾域扩张的结论:

    • 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,xk1
    • 商环 F [ x ] / ( f ( x ) ) \mathbb{F}[x]/(f(x)) F[x]/(f(x)) 为域当且仅当 f ( x ) f(x) f(x) 为不可约多项式
  3. 特别地,记 R n : = F [ x ] / ( x n − 1 ) R_n:=\mathbb{F}[x]/(x^n-1) Rn:=F[x]/(xn1),其为 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=0n1cixiFn(c0,,cn1)
    注意:从下文开始,在 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++cn1xn1)x(c0,c1,cn1)=cn1+c0x+c12++cn2xn1=(cn1,c0,,cn2)

  4. 基于上一命题,我们给出 R n R_n Rn 上循环码的等价刻画:
    线性子空间 C ⊆ R n C\subseteq R_n CRn 为循环码当且仅当 R n . C ⊆ C R_n.C\subseteq C Rn.CC,即 C C C R n R_n Rn 的理想
    证明:
    C C C 为循环码,则 x ⋅ C ⊆ C x\cdot C\subseteq C xCC,继而 C C C R n R_n Rn 的理想;反之,由 x ⋅ C ⊆ C x\cdot C\subseteq C xCC 可得 C C C 为循环码

  5. 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,gIgcd(f,g)=uf+vgI
    因而 R n R_n Rn 的所有理想均为主理想 ( d ( x ) ) (d(x)) (d(x)) 的形式

  6. 推论:设 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)xn1
    证明:
    由上一命题,令 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=xn1C,从而 d ( x ) ∣ x n − 1 d(x)|x^n-1 d(x)xn1

  7. 通过获取 x n − 1 x^n-1 xn1 的因子 d ( x ) d(x) d(x),可以得到所有循环码, d ( x ) d(x) d(x) 也称为 C C C生成多项式(Generator polynomial)

  8. 编码:设 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=ndeg(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=Fnf(x)g(x)modxn1

    这里 f ( x ) f(x) f(x) 为次数小于 k k k 的多项式,映射右侧利用关系 x n = 1 x^n=1 xn=1 进行降阶

  9. 设生成元多项式
    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++ankxnk
    则循环编码的矩阵为
    ( 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 a0000a1a000a1anka000anka1a0a100ank000ank t
    由循环码特点,该矩阵列向量均在编码空间上,且矩阵秩为 k k k

  10. 检错:设 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 的扩域。

  1. 回顾域扩张的相关结论:

    • 域扩张 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 引理)
  2. 下设 q = p m , n = q − 1 q=p^m, n=q-1 q=pm,n=q1。设 { β i } i = 1 q − 1 \{\beta_i\}_{i=1}^{q-1} {βi}i=1q1 为域 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*} xn1=i=1q1(xβi)=βFq(xβ)

    • 注意到左侧为 n n n 次多项式,而根据群阶 β i \beta_i βi 为该多项式的 n n n 个根,因而等式成立
    • n = q − 1 n=q-1 n=q1 称为 F p \mathbb{F}_p Fp 上的本原块长(Primitive Block Length)
    • 将以 n n n 为块长的循环码称为本原循环码(Primitive Cyclic Code)
  3. 考虑 R n = F p [ x ] / ( x n − 1 ) R_n = \mathbb{F}_p[x]/(x^n-1) Rn=Fp[x]/(xn1) 上的循环码,根据上一节讨论,循环码由 x n − 1 x^n-1 xn1 的因子给出,设
    x n − 1 = f 1 ( x ) ⋯ f r ( x ) x^n-1=f_1(x)\cdots f_r(x) xn1=f1(x)fr(x)
    其中 f i ( x ) f_i(x) fi(x) 为不可约多项式,由分解可得, R n R_n Rn 的因子有 2 r 2^r 2r

  4. 下边分析不可约因子 f i ( x ) f_i(x) fi(x) 都有哪些

    • 根据前一式子, F p m \mathbb{F}_{p^m} Fpm 的所有非零元构成 x n − 1 x^n-1 xn1 的所有根

    • 因而 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,,βps1}
      其中 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*} FqxFqxq
      该映射保持素域 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,αtp,αtp2,,αtps1}
      根据循环群的性质, t ⋅ p s ≡ 1 m o d    n t\cdot p^s\equiv 1\mod n tps1modn,换言之,可以通过计算 p p p 在循环群 Z / ( n t Z ) \mathbb{Z}/(\frac nt\mathbb{Z}) Z/(tnZ) 中的阶数确定 α t \alpha^t αt 极小多项式的次数

  5. 举个例子,考虑 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*} x71=(x1)(x3+x+1)(x3+x2+1)=(x1)(xα)(xα2)(xα4)(xα3)(xα6)(xα12)
    下边三部分与三个不可约多项式对应,其中 α 12 = α 5 \alpha^{12}=\alpha^5 α12=α5

  6. 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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

致宏Rex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值