8.1. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ
Блоковый код состоит из набора векторов фиксированной длины, называемых кодовыми словами. Длина кодового слова – это число элементов в векторах, и оно обозначается
. Элементы кодового слова выбираются из алфавита с
элементами. Если алфавит содержит два элемента 0 и 1, код называется двоичным, а элементы любого кодового слова называют битами (двоичными символами). Если элементы кодового слова выбираются из алфавита, имеющего
элементов
, код называют не двоичным. Интересно отметить, что если
является степенью 2, т.е.
, где
- положительное целое число, каждый
-й элемент имеет эквивалентное двоичное представление, состоящее из
битов и, таким образом, недвоичные коды длины
можно отобразить в двоичный код с блоковой длиной
.
В двоичном блоковом коде длиной
можно образовать
кодовых слов. Из этих
кодовых слов мы можем выбрать
кодовых слов
, чтобы сформировать код. Таким образом, блок из
информационных бит отображается в кодовое слово длины
, выбираемое из набора
кодовых слов. Мы обозначим результирующий блоковый код, как
код, а отношение
определим как скорость кода. В более общем случае, если код имеет
элементов, можно образовать
кодовых слов. Подмножество из
кодовых слов можно выбрать для передачи
битовых информационных блоков.
Кроме параметра скорости кода
, важным параметром кодового слова является его вес, который равен числу ненулевых элементов, слова. В общем, каждое кодовое слово имеет свой собственный вес. Набор всех весов кода образует распределение весов кода. Когда все
кодовых слов имеет одинаковый вес, код называется кодом с фиксированным весом или кодом с постоянным весом. Функции кодирования и декодирования включают арифметические операции суммирования и умножения, выполненные над кодовыми словами. Эти арифметические операции выполняются в соответствии с соотношениями, правилами для алгебраического поля, которое имеет своими элементами символы, содержащиеся в алфавите кода. Для примера, символы в двоичном алфавите равны 0 и 1; следовательно, поле имеет два элемента. В общем, поле
состоит из набора элементов, над которыми выполняются две арифметические операции, именно, операции сложения и умножения, которые удовлетворяют следующим свойствам (аксиомам):
Сложение
1. Набор
замкнут относительно сложения, т.е. если
, тогда
.
2. Сложение ассоциативно, т.е. если
и
- элементы
, тогда
.
3. Сложение коммутативно, т.е.
.
4. Набор содержит элемент, называемый нулевым, который удовлетворяет условию
.
5. Каждый элемент множества имеет свой собственный отрицательный элемент. Следовательно если
- элемент, то его отрицательный элемент обозначается
. Вычитание двух элементов, такие как
определено как
.
Умножение
1. Набор
замкнут относительно умножения, т.е. если
, то тогда
.
2. Умножение ассоциативно, т.е. если
и
- элементы
, тогда
.
3. Умножение коммутативно, т.е.
.
4. Умножение дистрибутивно со сложением, т.е.
.
5. Набор содержит элемент, называемый единичным, который удовлетворяет уcловию
для любого элемента
.
6. Каждый элемент
, исключая нулевой, имеет обратный элемент. Следовательно, если
, тогда его обратный элемент определён как
и
. Деление двух элементов, обозначаемое как
или
, определено как
.
Мы очень свободно обращаемся с полями из вещественных чисел и полями из комплексных чисел. Эти поля могут иметь неограниченное число элементов. Однако, как было указано выше, коды строятся из полей с ограниченным числом элементов. Ограниченное поле с
элементами обычно называют полем Галуа и обозначают
.
Каждое поле должно иметь нулевой элемент и единичный элемент – следовательно, простейшее поле – это
. В общем, если
является простым числом, мы можем построить ограниченное поле
, состоящие из элементов
. Операции суммирования и умножения над элементами из
осуществляются по модулю
и обозначается так
. Например, таблицы сложения и умножения для
таковы:

