Поиск расстояния Хэмминга кода

вопрос: найдите расстояние Хэмминга следующего кода:

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))