1. 码的定义
定义一 :设 A A A 是一个有限集合,称之为字母表 。A A A 中元素构成的有限序列称为字 或串 。一个字中的元素的个数称为字长。
定义二 :设 A A A 是一个字母表。A A A 上所有字的集合记为 A ∗ A^* A ∗ 。A ∗ A^* A ∗ 中包含一个长度的零的特殊字,称之为空字 ,记为 ε \varepsilon ε 。对 A ∗ A^* A ∗ 中的任意两个字 x x x 和 y y y ,将 y y y 排在 x x x 后面得到 x y xy x y ,x y xy x y 显然还是 A ∗ A^* A ∗ 中的一个字,即运算即为字的拼接运算 。显然,A ∗ A^* A ∗ 对拼接运算为带幺半群,单位元为空字 ε \varepsilon ε 。
定义三 :设 C C C 是 A ∗ A^* A ∗ 的一个子集。如果对任意 c 1 , c 2 , ⋯ , c m , c 1 ′ , ⋯ , c n ′ ∈ C c_1, c_2, \cdots, c_m, c_1^{'}, \cdots, c_n^{'} \in C c 1 , c 2 , ⋯ , c m , c 1 ′ , ⋯ , c n ′ ∈ C ,当
c 1 c 2 ⋯ c m = c 1 ′ c 2 ′ ⋯ c n ′ c_1 c_2 \cdots c_m = c_1^{'} c_2^{'} \cdots c_n^{'}
c 1 c 2 ⋯ c m = c 1 ′ c 2 ′ ⋯ c n ′
时,一定有 m = n m = n m = n ,并且 c i = c i ′ , 1 ≤ i ≤ n c_i = c_i^{'}, 1 \leq i \leq n c i = c i ′ , 1 ≤ i ≤ n ,则称 C C C 为字母表 A A A 上的一个码 。码 C C C 中的字称为码字 。如果码 C C C 中的码字长度都相同,则称 C C C 为定长码 ;否则称其为变长码 。如果 ∣ A ∣ = n |A| = n ∣ A ∣ = n ,则称 C C C 为 n n n 元码。
在编码理论中,字母表 A A A 一般取为有限域 G F ( q ) GF(q) GF ( q ) 。设 V ( n , q ) = G F ( q ) n V(n, q) = GF(q)^n V ( n , q ) = GF ( q ) n 表示 G F ( q ) GF(q) GF ( q ) 上的 n n n 维向量空间。V ( n , q ) V(n, q) V ( n , q ) 中的向量 ( x 1 , x 2 , ⋯ , x n ) (x_1, x_2, \cdots, x_n) ( x 1 , x 2 , ⋯ , x n ) 通常记为 x 1 , x 2 , ⋯ , x n x_1, x_2, \cdots, x_n x 1 , x 2 , ⋯ , x n 。
定义四 :V ( n , q ) V(n, q) V ( n , q ) 中的任意一个非空子集 C C C 称为一个 q q q 元分组码 。C C C 中的每一个向量称为一个码字。如果 ∣ C ∣ = M |C| = M ∣ C ∣ = M ,则称 C C C 是一个 q q q 元 ( n , M ) (n, M) ( n , M ) 码,其中 n n n 表示码长,M M M 表示码字个数。
分组码是定长码,一个 q q q 元 ( n , M ) (n, M) ( n , M ) 码的所有码字长度都是 n n n 。编码理论中主要讨论的就是分组码。
2. 码率的定义
一个 q q q 元 ( n , M ) (n, M) ( n , M ) 码有 M M M 个码字,可以用于传送 M M M 个不同信息中的任意一个。然而,要传送 M M M 个信息中的任意一个,码长只需要 log q M \log_q M log q M 就足够了。因此,在一个 q q q 元 ( n , M ) (n, M) ( n , M ) 码中,每个码字中的信息位个数为 log q M \log_q M log q M ,其余的 n − log q M n - \log_q M n − log q M 位是冗余位,用于在信道接收端纠正信息在信道传输过程中发生的错误。一个 q q q 元 ( n , M ) (n, M) ( n , M ) 码使用 n n n 个字符来传送 log q M \log_q M log q M 个信息字符,显然一个好码应该具有较大的码率。
3. 汉明距离
定义六 :设 x , y ∈ V ( n , q ) \boldsymbol{x}, \boldsymbol{y} \in V(n, q) x , y ∈ V ( n , q ) 。x \boldsymbol{x} x 和 y \boldsymbol{y} y 的汉明距离 d ( x , y ) d(\boldsymbol{x}, \boldsymbol{y}) d ( x , y ) 定义为 x \boldsymbol{x} x 和 y \boldsymbol{y} y 中不同分量的个数。设 x = x 1 x 2 ⋯ x n \boldsymbol{x} = x_1 x_2 \cdots x_n x = x 1 x 2 ⋯ x n ,y = y 1 y 2 ⋯ y n \boldsymbol{y} = y_1 y_2 \cdots y_n y = y 1 y 2 ⋯ y n 。对于 i = 1 , 2 , ⋯ , n i = 1, 2, \cdots, n i = 1 , 2 , ⋯ , n ,定义
d ( x i , y i ) = { 0 , if x i = y i 1 , if x i ≠ y i d(x_i, y_i) = \begin{cases}
0, \text{ if } x_i = y_i \\
1, \text{ if } x_i \neq y_i \\
\end{cases}
d ( x i , y i ) = { 0 , if x i = y i 1 , if x i = y i
显然
d ( x , y ) = ∑ i = 1 n d ( x i , y i ) d(\boldsymbol{x}, \boldsymbol{y}) = \sum_{i=1}^n d(x_i, y_i)
d ( x , y ) = i = 1 ∑ n d ( x i , y i )
性质
显然,汉明距离作为一个距离度量,满足距离度量的三大性质:非负性、对称性以及三角不等式。
非负性:d ( x , y ) ≥ 0 d(\boldsymbol{x}, \boldsymbol{y}) \geq 0 d ( x , y ) ≥ 0 ,且 d ( x , y ) = 0 d(\boldsymbol{x}, \boldsymbol{y}) = 0 d ( x , y ) = 0 当且仅当 x = y \boldsymbol{x} = \boldsymbol{y} x = y ;
对称性:d ( x , y ) = d ( y , x ) d(\boldsymbol{x}, \boldsymbol{y}) = d(\boldsymbol{y}, \boldsymbol{x}) d ( x , y ) = d ( y , x ) ;
三角不等式:d ( x , y ) ≤ d ( x , z ) + d ( y , z ) d(\boldsymbol{x}, \boldsymbol{y}) \leq d(\boldsymbol{x}, \boldsymbol{z}) + d(\boldsymbol{y}, \boldsymbol{z}) d ( x , y ) ≤ d ( x , z ) + d ( y , z ) 。
定义七 :设 C C C 是一个 ( n , M ) (n, M) ( n , M ) 码。码 C C C 的最小距离 定义为 C C C 中的任意两个不同的码字的汉明距离的最小值,记为 d ( C ) d(C) d ( C ) ,即
d ( C ) = min { d ( x , y ) ∣ x , y ∈ C , x ≠ y } d(C) = \min\{d(\boldsymbol{x}, \boldsymbol{y}) | \boldsymbol{x}, \boldsymbol{y} \in C, \boldsymbol{x} \neq \boldsymbol{y}\}
d ( C ) = min { d ( x , y ) ∣ x , y ∈ C , x = y }
定义八 :设 x ∈ V ( n , q ) \boldsymbol{x} \in V(n, q) x ∈ V ( n , q ) 。x \boldsymbol{x} x 中非零分量的个数称为汉明重量 ,记为 W ( x ) W(\boldsymbol{x}) W ( x ) 。设 x = x 1 x 2 ⋯ x n \boldsymbol{x} = x_1 x_2 \cdots x _n x = x 1 x 2 ⋯ x n ,对于 i = 1 , 2 , ⋯ , n i = 1, 2, \cdots, n i = 1 , 2 , ⋯ , n ,定义
W ( x i ) = { 0 , if x i = 0 1 , if x i ≠ 0 W(x_i) = \begin{cases}
0, \text{ if } x_i = 0 \\
1, \text{ if } x_i \neq 0 \\
\end{cases}
W ( x i ) = { 0 , if x i = 0 1 , if x i = 0
显然
W ( x ) = ∑ i = 1 n W ( x i ) W(\boldsymbol{x}) = \sum_{i=1}^n W(x_i)
W ( x ) = i = 1 ∑ n W ( x i )
性质
对任意 x , y ∈ V ( n , q ) \boldsymbol{x}, \boldsymbol{y} \in V(n, q) x , y ∈ V ( n , q ) ,d ( x , y ) = W ( x − y ) d(\boldsymbol{x}, \boldsymbol{y}) = W(\boldsymbol{x} - \boldsymbol{y}) d ( x , y ) = W ( x − y ) 。特别地,对任意 u , v ∈ V ( n , 2 ) \boldsymbol{u}, \boldsymbol{v} \in V(n, 2) u , v ∈ V ( n , 2 ) ,d ( u , v ) = W ( u + v ) d(\boldsymbol{u}, \boldsymbol{v}) = W(\boldsymbol{u} + \boldsymbol{v}) d ( u , v ) = W ( u + v ) 。
对任意 x ∈ V ( n , q ) \boldsymbol{x} \in V(n, q) x ∈ V ( n , q ) ,W ( x ) ≥ 0 W(\boldsymbol{x}) \geq 0 W ( x ) ≥ 0 。W ( x ) = 0 W(\boldsymbol{x}) = 0 W ( x ) = 0 的充分必要条件为 x = 0 \boldsymbol{x} = \boldsymbol{0} x = 0 。
对任意 x , y ∈ V ( n , q ) \boldsymbol{x}, \boldsymbol{y} \in V(n, q) x , y ∈ V ( n , q ) ,W ( x + y ) ≤ W ( x ) + W ( y ) W(\boldsymbol{x} + \boldsymbol{y}) \leq W(\boldsymbol{x}) + W(\boldsymbol{y}) W ( x + y ) ≤ W ( x ) + W ( y ) 。
定义九 :码 C ⊆ V ( n , q ) C \subseteq V(n, q) C ⊆ V ( n , q ) 的最小重量 定义为 C C C 中所有非零码字的最小重量,记为 W ( C ) W(C) W ( C ) ,即
W ( C ) = min { W ( x ) ∣ x ∈ C , x ≠ 0 } W(C) = \min\{W(\boldsymbol{x}) | \boldsymbol{x} \in C, \boldsymbol{x} \neq \boldsymbol{0}\}
W ( C ) = min { W ( x ) ∣ x ∈ C , x = 0 }
4. 最近邻译码
定义十 :设 x \boldsymbol{x} x 是一个码字,经过信道传输后,在接收端我们收到的向量为 y \boldsymbol{y} y 。由于噪声的干扰,可能 y ≠ x \boldsymbol{y} \neq \boldsymbol{x} y = x ,并且 y \boldsymbol{y} y 可能不是一个码字。将 y \boldsymbol{y} y 译为与 y \boldsymbol{y} y 汉明距离最小的码字 x ′ \boldsymbol{x}^{'} x ′ 是合理的。这种译码策略称为最近邻译码 。
定义十一 :满足下述两个条件的信道称为 q q q 元对称信道:
每个字符在传输过程中发生错误的概率相同,都为 p p p ;
如果一个字符在传输过程中发生了错误,则它错为其它 q − 1 q-1 q − 1 个字符中的任意一个的概率都是相同的。
一般地,对于 q q q 元对称信道而言,最近邻译码就是最大似然译码。
5. 检错和纠错
码的最小距离是刻画码的检错和纠错性能的一个重要参数。一般用 ( n , M , d ) (n, M, d) ( n , M , d ) 表示码长为 n n n ,码字个数为 M M M ,最小距离为 d d d 的一个码。
定理一 :码 C C C 至多可以检查 t t t 个错误的充分必要条件为 d ( C ) = t + 1 d(C) = t+1 d ( C ) = t + 1 。
定理二 :码 C C C 至多可以纠正 t t t 个错误的充分必要条件为 d ( C ) = 2 t + 1 d(C) = 2t + 1 d ( C ) = 2 t + 1 或 2 t + 2 2t + 2 2 t + 2 。
因此,设 C C C 是一个码,其最小距离为 d d d ,则码 C C C 至多可以检查 d − 1 d - 1 d − 1 个错误,至多纠正 ⌊ d − 1 2 ⌋ \lfloor \frac{d-1}{2} \rfloor ⌊ 2 d − 1 ⌋ 个错误。
6. 编码理论的基本问题
一个好的 q q q 元 ( n , M , d ) (n, M, d) ( n , M , d ) 码应具有如下性质:
为了更快的发送信息,码长 n n n 应该小;
为了更多的发送信息,码字个数 M M M 应该大;
为了能纠正更多的错误,最小距离 d d d 应该大。
7. 完备码
定义十二 :对任意 x ∈ V ( n , q ) \boldsymbol{x} \in V(n, q) x ∈ V ( n , q ) 以及整数 r ≥ 0 r \geq 0 r ≥ 0 ,以 x \boldsymbol{x} x 为中心 r r r 为半径的球记为 S q ( x , r ) S_q(\boldsymbol{x}, r) S q ( x , r ) 定义为
S q ( x , r ) = { y ∈ V ( n , q ) ∣ d ( x , y ) ≤ r } S_q(\boldsymbol{x}, r) = \{\boldsymbol{y} \in V(n, q) | d(\boldsymbol{x}, \boldsymbol{y}) \leq r\}
S q ( x , r ) = { y ∈ V ( n , q ) ∣ d ( x , y ) ≤ r }
定理三 :对任意 x ∈ V ( n , q ) \boldsymbol{x} \in V(n, q) x ∈ V ( n , q ) ,球 S q ( x , r ) S_q(\boldsymbol{x}, r) S q ( x , r ) 中包含的向量个数为
( n 0 ) + ( n 1 ) ( q − 1 ) + ⋯ + ( n r ) ( q − 1 ) r \binom{n}{0} + \binom{n}{1}(q - 1) + \cdots + \binom{n}{r} (q - 1)^r
( 0 n ) + ( 1 n ) ( q − 1 ) + ⋯ + ( r n ) ( q − 1 ) r
定理四(汉明界) :对任意一个 q q q 元 ( n , M , 2 t + 1 ) (n, M, 2t+1) ( n , M , 2 t + 1 ) 码 C C C ,都满足
M { ( n 0 ) + ( n 1 ) ( q − 1 ) + ⋯ + ( n t ) ( q − 1 ) t } ≤ q n M\left\{ \binom{n}{0} + \binom{n}{1}(q - 1) + \cdots + \binom{n}{t} (q - 1)^t \right\} \leq q^n
M { ( 0 n ) + ( 1 n ) ( q − 1 ) + ⋯ + ( t n ) ( q − 1 ) t } ≤ q n
即
M ≤ q n ∑ i = 0 t ( n i ) ( q − 1 ) i M \leq \frac{q^n}{\sum_{i=0}^t \binom{n}{i} (q-1)^i}
M ≤ ∑ i = 0 t ( i n ) ( q − 1 ) i q n
定义十三 :设 C C C 是一个 q q q 元 ( n , M , 2 t + 1 ) (n, M, 2t+1) ( n , M , 2 t + 1 ) 码,如果汉明界等号成立,即
M { ( n 0 ) + ( n 1 ) ( q − 1 ) + ⋯ + ( n t ) ( q − 1 ) t } = q n M\left\{ \binom{n}{0} + \binom{n}{1}(q - 1) + \cdots + \binom{n}{t} (q - 1)^t \right\} = q^n
M { ( 0 n ) + ( 1 n ) ( q − 1 ) + ⋯ + ( t n ) ( q − 1 ) t } = q n
则称 C C C 为完备码 。
8. 系统码
在代数编码理论中,通常取 M = q k M = q^k M = q k 。一个 q q q 元 ( n , q k ) (n, q^k) ( n , q k ) 码可以对 V ( k , q ) V(k, q) V ( k , q ) 中的全体向量进行编码。
定义十四 :设 C C C 是一个 q q q 元 ( n , q k ) (n, q^k) ( n , q k ) 码。如果存在 k k k 个分量位置 i 1 , i 2 , ⋯ , i k i_1, i_2, \cdots, i_k i 1 , i 2 , ⋯ , i k ,使得去掉码 C C C 中所有码字的其它 n − k n - k n − k 个分量后,所得到的向量全体为 V ( k , q ) V(k, q) V ( k , q ) ,则称码 C C C 为具有 k k k 个信息位的 q q q 元系统码 。分量位置 i 1 , i 2 , ⋯ , i k i_1, i_2, \cdots, i_k i 1 , i 2 , ⋯ , i k 称为信息位 ,其余 n − k n - k n − k 个分量位置称为校验位 。
在系统码中,信息位和校验位是截然分开的。但在非系统码中,信息位和校验位无法截然分开。校验位就是冗余位,用于在信道的接收端纠正码字在信道传输过程中发生的错误。
9. 新码的构造
我们可以利用一个已知的码来构造新码:
9.1 延长码
将一个码中每个码字都增加一个或多个分量,称为码的延长 。最常用的码的延长方法是对每个码字都增加一个奇偶校验位。
定义十五 :设 C ⊆ V ( n , q ) C \subseteq V(n, q) C ⊆ V ( n , q ) 是一个 q q q 元 ( n , M , d ) (n, M, d) ( n , M , d ) 码,定义C ^ = { x 1 x 2 ⋯ x n x n + 1 ∈ V ( n + 1 , q ) ∣ x 1 x 2 ⋯ x n ∈ C , ∑ i = 1 n + 1 x i = 0 } \hat{C} = \{x_1 x_2 \cdots x_n x_{n+1} \in V(n+1, q) | x_1 x_2 \cdots x_n \in C, \sum_{i=1}^{n+1} x_i = 0\}
C ^ = { x 1 x 2 ⋯ x n x n + 1 ∈ V ( n + 1 , q ) ∣ x 1 x 2 ⋯ x n ∈ C , i = 1 ∑ n + 1 x i = 0 }
称 C ^ \hat{C} C ^ 为码 C C C 的延长码 。码字中的第 n + 1 n+1 n + 1 个分量 x n + 1 x_{n+1} x n + 1 称为奇偶校验位。显然 C ^ \hat{C} C ^ 是一个 q q q 元 ( n + 1 , M , d ′ ) (n+1, M, d^{'}) ( n + 1 , M , d ′ ) 码,其中 d ′ = d d^{'} = d d ′ = d 或 d + 1 d+1 d + 1 。
9.2 截短码
码的截短是码的延长的逆过程。将一个码中的每个码字都删去一个或多个分量,称为码的截短 。
定义十六 :设 C ⊆ V ( n , q ) C \subseteq V(n, q) C ⊆ V ( n , q ) 是一个 q q q 元 ( n , M , d ) (n, M, d) ( n , M , d ) 码,其中 d ≥ 2 d \geq 2 d ≥ 2 ,则将码 C C C 中的每个码字都删去第 i i i 个分量后,就得到一个 q q q 元 ( n − 1 , M , d ′ ) (n-1, M, d^{'}) ( n − 1 , M , d ′ ) 码,其中 d ′ = d d^{'} = d d ′ = d 或 d − 1 d-1 d − 1 。
9.3 扩张码
对一个码增加一个或多个码字后所得到的码称为扩张码 。
9.4 删除码
从一个码中去掉一个或多个码字后所得到的码称为删除码 。
9.5 加长码
定义十七 :设 C ⊆ V ( n , q ) C \subseteq V(n, q) C ⊆ V ( n , q ) 是一个 q q q 元 ( n , M , d ) (n, M, d) ( n , M , d ) 码。对 s = 0 , 1 , 2 , ⋯ , q − 1 s = 0, 1, 2, \cdots, q-1 s = 0 , 1 , 2 , ⋯ , q − 1 ,令C s = { x 1 x 2 ⋯ x n x n + 1 ∈ V ( n + 1 , q ) ∣ x 1 x 2 ⋯ x n ∈ C , x n + 1 = s } C_s = \{x_1 x_2 \cdots x_n x_{n+1} \in V(n+1, q) | x_1 x_2 \cdots x_n \in C, x_{n+1} = s\}
C s = { x 1 x 2 ⋯ x n x n + 1 ∈ V ( n + 1 , q ) ∣ x 1 x 2 ⋯ x n ∈ C , x n + 1 = s }
称 C 0 ∪ C 1 ∪ ⋯ ∪ C q − 1 C_0 \cup C_1 \cup \cdots \cup C_{q-1} C 0 ∪ C 1 ∪ ⋯ ∪ C q − 1 为码 C C C 的加长码。
9.6 缩小码
定义十八 :设 C ⊆ V ( n , q ) C \subseteq V(n, q) C ⊆ V ( n , q ) 是一个 q q q 元 ( n , M , d ) (n, M, d) ( n , M , d ) 码。由 C C C 中第 i i i 个分量都是 s s s 的所有码字组成的码记为 C i , s C_{i, s} C i , s ,其中 1 ≤ i ≤ n , s ∈ G F ( q ) 1 \leq i \leq n, s \in GF(q) 1 ≤ i ≤ n , s ∈ GF ( q ) 。将 C i , s C_{i, s} C i , s 中每个码字的第 i i i 个分量去掉后得到的码称为码 C C C 的缩小码。
10. 码的等价变换
定义十九 :关于 q q q 元 ( n , M ) (n, M) ( n , M ) 码有两种置换。一种是关于码字分量位置集合的置换,称为换位型置换 ,记为 σ 1 \sigma_1 σ 1 :
σ 1 = ( 1 2 ⋯ n ↓ ↓ ⋯ ↓ σ 1 ( 1 ) σ 1 ( 2 ) ⋯ σ 1 ( n ) ) \sigma_1 = \left(
\begin{matrix}
1 & 2 & \cdots & n \\
\downarrow & \downarrow & \cdots & \downarrow \\
\sigma_1(1) & \sigma_1(2) & \cdots & \sigma_1(n)
\end{matrix}
\right)
σ 1 = ⎝ ⎛ 1 ↓ σ 1 ( 1 ) 2 ↓ σ 1 ( 2 ) ⋯ ⋯ ⋯ n ↓ σ 1 ( n ) ⎠ ⎞
另一种是关于字母表 A = G F ( q ) = { 0 , 1 , ⋯ , q − 1 } A = GF(q) = \{0, 1, \cdots, q-1\} A = GF ( q ) = { 0 , 1 , ⋯ , q − 1 } 的置换,称为换元型置换 ,记为 σ 2 \sigma_2 σ 2 :
σ 2 = ( 1 2 ⋯ n ↓ ↓ ⋯ ↓ σ 2 ( 1 ) σ 2 ( 2 ) ⋯ σ 2 ( n ) ) \sigma_2 = \left(
\begin{matrix}
1 & 2 & \cdots & n \\
\downarrow & \downarrow & \cdots & \downarrow \\
\sigma_2(1) & \sigma_2(2) & \cdots & \sigma_2(n)
\end{matrix}
\right)
σ 2 = ⎝ ⎛ 1 ↓ σ 2 ( 1 ) 2 ↓ σ 2 ( 2 ) ⋯ ⋯ ⋯ n ↓ σ 2 ( n ) ⎠ ⎞
定义二十 :两个 q q q 元 ( n , M ) (n, M) ( n , M ) 码是等价的,如果能够通过一系列下述两种变换将其中一个码变为另一个码:
换位型置换:将码的坐标位置进行置换;
换元型置换:将出现在某一个固定坐标位置上的字符进行置换。
附录