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) мы
рассмотрим эти соотношения с большими подробностями.