ГЛАВА 3. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ
Большинство известных хороших кодов принадлежит классу линейных кодов. Этот класс кодов определяется специально выбираемой структурой кода. Такая структура облегчает поиск хороших кодов, а также помогает создать хорошие кодеры и декодеры. Следует подчеркнуть, что мы изучаем линейные коды не потому, что это лучшие коды, а скорее потому, что в настоящее время мы располагаем весьма скудной информацией о построении нелинейных кодов. В то же время хорошие линейные коды существуют и некоторые из них известны. Большинство наиболее эффективных теоретических методов применимо только к линейным кодам, и поэтому при поисках новых кодов обычно ограничиваются классом линейных кодов.
3.1. СТРУКТУРА ЛИНЕЙНЫХ БЛОКОВЫХ КОДОВ
Напомним, что векторное пространство
представляет собой множество
-последовательностей элементов из
с покомпонентным сложением и умножением на скаляр. Наиболее важным частным случаем является
векторное пространство двоичных слов длины
в котором при сложении двух векторов в каждой компоненте происходит сложение по модулю 2.
Определение 3.1.1. Линейный код есть подпространство в в
Таким образом, линиейный код есть непустое множество
-последовательностей над
называемых кодовыми словами, такое, что сумма двух кодовых слов является кодовым словом, и произведение любого кодового слова на элемент ноля также является кодовым словом. В любом линейном коде нулевое слово как начало координат векторного пространства всегда есть кодовое слово. Точнее, если с — кодовое слово, то — с также
кодовое слово и, следовательно, с
тоже будсг кодовым словом.
Каждое слово в линейном коде связано с остальными словами кода так же, как любое другое кодовое слово. Расположение соседних кодовых слов вокруг нулевого слова есть типичное расположение слов вокруг любого другого кодового слова. Например, предположим, что с — некоторое кодовое слово и
кодовые слова, находящиеся на некотором расстоянии
от с; тогда
- нулевое слово и с,
— кодовые слова, находящиеся на расстоянии
от нулевого слова. Таким образом, для определения минимального расстояния линейного кода достаточно определить расстояние между нулевым словом и ближайшим к нему другим кодовым словом.
Определение 3.1.2. Вес Хэмминга
кодового слова с равен числу его ненулевых компонент. Минимальный вес кода
есть минимальный вес ненулевого кодового слова.
Теорема 3.1.3. Для линейного кода минимальное расстояние
находится из равенства
где минимум берется по всем кодовым словам, кроме нулевого.
Доказательство.
Следовательно, для нахождения линейного кода, исправляющего
ошибок, необходимо найти линейный код с минимальным весом, удовлетворяющим неравенству
Изучение метрических свойств линейных кодов много проще, чем нелинейных.