6

一个问题问:求以下代码的汉明距离:

11111  
10101  
01010  
11100  
00011  
11001

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

4

3 回答 3

11

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

于 2012-10-05T12:10:54.123 回答
5

这里有一些 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))
于 2012-10-26T19:52:33.600 回答
5

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

于 2013-08-17T07:35:29.580 回答