我们从发送端发送一个信息x给予接收端,由于信道传输途中出现错误或干扰 ε ε 导致接收端收到的信息y=x+ ε ε 。因此我们希望有一种方法,使得接收端得到y以后,有能力检查是否有错误( ε=0 ε = 0 )?,最好能够在知道出错后( ε≠0 ε ≠ 0 )能够还原出x。纠错能力往往是通过增加冗余来实现的,比如我要想发送一个信号 (a1a2a3a4) ( a 1 a 2 a 3 a 4 ) ,为了发现有没有出错,我变成发送 (a1a2a3a4a1a2a3a4a1a2a3a4) ( a 1 a 2 a 3 a 4 a 1 a 2 a 3 a 4 a 1 a 2 a 3 a 4 ) ,这样的话,就算出错了,只要不是错很多,我就能够通过对比知道是否出错,甚至找到哪里错了,原来是什么信号?但是冗余增多了,往往代表这传输效率变低了,所以怎么比较纠错码的好坏呢?那肯定是纠错能力越强越好,传输效率越高越好!!!!
纠错能力我们一般用d(最小汉明距离)来表示,d越大,纠错能力越强。在了解汉明距离之前我们需要了解一下几个概念:
汉明重量
汉明距离
汉明重量与汉明距离定义:对于v=( v1,v2,...,vn v 1 , v 2 , . . . , v n ),u=( u1,u2,...,un u 1 , u 2 , . . . , u n ) ∈Fnq ∈ F q n ,用 wH(v) w H ( v ) 表示非零分量 vi(1≤i≤n) v i ( 1 ≤ i ≤ n ) 的个数,叫做向量v的汉明重量。而 dH(u,v)=wH(u−v) d H ( u , v ) = w H ( u − v ) 叫做向量u和v之间的汉明距离。 wH(v) w H ( v ) 和 dH(u,v) d H ( u , v ) 可以简记为w(v)和d(u,v).
举例:
对于例3中的v1=0010111,v2=1001011我们计算它的汉明重量,也就是数字不为零的数目,显而易见 w(v1)=4,w(v2)=4 w ( v 1 ) = 4 , w ( v 2 ) = 4
然后求它们的汉明距离 d(v1,v2)=w(v1−v2),∵v1−v2=1011100⟹w(v1−v2)=4 d ( v 1 , v 2 ) = w ( v 1 − v 2 ) , ∵ v 1 − v 2 = 1011100 ⟹ w ( v 1 − v 2 ) = 4
而最小汉明距离就是所有码字之间汉明距离的最小值……假如有10个码字一般而言你需要计算 C210 C 10 2 次,线性码的话只需要计算9次就好了
汉明距离的一些性质:
(1), d(u,v)≥0 d ( u , v ) ≥ 0 并且 d(u,v)=0⇐⇒u=v d ( u , v ) = 0 ⇐⇒ u = v
(2) d(u,v)=d(v,u) d ( u , v ) = d ( v , u )
(3)(三角不等式) d(u,v)≤d(u,w)+d(w,v) d ( u , v ) ≤ d ( u , w ) + d ( w , v )
为什么最小汉明距离能够反映纠错能力?
传输效率我们一般用k/n来表示,
n:n是码字的长度,对于例3中的 v1=0010111 v 1 = 0010111 n=7
k: k=logKq k = l o g q K 其中K是码字的数量,q表示该码是几元。同样例3,总共有16个码,所以K=16,它们是二元码,所以q=2。计算得出 k=log162=4 k = l o g 2 16 = 4
定理:设纠错码C的最小距离为d,则此码可检查 ≤d−1 ≤ d − 1 位错误,也可纠正 ≤[d−12] ≤ [ d − 1 2 ] 个错误。
定理:如果存在q元码(n,K,d),则
qn≤K(∑[d−12]1(q−1)i(ni)) q n ≤ K ( ∑ 1 [ d − 1 2 ] ( q − 1 ) i ( i n ) )
如果满足条件: qn=K(∑[d−12]1(q−1)i(ni)) q n = K ( ∑ 1 [ d − 1 2 ] ( q − 1 ) i ( i n ) ) 则称该q元码为完全码
定理:如果存在参数(n,K,d)的q元码, 1≤d≤n−1 1 ≤ d ≤ n − 1 ,则 K≤qn−d+1 K ≤ q n − d + 1 即 n≤k+d−1 n ≤ k + d − 1
满足singleton界的码(即q元码(n,K,d), K=qn−d+1 K = q n − d + 1 叫做极大距离可分码,简称MDS码
设n,K,d是正整数,q为素数幂,如果
(K−1)(∑d−11(q−1)i(ni))<qn ( K − 1 ) ( ∑ 1 d − 1 ( q − 1 ) i ( i n ) ) < q n
则必存在参数为(n,K,d)的二元码。
G-V界是q元码(n,K,d)存在的充分条件。