问题是:找到以下代码的汉明距离:
11111
10101
01010
11100
00011
11001
答案是2.这是如何工作的?我认为汉明距离只在两个字符串之间?
答案 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))