找到代码的汉明距离

Cel*_*tas 6 math error-detection hamming-distance

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

11111  
10101  
01010  
11100  
00011  
11001
Run Code Online (Sandbox Code Playgroud)

答案是2.这是如何工作的?我觉得汉明距离只在两根琴弦之间?

gug*_*uga 11

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


Mar*_*oma 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))
Run Code Online (Sandbox Code Playgroud)


小智 5

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

  • 你有那个定理的来源吗?如果你有字符串'0000`,`1000`和`1110`,最小汉明距离显然是"1"但你的计算将返回"2"(xor-sum是'0110`) (3认同)