0

Python でハミング コードの 3 つの異なるデコーダーを比較しようとしています: ブルート フォース、ローカル検索、およびシンドローム。ブルート フォースの実装に問題があります。

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

[]これはエラーなしで実行されますが、入力が のようなベクトルの場合、出力は 2 進数のシーケンスではなく単純な になりbruteForce([1,0,0,0,0,0,1])ます。

4

1 に答える 1

0

これは推測にすぎませんが、d[l] <= 1本当に正しいかどうかを確認することもできます。ハミング コードの特徴の 1 つは誤り訂正であり、最小距離が 3 であるため可能です。このコードは、単なるパリティ チェック コードを実装したように見えます (最小距離 == 1.)。

于 2014-02-14T12:44:18.917 に答える