Поиск расстояния Хэмминга кода
вопрос: найдите расстояние Хэмминга следующего кода:
11111
10101
01010
11100
00011
11001
ответ 2. Как это работает? Я думал, что расстояние Хэмминга между двумя строками?
3 ответов
расстояние Хэмминга кода определяется как минимальное расстояние между любыми 2 кодовыми словами. Итак, в вашем случае, найдя расстояние Хэмминга между любыми 2 из перечисленных кодовых слов, никто не меньше 2.
У нас есть теорема о том, что d_min=вес(сумма(все коды)); вес-это количество нулей в строке результата . В вашем примере по модулю добавьте все строковые коды как первая колонна всех и вторая....... тогда мы получаем код как [ 0 0 1 1 0 ], вес этого 2 ( нет. не нулей), i.e минимальное расстояние кода Хэмминга
вот некоторый Python-код, чтобы найти его автоматически:
code = [
(0,0,0,0,0,0),
(0,0,1,0,0,1),
(0,1,0,0,1,0),
(0,1,1,0,1,1),
(1,0,0,1,0,0),
(1,0,1,1,0,1),
(1,1,0,1,1,0),
(1,1,1,1,1,1)]
def hammingDistance(a, b):
distance = 0
for i in xrange(len(a)):
distance += a[i]^b[i]
return distance
def minHammingDistance(code):
minHammingDistance = len(code[0])
for a in code:
for b in code:
if a != b:
tmp = hammingDistance(a, b)
if tmp < minHammingDistance:
minHammingDistance = tmp
return minHammingDistance
print("min Hamming distance: %i" % minHammingDistance(code))