我正在尝试比较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])
等向量时,输出只是 []
,而不是任何二进制数序列。
这只是
猜测,但你不妨检查一下d[l] <= 1
是否真的正确。 汉明码的标志之一是纠错,这是可能的,因为最小距离是3。 您的代码看起来就像您实现了仅仅是奇偶校验代码(最小距离 == 1)。