汉明距离的计算
码字A为 10001001
码字B为 10110001
那么不同的字符数为3,汉明距离就是3
不难看出,汉明距离就是两个码不同的数的个数。
最小汉明距离
在一个码组集合中,任意两个码字之间对应位上码元取值不同的位的数目定义为这两个码字之间的汉明距离。即
d(x,y)=
∑
x
i
⊕
y
i
\sum{x_i} \oplus {y_i}
∑xi⊕yi
这里i=0,1,…n-1,x,y都是n位的编码,⊕表示异或
例如:(00)与(01)的距离是1,(110)和(101)的距离是2。在一个码组集合中,任意两个编码之间汉明距离的最小值称为这个码组的最小汉明距离。最小汉明距离越大,码组越具有抗干扰能力。
下面我们用d表示码组的最小汉明距离。
- 当码组用于检测错误时,设可检测e个位的错误,则
d
≥
e
+
1
d \geq e+1
\quad
d
≥
e
+
1
d \geq e+1
- 若码组用于纠错,设可纠错t个位的错误,则
d
≥
2
∗
t
+
1
d \geq 2*t+1
\quad
- 如果码组用于纠正t个错,检测e个错,则
d
≥
e
+
t
+
1
d \geq e+t+1
\quad
d
≥
e
+
t
+
1
d \geq e+t+1
汉明距离纠错
n位的码字可以用n维空间的超立方体的一个顶点来表示。两个码字之间的汉明距离就是超立方体两个顶点之间的一条边,而且是这两个顶点之间的最短距离。
以这张图为例,n=3时,三维的正方体。
需要纠错时,码表如图二所示,包含{000,011,101,110}这四个码,当且仅当出现1位错误时,都可以检测出来,而需要查出是哪个出错了就略显麻烦。
于是需要图三,只包含{001,110}两个码,如果错误位数是1的话,那么它原来的就是距离它最近的那个码,这一点是可以类推到高维的。
例题
这题因为传输过来的码与 第二个 码汉明距离最小,所以原来就是它了。
参考文献https://baike.baidu.com/item/%E6%B1%89%E6%98%8E%E8%B7%9D%E7%A6%BB/475174?fr=aladdin