Подобным образом, поле
содержит набор, состоящий из элементов
. Таблицы сложения и умножения для
:

В общем, ограниченное поле
можно построить, только если
- простое число или степень простого числа. Если
- простое число, умножение и сложение базируются на арифметике по модулю
, как сказано выше. Если
, где
- простое число, а
- какое-либо целое, возможно расширить поле
до поля
. Последнее называется расширенным полем
. Умножение и сложение элементов в расширенном поле базируется на арифметике по модулю
.
С этим кратким введением в арифметику операций, которые можно осуществлять над элементами кодовых слов, рассмотрим теперь некоторые базовые характеристики блоковых кодов.
Предположим, что
и
- какие либо два кодовых слова в
кодовом блоке. Мера разницы между кодовыми словами - число соответствующих элементов или позиций, в которых они различаются. Эта мера называется расстоянием Хемминга между двумя кодовыми словами и обозначается
. Ясно, что
при
удовлетворяет условию
. Наименьшее значение из набора
для
кодовых слов называется минимальным расстоянием кода и обозначается
. Поскольку хеммингово расстояние является мерой различия между парами кодовых слов, оно, разумеется, имеет отношение к коэффициенту корреляции между соответствующими парами сигналов, генерируемыми кодовыми словами. Эта связь обсуждается в разделе 8.1.4.
Помимо классификации кодов на двоичные и недвоичные можно также их классифицировать на линейные и нелинейные. Возьмем
и
- два кодовых слова в блоковом коде
и
,
- какие-либо два скалярных элемента из определённого алфавита. Тогда код называют линейным, если и только если
тоже является кодовым словом. Это определение подразумевает, что линейный код должен содержать кодовое слово из одних нулей. Как следствие, код с постоянным весом нелинейный.
Предположим, что мы имеем двоичный линейный блоковый код, и пусть
,
, где
- число кодовых слов. Для удобства пусть
означает кодовое слово из одних нулей, т.е.
и пусть
означает вес
-го кодового слова. Отсюда следует, что
является хемминговым расстоянием между кодовыми словами
и
. Т.е. расстояние
. В общем, расстояние
между парой кодовых слов
и
просто равно весу кодового слова, сформулированного разностью между
и
. Поскольку код линейный, разность (что эквивалентно взятию суммы по
двоичных кодовых слов) между
и
также является кодовым словом с весом, включенным в набор
. Следовательно, распределение весов линейного кода полностью характеризует дистанционные свойства кода. Минимальное расстояние кода равно
. (8.1.1)
Определённое число элементарных понятий из линейной алгебры особенно полезны, когда имеем дело с линейными блоковыми кодами. В частности, набор из всех векторов с
элементами формирует векторное пространство
. Если мы выберем набор из
линейно независимых векторов из
и из них сформируем набор из всех линейных комбинаций этих векторов, то результирующий набор образует подпространство в
, назовем его
размерности
. Любой набор из
линейно независимых векторов в пространстве
образует базис. Теперь рассмотрим набор из векторов
, которые ортогональны к каждому вектору базиса
(и, следовательно, они ортогональны ко всем векторам в
). Этот набор векторов также является подпространством
и он называется нуль-пространством или ортогональным пространством к
. Если размерность пространства
равна
, то размерность нуль-пространства равна
.
Если пользоваться терминами, предназначенными для двоичных блоковых кодов, векторное пространство
состоит из
двоичных векторов с
элементами. Линейный
код является ансамблем
векторов с
элементами, называемыми кодовыми словами, которые формируют подпространство
в поле из двух элементов. Поскольку имеется
кодовых слов в
, базис для
имеет
кодовых слов. Это значит, что для конструирования
линейных комбинаций требуется
линейно независимых кодовых слов, которые формируют весь код. Нуль-пространство для
образует другой линейный код, который состоит из
кодовых слов блока длиной
с
информационными битами. Его размерность равна
. В разделе (8.1.1) мы рассмотрим эти соотношения с большими подробностями.