Код Хемминга
Этот код реализует идею многократных проверок на четность различных вариантов сумм кодовых элементов в определенных разрядах кодовой комбинации. В результате таких проверок удается получить номер искаженного разряда в двоичной системе счисления.
Порядок построения кода Хемминга:
1. Определяется количество информационных k и проверочных r разрядов. Число проверок в дальнейшем будет равняться числу проверочных разрядов r. Результат каждой проверки обозначается символом 0 или 1.
Записанные справа налево символы образуют число в двоичной системе счисления, соответствующее номеру искаженного разряда. Так как это число не может быть меньше k, а число разрядов в нем равно r, то должно выполняться условие .
2. Все проверки заключаются в вычислении суммы по модулю 2 кодовых элементов в соответствующих разрядах кодовой комбинации. При первой проверке выбираются те разряды, двоичный номер которых содержит 1 во втором разряде, то есть 2, 3, 6, 7, 10-й. При третьей проверке выбираются 4, 5, 6, 7, 12, 13-й разряды и так далее.
3. Место расположения проверочных разрядов в принципе может быть выбрано произвольным, но при выбранном правиле проверок проверочные символы (0 или 1) удобнее размещать в разряда, номера которых равны целой степени числа 2, то есть в 1, 2, 4, 8-м и т.д. разрядах.
4. Способ заполнения проверочных разрядов определяется правилом проверки корректирующего кода.
Циклическим кодом называют линейный код, который представляет собой конечное множество, замкнутое относительно операции циклического сдвига кодовых векторов, образующих его.
В нем образование разрешенных кодовых комбинаций производится циклической перестановкой одной кодовой комбинации. Она называется образующей. Сдвиг осуществляется справа налево. Левый крайний символ каждый раз переносится в конец кодовой комбинации. Циклический код задается в виде матрицы с n столбцами и k строками:
.
При описании циклических кодов n размерная кодовая комбинация представляется в виде многочленов с фиктивной переменной X. Показатели степени у Х соответствуют номерам разрядов, а коэффициентами при Х являются элементы поля GF(m) (где m- основание матрицы), то есть элементы матрицы.
Многочлен для циклического кода, рассмотренного выше:
.
В последнем выражении - образующий многочлен.
Действия над кодовыми комбинациями можно свести к действиям над многочленами. При их суммировании приведение коэффициентов осуществляется путем суммирования по модулю 2.
При этом циклический сдвиг, образующий кодовые комбинации соответствуют умножению образующего многочлена на Х.
.