找到代码的汉明距离

时间:2012-10-05 07:30:27

标签: math error-detection hamming-distance

问题是:找到以下代码的汉明距离:

11111  
10101  
01010  
11100  
00011  
11001

答案是2.这是如何工作的?我认为汉明距离只在两个字符串之间?

3 个答案:

答案 0 :(得分:11)

代码的汉明距离定义为任意2个代码字之间的最小距离。因此,在您的情况下,找到任何两个列出的代码字之间的汉明距离,没有人小于2.

答案 1 :(得分:5)

我们有一个定理 d_min = weight(sum(所有代码)); weight是结果字符串中的非零数。在您的示例模数中添加所有字符串代码 像所有和第二列的第一列.......然后我们得到代码为 [0 0 1 1 0] ,这是2的重量(非零的数量),即最小值汉明码的距离

答案 2 :(得分:4)

以下是一些自动查找的Python代码:

code = [
(0,0,0,0,0,0),
(0,0,1,0,0,1),
(0,1,0,0,1,0),
(0,1,1,0,1,1),
(1,0,0,1,0,0),
(1,0,1,1,0,1),
(1,1,0,1,1,0),
(1,1,1,1,1,1)]

def hammingDistance(a, b):
    distance = 0
    for i in xrange(len(a)):
        distance += a[i]^b[i]
    return distance

def minHammingDistance(code):
    minHammingDistance = len(code[0])
    for a in code:
        for b in code:
            if a != b:
                tmp = hammingDistance(a, b)
                if tmp < minHammingDistance:
                    minHammingDistance = tmp
    return minHammingDistance

print("min Hamming distance: %i" % minHammingDistance(code))