目录
- 汉明距离
- 汉明重量
- 检错&纠错
- 应用场景
- 例题
汉明距离
在信息论中,两个等长字符串之间的汉明距离(英语:Hamming distance)是两个字符串对应位置的不同字符的个数。换句话说,它是将一个字符串变换成另外一个字符串所需要替换的字符个数。
对于两个数字来说,汉明距离就是转成二进制后,对应的位置值不相同的个数。例如,假设有两个十进制数a=93和b=73,如果将这两个数用二进制表示的话,有a=1011101、b=1001001,可以看出,二者的从右往左数的第3位、第5位不同(从1开始数),因此,a和b的汉明距离是2。
汉明距离是以理查德·卫斯里·汉明的名字命名的。在通信传输过程中,累计定长二进制字中发生翻转的错误数据位,所以它也被称为信号距离。汉明距离在包括信息论、编码理论、密码学等领域都有应用。
汉明重量
汉明重量是字符串相对于同样长度的零字符串的汉明距离,也就是说,它是字符串中非零的元素个数:对于二进制字符串来说,就是 1 的个数,所以 11101 的汉明重量是 4。
检错&纠错
要检测 e 个随机错误,则要求 d m i n ⩾ d_{\mathrm{min}}\geqslant dmin⩾e+1。
要纠正 t 个随机错误,则要求 d m i n ⩾ 2 ∗ d_{\mathrm{min}}\geqslant2* dmin⩾2∗t+1。
应用场景
- 数据传输和存储:在数据传输和存储过程中,可能会出现错误或噪声。汉明距离可以用于衡量数据传输或存储过程中的错误数量,从而评估数据的可靠性和完整性。
- 编码理论:在编码理论中,汉明距离被用于衡量不同编码之间的差异。例如,在错误检测和纠正码中,汉明距离可以用于衡量两个编码之间的差异,从而确定错误的位置和数量。
- 密码学:在密码学中,汉明距离被用于衡量密码算法的安全性。例如,在对称密钥加密算法中,汉明距离可以用于衡量密钥空间的大小,从而评估密码算法的安全性。
- 模式识别:在模式识别中,汉明距离被用于衡量两个模式之间的相似程度。例如,在图像处理中,汉明距离可以用于衡量两个图像之间的差异,从而进行图像的匹配和识别。
- 机器学习:在机器学习中,汉明距离被用于衡量两个分类器之间的差异。例如,在分类算法中,汉明距离可以用于衡量两个分类器的预测结果之间的差异,从而评估分类器的性能和准确性。
例题
下列码字代表八个字符:
0000000 1000111 0101011 0011101 1101100 1011010 0110110 1110001
找出其最小的汉明距离 d m i n d_\mathrm{min} dmin,并说明该组码字的检错和纠错能力。
解:
d m i n = 4 d_{\mathrm{min}}=4 dmin=4
要检测 e 个随机错误,则要求 d m i n ⩾ d_{\mathrm{min}}\geqslant dmin⩾e+1。则 e ⩽ d m i n − 1 = 3 \leqslant d_\mathrm{min}-1=3 ⩽dmin−1=3。说明该组码字能检测至多
3 个随机错误。
要纠正 t 个随机错误,则要求 d m i n ⩾ 2 ∗ d_{\mathrm{min}}\geqslant2* dmin⩾2∗t+1。则 t ⩽ [ ( d m i n − 1 ) / 2 ] = 1 \leqslant[(d_{\mathrm{min}}-1)/2]=1 ⩽[(dmin−1)/2]=1。说明该组码字能纠
正至多 1 个随机错误。