一个问题要求:找出以下代码的汉明距离。
答案是2。这是怎么回事?我以为汉明距离只能在两个字符串之间计算?
11111
10101
01010
11100
00011
11001
答案是2。这是怎么回事?我以为汉明距离只能在两个字符串之间计算?
11111
10101
01010
11100
00011
11001
代码的汉明距离被定义为任意两个编码单词之间的最小距离。因此,在您的情况下,找到所列任意两个编码单词之间的汉明距离时,没有一个小于2。
0000
、1000
和 1110
,那么它们的最小汉明距离显然是 1
,但你的计算将返回 2
(异或和为 0110
)。 - Keiwancode = [
(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))