2014-02-14 6 views
0

나는 파이썬에서 해밍 코드에 대한 세 가지 디코더, 즉 무차별 대항력, 로컬 검색 및 신드롬을 비교하려고합니다. 나는 나의 무력 구현에 문제가 있어요 :이 오류없이 실행되지만 입력이 bruteForce([1,0,0,0,0,0,1])와 같은 벡터 일 때 출력이 대신 이진 숫자의 순서로, 단순히 []입니다파이썬에서 해밍 코드 디코더?

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

정확히 무엇이 문제입니까? 오류 (추적을 제공)? 예기치 않은 결과 (입력, 예상 출력, 실제 출력 제공)? – jonrsharpe

+0

짐승 같은 힘이 잘 컴파일되지만, 입력이 bruteForce ([1,0,0,0,0,0,1]) – user3236854

+0

과 같은 벡터 인 경우 이진 숫자 시퀀스가 ​​아닌 단순히 [[] "출력이됩니다. '[]'는 예상치 못한 결과를 출력합니까? 그렇다면 왜 c를'[]'로 초기화합니까? 코드에서 반환되는 값은이 빈 목록 (모든'l '에 대해'd [l]> 1이면)이거나 마지막 루프의 마지막 계산 결과입니다. –

답변

0

이것은 추측 일 뿐이지 만 d[l] <= 1이 실제로 올바른지 확인할 수 있습니다. 해밍 코드의 특징 중 하나는 오류 수정이며 최소 거리가 3이기 때문에 가능합니다. 단순한 패리티 검사 코드 (최소 거리 == 1.)를 구현 한 것처럼 보이는 코드