【问题标题】:Finding hamming distance of code查找代码的汉明距离
【发布时间】:2012-09-26 08:03:54
【问题描述】:

一道题:求下列代码的汉明距离:

11111  
10101  
01010  
11100  
00011  
11001

答案是 2。这是如何工作的?我以为汉明距离只有两个字符串之间?

【问题讨论】:

  • 你确定不是要求最小距离吗?

标签: math error-detection hamming-distance


【解决方案1】:

代码的汉明距离定义为任意 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))
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 你有那个定理的来源吗?如果您有字符串000010001110,则最小汉明距离显然是1,但您的计算将返回2(异或和为0110
      猜你喜欢
      • 2015-05-30
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 2015-03-21
      • 2012-03-10
      • 2014-01-28
      • 1970-01-01
      相关资源
      最近更新 更多