一个问题问:求以下代码的汉明距离:
11111
10101
01010
11100
00011
11001
答案是 2。这是如何工作的?我认为汉明距离仅在两个字符串之间?
一个问题问:求以下代码的汉明距离:
11111
10101
01010
11100
00011
11001
答案是 2。这是如何工作的?我认为汉明距离仅在两个字符串之间?
代码的汉明距离定义为任意 2 个代码字之间的最小距离。因此,在您的情况下,找到列出的任何 2 个代码字之间的汉明距离,没有一个小于 2。
这里有一些 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))
我们有一个定理d_min=weight(sum(all codes)) ; 权重是结果字符串中非零的数量。在您的示例模数中添加所有字符串代码,例如所有字符串的第一列和第二列......然后我们得到代码为[ 0 0 1 1 0 ],其权重为 2(非零数),即汉明码的最小距离