2014-02-14 194 views
0

我想比较三种不同的解码器在python中的汉明码:蛮力,本地搜索和综合征。我有我的蛮力实施问题:在python中的汉明码解码器?

def bruteForce(v): 
    n = len(v) 
    r = int(math.log(n+1,2)) 
    k = n-r 
    m = [] 
    d = [] 
    c = [] 
    for i in range(2**k): 
     m.append(decimalToVector(i,k)) 
    for j in range(2**k): 
     d.append(hammingDistance(matrixMult(m[j], HammingG(r)),v)) 
    for l in range(2**k): 
     if d[l] <= 1: 
      c = matrixMult(m[l], HammingG(r)) 
    return c 

这将运行没有错误,但产量只是[],而不是二进制数的任何序列,当输入,例如bruteForce([1,0,0,0,0,0,1])载体。

+2

你的问题到底是什么?错误(提供追溯)?意想不到的产出(提供投入,预期产出,实际产出)? – jonrsharpe

+0

蛮力编译好,但输出是简单的“[]”,而不是任何序列的二进制数,当输入是一个向量如bruteForce([1,0,0,0,0,0,1]) – user3236854

+0

作为输出是否意想不到'[]'?如果是这样,为什么你初始化C到'[]'?在你的代码中,返回的值是这个空列表(如果所有'l'的'd [l]> 1'),或者最后一个循环中最后一次计算的结果。 –

回答

0

这只是猜测,但你不妨检查一下d[l] <= 1是否真的正确。汉明码的一个特点是纠错,因为最小距离为3,所以它是可能的。你的代码看起来好像你实现了一个奇偶校验码(最小距离== 1)。