
- •Линейные блочные коды
- •Пример линейного блочного кода (6,3)
- •Матрица генератора
- •Систематические линейные блочные коды
- •Проверочная матрица
- •Контроль с помощью синдромов
- •Исправление ошибок
- •Синдром класса смежности
- •Декодирование с исправлением ошибок
- •Локализация ошибочной комбинации
- •Пример исправления ошибки
- •Реализация декодера
- •Векторные обозначения
Лекция 21-22.
Линейные блоковые коды.
Линейные блочные коды
Линейные
блочные коды — это класс кодов с контролем
четности, которые можно описать парой
чисел
В процессе кодирования блок из
символов сообщения (вектор сообщения)
преобразуется в больший блок из п
символов
кодового слова (кодовый вектор),
образованного с использованием элементов
данного алфавита. Если алфавит состоит
только из двух элементов (0 и 1), код
является двоичным и включает двоичные
разряды (биты).
k-битовые
сообщения формируют набор из 2k
последовательностей сообщения, называемых
k-кортежами
(последовательностями
k
цифр),
k-битовые блоки могут формировать 2n
последовательности, также именуемые
-кортежами.
Процедура
кодирования сопоставляет с каждым из
2k
-кортежей
сообщения один
из
-кортежей.
Блочные коды представляют взаимно
однозначное соответствие, в силу чего
2k
k-кортежей сообщения однозначно
отображаются
в множество из
-кортежей
кодовых слов; отображение производится
согласно таблице соответствия. Для
линейных
кодов преобразование
отображения является линейным.
Векторное пространство
Множество
всех двоичных n-кортежей,
,
называется векторным
пространством над
двоичным полем двух элементов (0 и 1). В
двоичном поле определены две операции,
сложение и умножение, причем результат
этих операций принадлежит этому же
множеству двух элементов. Арифметические
операции сложения и умножения определяются
согласно обычным правилам для
алгебраического поля. Например, в
двоичном поле правила сложения и
умножения будут следующими.
Сложение Умножение
Операция
сложения, обозначаемая символом “
”,
— это та же операция сложения по модулю
2. Суммирование двоичных n-кортежей
всегда производится путем сложения по
модулю 2.
Векторные подпространства
Подмножество S векторного пространства называется подпространством, если для него выполняются следующие условия.
1. Множеству S принадлежит нулевой вектор.
2. Сумма любых двух векторов в S также принадлежит S (свойство замкнутости).
При
алгебраическом описании линейных
блочных кодов данные
свойства являются фундаментальными.
Допустим,
и
— два кодовых слова (или кодовых вектора)
в двоичном блочном коде (n, k).
Код
называется линейным
тогда
и только тогда, когда
также является кодовым вектором. Линейный
блочный код — это такой код, в котором
вектор, не принадлежащий подпространству,
нельзя получить путем сложения любых
кодовых слов, принадлежащих этому
подпространству.
Например, векторное пространство V4 состоит из следующих шестнадцати 4-кортежей.
0000 0001 0010 0011 0100 0101 0110 0111
1000 1001 1010 1011 1100 1101 1110 1111
Примером подмножества V4, являющегося подпространством, будет следующее.
0000 0101 1010 1111
Легко проверить, что сложение любых двух векторов подпространства может дать в итоге лишь один из векторов подпространства. Множество из 2k n-кортежей называется линейным блочным кодом тогда и только тогда, когда оно является подпространством векторного пространству Vn всех n-коргежей. На рис. 6.10 показана простая геометрическая аналогия, представляющая структуру линейного блочного кода. Векторное пространство Vn можно представить как составленное из 2n n-кортежей. Внутри этого векторного пространства существует подмножество из 2k л-кортежей, образующих подпространство. Эти 2k вектора или точки показаны разбросанными среди более многочисленных 2n точек, представляющих допустимые или возможные кодовые слова. Сообщение кодируется одним из 2k возможных векторов кода, после чего передается. Вследствие наличия в канале шума приниматься может измененное кодовое слово (один из 2n векторов пространства n-кортежей). Если измененный вектор не слишком отличается (лежит на небольшом расстоянии) от действительного кодового слова, декодер может обнаружить сообщение правильно. Основная задача выбора конкретной части кода подобна цели выбора семейства модулирующих сигналов, и в контексте рис. 6.10 ее можно определить следующим образом.
Рис. 6.10. Структура линейного блочного кода
1. Наполняя пространство Vn максимальным количеством кодовых слов, мы боремся за эффективность кодирования. Это равносильно утверждению, что мы хотим ввести лишь небольшую избыточность (избыток полосы).
2. Мы хотим, чтобы кодовые слова были максимально удалены друг от друга, так что даже если векторы будут искажены в ходе передачи, их все еще можно будет с высокой вероятностью правильно декодировать.