Краткие теоретические сведения. Код Хэмминга – один из наиболее распространенных систематических кодов

Код Хэмминга – один из наиболее распространенных систематических кодов. К кодам Хэмминга относятся коды с минимальным кодовым расстоянием dmin = 3, исправляющие все одиночные ошибки.

Формирование r проверочных элементов в комбинации этого кода осуществляется по k информационным элементам. Таким образом, длина кодовой комбинации n = r + k. Проверочные элементы представляют собой линейные комбинации информационных элементов, т.е. взвешенные суммы информационных элементов с весовыми коэффициентами 1 и 0. Для двоичных кодов в качестве линейной операции используют сложение по модулю 2. Операция вычитания совпадает с операцией сложения.

Последовательность 0 и 1 в кодовой комбинации иначе называют кодовым вектором. Коду Хэмминга присущи свойства линейных кодов:

1) сумма или разность кодовых комбинаций кода дает вектор, принадлежащий данному коду;

2) линейные коды образуют алгебраическую группу по отношению к операции сложения по модулю 2;

3) минимальное кодовое расстояние между кодовыми векторами группового кода равно минимальному весу ненулевых кодовых векторов.

При передаче кодового вектора может быть искажен любой элемент, число таких ситуаций равно Краткие теоретические сведения. Код Хэмминга – один из наиболее распространенных систематических кодов - student2.ru . К этому следует добавить еще одну ситуацию, когда ошибка не произошла. Таким образом, общее число комбинаций проверочных элементов 2r должно превышать число возможных ошибочных ситуаций в коде с учетом отсутствия ошибок для правильного их различия и определения мест ошибок (формула 10):

Краткие теоретические сведения. Код Хэмминга – один из наиболее распространенных систематических кодов - student2.ru .

Поскольку

Краткие теоретические сведения. Код Хэмминга – один из наиболее распространенных систематических кодов - student2.ru ,

то, учитывая формулу (10), можно записать:

Краткие теоретические сведения. Код Хэмминга – один из наиболее распространенных систематических кодов - student2.ru (14)

где 2n – полное число комбинаций кода.

Минимальное соотношение корректирующих и информационных разрядов, ниже которого код не может сохранять свои корректирующие способности, определяется из формулы (10):

Краткие теоретические сведения. Код Хэмминга – один из наиболее распространенных систематических кодов - student2.ru . (15)

Для вычисления основных параметров кода Хэмминга можно задать число проверочных элементов r, когда из последнего выражения определяют n и k = n - r. Соотношения между r, n и k для кода Хэмминга приведены в таблице 7:

Таблица 7

Соотношения между r, n и k для кода Хэмминга



r
n
k

Характерной особенностью проверочной матрицы кода с dmin = 3 является то, что ее столбцы представляют собой различные ненулевые комбинации длиной r. Например, при r = 4 и n = 15, код (15, 11), проверочная матрица имеет вид:

H15,11 =
  u1 u2 u3 u4 u5 u6 u7 u8 u9 u10 u11 u12 u13 u14 u15

Итак, если взять комбинации простого четырехэлементного кода и отбросить нулевую комбинацию, то можно легко получить проверочную матрицу, записав все кодовые комбинации последовательно в столбцы матрицы H.

Перестановкой столбцов, содержащих одну единицу, вправо матрицу приводим к виду:

H15,11 =
  a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15

В соответствии с этой матрицей, получаем систему проверочных уравнений, с помощью которой вычисляем проверочные разряды:

b1 = a5 (+) a6 (+) a7 (+) a8 (+) a9 (+) a10 (+) a11
b2 = a2 (+) a3 (+) a4 (+) a8 (+) a9 (+) a10 (+) a11
b3 = a1 (+) a3 (+) a4 (+) a6 (+) a7 (+) a10 (+) a11
b4 = a1 (+) a2 (+) a4 (+) a5 (+) a7 (+) a9 (+) a11

При появлении ошибки в кодовой комбинации окажутся невыполненными те проверочные отношения, в которые входит значение ошибочного разряда. Так, если ошибка возникла в 7-м информационном разряде, то окажутся невыполненными 1, 3 и 4 уравнения, т.е. синдром равен 1011 (совпадает с 7-м столбцом матрицы H). Таким образом, местоположение столбца матрицы H, совпадающего с вычисленным синдромом, указывает место ошибки. Вычисленное значение синдрома обязательно совпадает с одним из столбцов матрицы H, т.к. в качестве столбцов выбраны все возможные двоичные r-разрядные числа.

Хэмминг предложил расположить столбцы проверочной матрицы так, чтобы номер i-го столбца матрицы H и номер ошибочного разряда кодовой комбинации соответствовали двоичному представлению числа i. Тогда синдром, полученный из проверочных уравнений, будет двоичным представлением номера разряда кодовой комбинации, в котором произошла ошибка. Для этого проверочные разряды должны находиться не в конце кодовой комбинации, а на номерах позиций, которые выражаются степенью двойки (20, 21, 22, ... 2r-1), как это имеет место в непреобразованной матрице H, потому что каждый из них входит только в одно из проверочных уравнений.

В последнем случае проверочные разряды размещаются между информационными. Синдром, согласно непреобразованной проверочной матрице H15,11, определяется из уравнений:

S1 = u1 (+) u3 (+) u5 (+) u7 (+) u9 (+) u11 (+) u13 (+) u15
S2 = u2 (+) u3 (+) u6 (+) u7 (+) u10 (+) u11 (+) u14 (+) u15
S3 = u4 (+) u5 (+) u6 (+) u7 (+) u12 (+) u13 (+) u14 (+) u15
S4 = u8 (+) u9 (+) u10 (+) u11 (+) u12 (+) u13 (+) u14 (+) u15

