Cel*_*tas 6 math error-detection hamming-distance
一个问题问:找到以下代码的汉明距离:
11111
10101
01010
11100
00011
11001
Run Code Online (Sandbox Code Playgroud)
答案是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))
Run Code Online (Sandbox Code Playgroud)
小智 5
我们有一个定理,即d_min = weight(sum(所有代码)) ; weight是结果字符串中的非零数.在你的示例模数中添加所有字符串代码,如所有的第一列和第二列.......然后我们得到代码为[0 0 1 1 0],重量为2(非零的数量),即汉明码的最小距离