Такие
называются кодами Хэмминга.
Ясно, что каждая лара столбцов матрицы
линейно независима (поскольку никакая пара различных двоичных векторов не дает в сумме нуля), а некоторые множества из трех столбцов будут линейно зависимы. Следовательно, согласно теореме 3.2.2, минимальный вес кода равен 3 и код иснравляег одиночные ошибки.
Определение кодов Хэмминга легко обобщить на случай больших алфавитов. Достаточно просто заметить, что главная идея построения таких кодов состоит в определении матрицы
любая пара столбцов которой линейно независима. Для задания проверочной матрицы нельзя использовать все ненулевые
-последовательности над
поскольку некоторые из них попарно линейно зависимы. Чтобы обеспечить линейную независимость, выберем в качестве столбцов матрицы все
-последовательности, у которых первая ненулевая компонента равна единице. Тогда все столбцы будут попарно линейно независимыми, а некоторые тройки столбцов могут оказаться линейно зависимыми, и минимальный вес в коде будет равен трем.
Всего существует
таких различных столбцов. Следовательно, получившийся код будет
-кодом. Код Хэмминга, исправляющий одиночные ошибки, существует для каждого
для которого существует поле
и для любого
Для примера в табл. 3.1 приведены параметры нескольких кодов Хэмминга.
Таблица 3.1 (см. скан) Параметры
некоторых кодов Хэмминга
Например
-код Хэмминга над
задается проверочной матрицей
и порождающей матрицей
Второй пример носит более практический характер. Предположим, что ЭВМ и периферийное устройство связаны кабелем, по которому параллельно передаются 4 бита. Четыре бита представляют один 6-10-символ, и передается последовательность таких информационных символов. Нам бы хотелось объединить символы в блоки и защитить каждый блок от одиночных ошибок. Взяв
мы видим, что можно было бы получить
-код Хэмминга над полем
при условии, что такое ноле существует. Но поле
уже было приведено на рис. 2.1 (хотя мы еще не проверили, что оно удовлетворяет аксиомам поля). Используя это поле, можно построить порождающую матрицу
-кода Хэмминга над
и с ее помощью выписать следующие соотношения для проверочных символов:
После каждого блока из 15 информационных символов ставятся эти два проверочных символа. Используя это, декодер может исправлять одиночные ошибки в блоке из 17 символов. Конечно, все это имеет смысл только в том случае, когда поле
существует и задано так, как на рис. 2.1. Прежде чем проводить только что описанное построение в некотором поле
мы должны доказать, что такое поле существует, и задать в нем сложение и умножение.