В качестве проверочных выбирают разряды u1, u2, u4 и u8, которые встречаются в этой системе уравнений по одному разу.

Кодирование

Кодовая комбинация, которую необходимо закодировать (две первых буквы ФИО – МК):

11101111 11101001.

Воспользовавшись неравенством (10):

Краткие теоретические сведения. Код Хэмминга – один из наиболее распространенных систематических кодов - student2.ru ,

найдем количество проверочных разрядов r. Учитывая, что n = k + r = 16 + r, преобразуем неравенство:

Краткие теоретические сведения. Код Хэмминга – один из наиболее распространенных систематических кодов - student2.ru .

Наименьшее натуральное r, удовлетворяющее данному неравенству: r = 5. Следовательно, n = k + r = 16 + 5 = 21.

Зная параметры нашего кода (k = 16, r = 5, n = 21), составляем для него матрицу кода Хэмминга:

H21,16 =
                                           
  b1 b2 a1 b3 a2 a3 a4 b4 a5 a6 a7 a8 a9 a10 a11 b5 a12 a13 a14 a15 a16
  u1 u2 u3 u4 u5 u6 u7 u8 u9 u10 u11 u12 u13 u14 u15 u16 u17 u18 u19 u20 u21

Проверочные столбцы и соответствующие им проверочные символы выделены полужирным шрифтом.

Нужно определить проверочные разряды в комбинации:

u1 u2 1 u4 110 u8 1111111 u16 01001.

Из проверочной матрицы получаем:

u1 = u3 (+) u5 (+) u7 (+) u9 (+) u11 (+) u13 (+) u15 (+) u17 (+) u19 (+) u21
u2 = u3 (+) u6 (+) u7 (+) u10 (+) u11 (+) u14 (+) u15 (+) u18 (+) u19  
u4 = u5 (+) u6 (+) u7 (+) u12 (+) u13 (+) u14 (+) u15 (+) u20 (+) u21  
u8 = u9 (+) u10 (+) u11 (+) u12 (+) u13 (+) u14 (+) u15      
u16 = u17 (+) u18 (+) u19 (+) u20 (+) u21          

Вычисляя проверочные разряды согласно этой системе, для нашей кодовой комбинации получим:

u1 = (+) 1 (+) 0 (+) 1 (+) 1 (+) 1 (+) 1 (+) 0 (+) 0 (+) 1 = 1
u2 = (+) 1 (+) 0 (+) 1 (+) 1 (+) 1 (+) 1 (+) 1 (+) 0   = 1
u4 = (+) 1 (+) 0 (+) 1 (+) 1 (+) 1 (+) 1 (+) 0 (+) 1   = 1
u8 = (+) 1 (+) 1 (+) 1 (+) 1 (+) 1 (+) 1       = 1
u16 = (+) 1 (+) 0 (+) 0 (+) 1           = 0

Подставим полученные значения проверочных разрядов и получим закодированное сообщение

111111011111111001001.

Декодирование

Пускай при передаче закодированного сообщения произошла ошибка в 11-ом разряде, и декодер получил следующую искаженную кодовую комбинацию:

111111011101111001001.

Вычислим синдром ошибки. Согласно непреобразованной проверочной матрице H21,16, синдром определяется из уравнений:

s1 = u1 (+) u3 (+) u5 (+) u7 (+) u9 (+) u11 (+) u13 (+) u15 (+) u17 (+) u19 (+) u21
s2 = u2 (+) u3 (+) u6 (+) u7 (+) u10 (+) u11 (+) u14 (+) u15 (+) u18 (+) u19  
s3 = u4 (+) u5 (+) u6 (+) u7 (+) u12 (+) u13 (+) u14 (+) u15 (+) u20 (+) u21  
s4 = u8 (+) u9 (+) u10 (+) u11 (+) u12 (+) u13 (+) u14 (+) u15      
s5 = u16 (+) u17 (+) u18 (+) u19 (+) u20 (+) u21          

Вычисляя синдром согласно этой системе, для принятой кодовой комбинации получим:

s1 = (+) 1 (+) 1 (+) 0 (+) 1 (+) 0 (+) 1 (+) 1 (+) 0 (+) 0 (+) 1 = 1
s2 = (+) 1 (+) 1 (+) 0 (+) 1 (+) 0 (+) 1 (+) 1 (+) 1 (+) 0   = 1
s3 = (+) 1 (+) 1 (+) 0 (+) 1 (+) 1 (+) 1 (+) 1 (+) 0 (+) 1   = 0
s4 = (+) 1 (+) 1 (+) 0 (+) 1 (+) 1 (+) 1 (+) 1       = 1
s5 = (+) 0 (+) 1 (+) 0 (+) 0 (+) 1           = 0

Очевидно, что для получения правильного результата биты синдрома необходимо записать, начиная со старшего, т.е. s5s4s3s2s1. Следовательно, синдром имеет вид:

010112 = 1110.

Полученный результат свидетельствует о том, что ошибка допущена в 11-м разряде принятой кодовой комбинации.

Инвертируем искаженный 11-й разряд принятой комбинации, отбрасываем проверочные 1-й, 2-й, 4-й, 8-й и 16-й разряды и получаем декодированное сообщение с исправленной ошибкой:

11101111 11101001.

Наши рекомендации