2014-02-14 191 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)。