Линейные блочные коды (подобные коду, описанному в примере 6

advertisement
// Материалы научно- методической конференции «Теория и методика обучения
физико-математическим дисциплинам». – Алматы. – 2007. – С.153-156.
УДК 681.3.07
Н.Н. Ташатов
ЛИНЕЙНЫЕ БЛОЧНЫЕ КОДЫ С КОНТРОЛЕМ ЧЕТНОСТИ
(г. Астана, Евразийский национальный университет им. Л.Н. Гумилева)
В статье рассматриваются структурированные последовательности
канального кодирования, а именно линейный блочный код (n, k). Этот код
отображает k - мерный вектор сообщения в n - мерное кодовое слово, в котором
часть генерируемой последовательности совмещается с k символами сообщения,
а остальные (n – k) бит – это биты четности. Добавление к данным избыточных
разрядов позволяет обнаруживать и/или исправлять определенные модели
ошибки.
The structured sequences of channel coding, exactly a regular linear block code (n, k) are
considered in the article. This code displays a k-dimensional vector of the message in a ndimensional code word in which the part of generated sequence is combined with k
symbols of the message, and the others (n-k) bats are the bats of parity. The addition to
the data of superfluous categories allows to find out and-or correct the certain models of
a mistake.
Линейные блочные коды – это класс кодов с контролем четности, которые
описываются парой чисел (n, k). Блок из k символов сообщения назовем
вектором сообщения, а блок из n символов кодового слова - кодовым вектором. В
процессе кодирования блок из k символов сообщения преобразуется в больший
блок из n символов кодового слова, образованного с использованием элементов
данного алфавита. Если алфавит состоит только из двух элементов 0 и 1, код является
двоичным и включает двоичные разряды, т.е. биты.
Набор из 2k последовательностей сообщения, которые формируются из k битовые сообщений, называется k –кортежами, или последовательностями k цифр, а
из 2n последовательности могут формироваться n - битовые блоки, которые называются
п–кортежами. Процедура кодирования сопоставляет с каждым из 2k k –кортежей
сообщения один из 2n п–кортежей. Блочные коды представляют собой взаимно
однозначное соответствие, отсюда следует, что 2k k –кортежей
сообщения
однозначно отображаются во множество из 2n
п–кортежей кодовых слов.
Отображение производится согласно таблице соответствия. Для линейных кодов
преобразование отображения является также линейным [1, 2].
Векторные пространства и подпространства. Пусть множество Vn называется
векторным пространством всех двоичных п–кортежей, на двоичном поле двух
элементов 0 и 1. В этом поле определены две операции, сложение и умножение,
причем результат этих операций принадлежит этому же множеству двух элементов.
Арифметические, операции сложения и умножения определяются согласно обычным
правилам для алгебраического поля [4]. Например, в двоичном поле правила
сложения и умножения будут следующими:
Сложение
Умножение
0  0=0
0  0=0
0  1=0
0  1=1
1  0=0
1  0=1
1  1=1
1  1=0
Символ «  », — это операция сложения по модулю 2. Суммирование двоичных
п–кортежей всегда производится путем сложения по модулю 2.
Подмножество S векторного пространства Vn называется подпространством,
если для него выполняются следующие условия:
1. Множеству S принадлежит нулевой вектор.
2. Сумма любых двух векторов в S также принадлежит S (свойство замкнутости).
Данные свойства для линейных блочных кодов являются фундаментальными.
Пусть, Vi и Vj — два кодовых слова или кодовых вектора в двоичном блочном коде
(n, k). Код называется линейным тогда и только тогда, когда Vi  Vj также
является кодовым вектором. Линейный блочный код – это такой код, в котором
вектор, не принадлежащий подпространству, нельзя получить путем сложения любых
кодовых слов, принадлежащих этому подпространству.
Например, векторное пространство V4 состоит из следующих шестнадцати 4кортежей:
0000
1000
0001
1001
0010
1010
0011 0100 0101 0110
1011 1100
1101
0111
1110
1111
Примером подмножества V4 , являющегося подпространством, будет следующее:
0000
0101
1010
1111
Сложение любых двух векторов подпространства да ет в итоге лишь один
из векторов подпространства. Множество из 2k п–кортежей называется линейным
блочным кодом тогда и только тогда, когда оно является подпространством
векторного пространства Vn всех п–кортежей. На рисунке 1 показана
геометрическая аналогия структуры линейного блочного кода.
Рисунок 1 Структура линейного блочного кода
Пусть векторное пространство Vn составлено из 2n п–кортежей. Внутри
этого векторного пространства существует подмножество из 2k п–кортежей,
образующих подпространство. Эти 2k вектора или точки показаны
разбросанными среди более многочисленных 2n точек, представляющих
допустимые или возможные кодовые слова. Сообщение кодируется одним из 2k
возможных векторов кода, после чего передается. Вследствие наличия в канале
шума может приниматься измененное кодовое слово, т.е. один из 2n векторов
пространства п–кортежей. Если измененный вектор не слишком отличается, т.е.
лежит на небольшом расстоянии от действительного кодового слова, то декодер
может детектировать сообщение правильно. Основная задача выбора
конкретной части кода подобна цели выбора семейства модулирующих
сигналов, и в контексте рисунка 1 ее можно определить следующим образом:
1. Заполняя пространство V n максимальным количеством кодовых слов, мы
боремся за эффективность кодирования. Это равносильно утверждению,
что мы хотим ввести лишь небольшую избыточность (избыток полосы).
2. Кодовые слова должны быть максимально удалены друг от друга так, что
даже если векторы будут искажены в ходе передачи, их все еще можно
будет с высокой вероятностью правильно декодировать .
Пример линейного блочного кода (6, 3). Код (6, 3) состоит из 2k = 2 3 = 8
векторов сообщений, т.е. восьми кодовых слов. В векторном пространстве V6
имеется 2n = 26 = 64 6-кортежей.
Восемь кодовых слов, показанных в таблице 1, образуют в V6 подпространство
(имеется нулевой вектор, сумма любых двух кодовых слов дает кодовое слово этого же
подпространства). Таким образом, эти кодовые слова представляют линейный блочный
код. Возникает вопрос о соответствии кодовых слов и сообщений для этого кода (6, 3).
Однозначного соответствия для отдельных кодов (n, k) не существует.
Таблица 1. Соответствие кодовых слов и сообщений
Вектор сообщения
000
100
010
110
001
101
011
111
Кодовое слово
000000
110100
011010
101110
101001
011101
110011
000111
Порождающая матрица (матрица генератора). Реализация таблицы
соответствия кодера при больших значениях k становится слишком громоздкой.
Например, для кода (127, 92) существует 292 или приблизительно 5  10
кодовых
векторов. Если с помощью простой таблицы соответствия выполняется кодирование,
то нужно большое количество памяти для такого огромного числа кодовых слов.
Эту задачу можно значительно упростить, по мере необходимости генерируя
необходимые кодовые слова, вместо того чтобы хранить их в памяти постоянно.
Так как множество кодовых слов, составляющих линейный блочный код, является
k–мерным подпространством n–мерного двоичного векторного пространства, то всегда
27
можно найти такое множество п–кортежей (с числом элементов, меньшим 2k ), которое
может генерировать все 2k кодовых слова подпространства. Генерирующее множество
векторов охватывает все подпространство. Наименьшее линейно независимое множество,
охватывающее подпространство, называется базисом подпространства, а число векторов в
этом базисном множестве называется размерностью подпространства. Пусть V1, V2, ..., Vk
любое базисное множество k линейно независимых п–кортежей. Тогда это базисное
множество можно использовать для генерации нужных векторов линейного блочного
кода, поскольку каждый вектор кода является линейной комбинацией V1, V2, ..., Vk .
Другими словами, каждое из множества 2k кодовых слов U можно представить
следующим образом:
U = m1 V1 + т2 V2 + ... + тk Vk ,
(1)
где тi – это цифры сообщения 0 или 1, а i = 1, ... , k.
Кодирование линейного блочного (n, k) – кода задается порождающей
матрицей Gn,k, которая определяется как массив размером k  п [2, 3]:
 V1   v11 v12
  
 V2   v21 v22
Gn,k =    

 
  
Vk   vk1 vk 2
 v1n 

 v2 n 
.
 

 vkn 
(2)
Кодовые
векторы
представляются
векторами-строками,
таким
образом,
последовательность k бит сообщения, т.е. сообщение m, представляется как векторстрока:
т = т1, т2, ... , тk.
Генерация кодового слова U в матричной записи равна произведению:
U = mG.
(3)
Например, в (6, 3) - коде порождающая матрица имеет следующий вид:
 V1   1 1 0 1 0 0 
  

G = V2    0 1 1 0 1 0  .
V   1 0 1 0 0 1 
 3 

(4)
Здесь V1, V2 и V3 — три линейно независимых вектора, подмножество восьми кодовых
векторов, которые могут сгенерировать все кодовые векторы. Заметим, что сумма
любых двух генерирующих векторов в результате не дает ни одного генерирующего
вектора (противоположность свойству замкнутости). Покажем, как генерируется
кодовое слово U4 для четвертого вектора сообщения 110 в таблице 1 с использованием
проверочной матрицы (4):
 V1 
 
U4 = 1 1 0  V2   1  V1  1  V2  0  V3  1 1 0 1 0 0 + 0 1 1 0 10 + 000000=
V 
 3
= 101 1 1 0 (кодовое слово для вектора сообщения 110).
Таким образом, кодовый вектор, соответствующий вектору сообщения,
является линейной комбинацией строк матрицы G. Так как код полностью
определяется матрицей G, то кодеру не нужно помнить все 2k кодовых вектора, а
лишь запомнить k строк матрицы G. Из примера видно, что проверочная матрица
генератора размерностью 3  6, приведенная в уравнении (4), полностью заменяет
исходный массив кодовых слов размерностью 8  6, приведенный в таблице 1, что
значительно упрощает систему.
СПИСОК ЛИТЕРАТУРЫ
1. Галлагер Р. Теория информации и надежная связь. М., Советское радио, 1974, 720 с.
2. Скляр Б. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр. : Пер. с англ. – Издательский дом «Вильямс», 2004. – 1104 с. ил.
3. Березюк Н.Т., Андрущенко А.Г., Мощицкий С.С. Кодирование информации (двоичные
коды). Харьков, издательское объединение «Вища школа», 1978, 252 с.
4. Lin S. and Costello D.J. Jr. Error Control Coding: Fundamentals and Applications. PrenticeHall, Inc., Englewood Cliffs, N. J., 1983.
Download