Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

125 Кібербезпека / 4 Курс / 4.2_Управління інформаційною безпекою / Лiтература / V_P_Babak_A_A_Kliuchnykov-Teoreticheskye_osnovy_zashchity_informat

...pdf
Скачиваний:
132
Добавлен:
23.10.2019
Размер:
21.85 Mб
Скачать

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

Исправление до трех ошибок в принятом искаженном слове r с помощью LUT-декодера можно записать как

v r LUT(get_syndrome(r)),

где v - исправленное кодовое слово.

Полиномное помехоустойчивое кодирование. Двоичные коды Рида -

Маллера (РМ) образовывают семью кодов, которые исправляют ошибки, с простым декодированием, которое обосновывается на мажоритарной логике.

Известное определение двоичных кодов РМ обосновывается на двоичных полиномах (или булева функция). Согласно этому определению коды РМ становятся близкими к кодам, которые входят в класс полиномных кодов.

Булевые полиномные коды РМ. Обозначим f (x1, x2 ,..., xm ) булевую функцию от т двоичных сменных x1, x2 ,..., xm . Известно, что такие функции легко дать с помощью таблицы истинности. Таблица истинности содержит список значений функции f для всех 2m комбинаций значений ее аргумен-

тов. Все обычные булевые операции (такие как «и», «или») можно дать как булевые функции.

Пример 7.17. Рассмотрим функцию, заданную такой таблицей истинно-

сти:

х2

0

0

1

1

х1

0

1

0

1

f (х1 х2)

0

1

1

0

Тогда имеем: f (x1, x2 ) (x1 & NOT (x2 )) (NOT (x1) & x2 ).

Ассоциируем с каждой булевой функцией f двоичный вектор f длины 2m , составленный из значений этой функции для всех возможных комбинаций значений т ее аргументов. В примере 7.17 сделано предположение о лексикографическом (арифметическом) упорядочении значений аргументов функции, т.е. x1 представляет собой младший разряд, а xm - старший разряд.

Заметим, что булевую функцию можно записать прямо по таблице истинности, воспользовавшись дизъюнктивной нормальной формой (ДНФ). В терминах ДНФ любую булевую функцию можно записать как сумму 2m эле-

ментарных функций 1, x1, x2 ,..., xm , x1x2 ,..., xm x1, x2 ,..., xm :

 

f 1 α1x1 α2 x2 ... αm xm α12 x1x2 ... α12...m x1x2...xm ,

(7.42)

где вектор 1 включен для того, чтобы вычислить составляющую (нулевой степени).

В примере 7.17. f x1 x2 . Двоичный (2m , k, 2m 2 ) код РМ, обозначенный PMr , m , определяется как множество векторов, которые ассоциируются со всеми булевыми функциями степени к r включительно от т сменных. Код

540

Глава 7. Кодирование информации

PM PM

r , m

r , m

называют также кодом РМ кода

k

r-го

порядка длины 2m.

Размерность

r

m

(7.43)

 

 

.

i 0

i

 

 

Это число равно количеству способов, которыми можно построить полиномы степени, не выше r, от т сменных.

С учетом уравнения (7.43) строками порождающей матрицы PMr , m кода

являются векторы, ассоциированные с k булевыми функциями, которые можно записать как полиномы степени, не высшего за r, от т сменных.

Пример 7.18. Код РМ PM1,3 первого порядка длины 8 является двоичным (8, 4, 4) кодом, который можно построить из булевых функций первой степени от трех сменных: 1, x1, x2 , x3 . Таким образом, имеем

1

1

1

1

1

1

1

1

1

x1

0

0

0

0

1

1

1

1

x2 0

0

1

1

0

0

1

1

x3 0

1

0

1

0

1

0

1

Порождающая матрица PM1,3

кода

 

 

 

 

 

 

1

 

1

1

1

1

1

1

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

G x1

 

 

0

0

0

0

1

1

1

1 .

(7.44)

x

 

 

0

0

1

1

0

0

1

1

 

2

 

 

 

 

 

 

 

 

 

 

 

x3

 

0

1

0

1

0

1

0

1

 

Заметим, что код PM1,3

можно построить также и из кода Хэмминга (7,

4, 3) сложением общей проверки на парность. Расширенный код Хэмминга и PM1,3 код могут отличаться только порядком позиций (столбцов).

Дуальные коды кодов РМ. Можно показать, что PMm r 1,m дуальный код PMr ,m . Другими словами, порождающая матрица PMm r 1,m кода, может использоваться как проверочная матрица PMr ,m кода.

Определение кодов РМ можно дать и в терминах конечной геометрии. Геометрия Евклида EG(m, 2) размерности т над GF(2) содержит 2m точек,

которые представляют собой все двоичные векторы длины т. Заметим, что столбцы матрицы, образованной последними тремя строками порождающей матрицы PM1,3 кода, представляют собой 8 точек EG(3,2). Изъятием нуле-

вой точки это множество точек превращается в проективную геометрию

541

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

PG(m 1, 2). Коды конечной геометрии являются, в сущности, обобщением

кодов PM .

Связь между кодами и конечной геометрией можно объяснить. Возьмем EG(m,2). Столбцы матрицы (x1T x2T ...xmT ) (где T - операция транспонирования матрицы) рассматриваются как координаты точек геометрии EG(m,2). Тогда существует взаимно однозначное соответствие между компонентами двоичного вектора длины 2m и точками EG(m,2). В частности, подмножество EG(m,2) можно ассоциировать с двоичным вектором w (w1, w2 ,..., wn ) длины n 2m , если интерпретировать значение его координат wi 1 как выбор

точки. Другими словами, w является вектором инцидентности (совпадений).

Кодовыми словами PMr , m кода РМ являются векторы инцидентности

всех подпространств (линейных комбинаций точек) размерности m r в EG(m,2). Из этого определения следует, что количества кодовых слов ми-

нимального веса PMr ,m кода

A m r

m r 1 2m i 1

 

 

2r

 

 

 

 

.

(7.45)

 

 

 

2

 

 

i 0

 

2m r i 1

 

Код, который образовывается после изъятия координат, которые отве-

чают условию x1 x2 ... xm 0,

из всех кодовых слов PMr , m

кода и явля-

ются двоичным циклическим PM *

r , m

кодом. Количество слов минимального

 

 

 

 

 

 

 

 

веса циклического кода РМ

 

 

 

 

 

 

 

 

A

 

m r 1

 

2m i 1

 

 

 

m r 1

 

 

 

.

 

(7.46)

 

 

 

2

 

 

i 0

2m r i 1

 

 

Декодирование РМ кодов можно выполнить на основе мажоритарной логики (МЛ). Идея мажоритарного декодирования состоит вот в чем. Как

известно, проверочная матрица порождает 2n k проверочных уравнений. Построение МЛ декодера сводится к выбору такого подмножества проверочных уравнений, чтобы решение о значении кодового символа на определенной позиции формировалось по большинству «голосов», причем каждый «голос» связан с одним из проверочных уравнений.

Коды Рида - Соломона. При построении кодов Рида - Соломона (РСкоды), исправляющих пакетные ошибки с разрядностью b, пакет разрядов

слова рассматривается как b-значный разряд, приобретающий одно из s 2b

значений (от 0 до s 1). В отличие от двоичных циклических кодов в этом случае в Н-матрице символами являются не 1 и 0, а подматрицы 0, І, hβ, где hβ определяется выражением

h

f b 1

f b 2 ...

f b b

,

(7.47)

542

Глава 7. Кодирование информации

в котором f b i - столбец, который отвечает остатку от деления x b 1 на многочлен G(x) степени b; и - номер столбца в подматрице hβ; b - показатель степени матрицы, причем 1 2b 1.

Как образующий полином используется первоначальный полином степени b, обеспечивающий максимальное количество разных матриц hβ и рав-

ный 2b 1. Значение полиномов для типичных пакетов искажения приведены в табл. 7.14.

 

 

Таблица 7.14

 

 

Разрядность пакета искажений

Образующий многочлен матриц hβ

2

x2

x 1

4

x4

x 1

8

x8 x7 x6 x 1

Полученные матрицы вместе с нулевой (все ее элементы равняются нулю) образовывают поле матриц и так же, как и столбцы Н-матриц двоичных кодов, могут складываться и делиться. При сложении указанных матриц результат суммирования соответствующих символов вычисляется по модулю два. При сложении показатели степени матриц подытоживаются, а при об-

ратной процедуре - отнимаются по модулю 2b 1.

Например, Н-матрица РС-кода, который исправляет одиночные и находит двойные пакеты искажений, имеет такой вид:

I I ...

I ...

I I

0 0

 

 

I h1 ...

h j ...

h2b 0

I 0

.

(7.48)

I h

2

...

h

2 j

...

h

2 2b

0 0 I

 

 

 

 

 

 

 

В этой матрице вторая строка (кроме трех последних подматриц) содержит подматрицы b b вида (7.48) всех степеней от трех до (2b 2).

Символы третьей строки (кроме трех последних) равняются квадратам соответствующих символов второй строки.

Длина РС-кодов - это количество двоичных информационных и контрольных символов, которая определяет количество символов в каждой строке Н-матрицы и определяется выражением

n b(2b 2).

При этом количество информационных разрядов K b(2b 1), а количество контрольных разрядов k 3b в двоичных символах или N (2b 2),

или K 2b 1, или K 3 в обобщенных b-разрядных символах. Причем, как и раньше, величина n(N ) определяет количество столбцов, а k(K ) — количество строк соответствующей Н-матрицы.

543

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

Например, при b 4 имеем n 72, k 12, K 60. При b 2 имеем N 12, k 6. В последнем случае Н-матрица имеет вид (в обобщенных символах)

I

I

I

I

0

0

 

I

I

I

I

0

0

 

 

I

h1

h2

0

I

0

 

I

h1

h2

0

I

0

,

(7.49)

I

h2

h4

0

0

I

 

I

h2

h1

0

0

I

 

 

поскольку первая (нижняя) строка представляет собой квадрат второго, а максимальная степень подматриц вида (7.48) не должна превышать 2b 1,

откуда 4mod(2b 1) 4mod3 1.

Полученная H-матрица размером в 12 столбцов и 6 строк (в двоичных символах) или в 6 столбцов и 3 строки в подматрице содержит

0

0

0

, I

1

0

, h1

 

1

1

, h1

 

0

1

, h4

h1

1

1

.

 

0

0

 

0

1

 

 

0

1

 

 

1

1

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для построения матрицы hi использовано соотношение (7.47), т.е.

 

 

 

hi

f 1 2 1

f 1 2 1

 

f 2 f 1

,

 

 

где

 

f1

- остаток от деления xi на многочлен x2 , что порождает (x 1) :

 

 

 

 

 

 

x

2

 

 

 

x

2

x 1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2 x 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

т.е.

остаток от деления x2

равен (x 1),

 

а остаток от деления x1

равен x,

откуда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

1

1

 

 

 

 

 

 

f

2

1

, f 1

 

, a h1

.

 

(7.50)

 

 

 

 

 

 

1

 

 

0

 

 

 

 

 

1

0

 

 

 

 

 

Аналогично:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f 2 2 1

 

 

 

 

 

 

 

 

h2

f 2 2 1

 

f 3

f 2

.

 

 

 

Столбец f 2 вычислен раньше, а столбец f 3 ,

 

как нетрудно показать, ра-

вен

 

 

, поскольку при делении x3

на x2 x 1 получим остаток,

равный 1,

 

0

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

или полином вида (0 x 1).

При кодировании начальной числовой последовательности контрольные разряды, как и для двоичных кодов, вычисляются суммированием по модулю 2 информационных разрядов, которые соответствуют единице в соответ-

544

Глава 7. Кодирование информации

ствующей строке двоичной Н-матрицы или (для обобщенных символов) определяются выражением

k

kT j C j hij iT (mod 2), j 1,..., K,

i 1

где j - номер обобщенного контрольного символа; αi - значение обобщенного информационного символа, записанное в виде матрицы-столбца; hij - символ

подматрицы проверочной Н-матрицы, которая содержится в і-м столбце и j-й (если считать сверху вниз) строке.

Пример 7.19. Вычислим контрольный признак для шестиразрядного (n 6) начального числа, считая, что код должен находить и исправлять

двухразрядные

 

 

 

(b 2)

 

пакеты

 

 

 

 

 

 

искажений,

 

 

 

а

начальное

число

A α1α2α3 11 0110.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Параметры такого кода, как доказано раньше,

 

 

 

 

N 6,

M 3,

k 3, а

проверочная матрица имеет вид формулы (7.48). Тогда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

αTk j C j

hij iT (mod 2),

j 1, 2, 3,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а именно:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

αT C

 

h11

αT

h21

αT

 

 

h31

αT (mod 2) I αT I αT

 

4

 

1

 

1

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

 

 

 

I αT (mod 2) = αT αT

αT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

1

 

 

0

 

 

(mod 2)

1

 

 

 

 

(mod 2)

;

 

3

 

 

 

 

1

2

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

1

 

 

 

0

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

αT C

2

 

h12

αT

h22

αT

 

 

h32

αT

(mod 2) I αT

h1

αT

 

 

5

 

 

 

1

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

1

 

 

 

 

 

 

 

1

1

 

 

 

0

 

 

 

 

0

1

 

 

 

1

 

 

 

 

h2

αT (mod 2)

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(mod 2)

 

 

 

 

 

 

 

3

 

 

0

 

 

1

 

 

 

 

 

1

 

 

 

 

 

 

 

1

0

 

 

 

 

1

 

 

 

 

 

 

 

1

1

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

0

 

(mod 2)

 

0

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

0

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

αT C

 

h123 αT

h23

αT

 

 

h33

αT

(mod 2) I αT h2

αT

 

 

6

3

 

 

1

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

 

 

 

 

 

 

 

 

0

 

 

 

1

 

 

 

 

 

 

 

0

1

 

 

 

0

 

 

 

1

1

 

 

 

1

 

 

 

 

h1

αT3 (mod 2)

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(mod 2)

 

 

 

 

 

 

 

 

 

 

0

 

 

1

 

 

 

 

1

 

 

 

 

 

 

 

1

1

 

 

 

1

 

 

 

 

 

 

1

0

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

1

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

(mod 2)

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

1

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Итак, передаче подлежит код

A α1α2α3α4α5α6 11 0110 00 00 11.

Декодирование РС-кода выполняется в два этапа. На первом этапе рассчитывается так называемый синдром ошибки, т.е. вспомогательная величи-

545

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

на, которая дает возможность устанавливать в дальнейшем факт наличия ошибки, ее место и значение:

SRT H AT.

Пример 7.20. Рассчитать синдром ошибки для закодированного прежде слова, считая, что искажение возникло во втором обобщенном символе и вместо символа α2 01 получен символ = 10. Тогда

 

 

 

 

 

 

 

 

 

 

T

 

 

S3

 

I

I

I

I

0

0

 

1

 

 

 

 

T

 

SRT

 

 

 

 

 

 

 

 

 

 

S2

I

h1

h2

0

I

0

2

.

 

S

 

I

h2

h1

0

0

I

 

 

 

 

1

 

 

 

 

 

 

 

 

T

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

Выполнив все необходимые операции, получим: S

3

 

1

, S

2

 

0

, S

 

1

.

 

 

1

 

 

1

1

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

На втором этапе декодирования РС-кода вычисляется индикатор ошибки - система равенств, которая дает возможность определить место возникновения ошибки.

Если отказ (искажение) возник в разрядах j-го обобщенного символа, то искажение можно подать в виде 0...0Е0...0, где Е - обобщенный b-значный символ, который равняется нулю при отсутствии ошибки и приобретает значения от 0 до (s 1) при ее наличии. Поскольку третья (верхняя) строка Н-

матрицы (7.48) содержит единичные подматрицы, то пакет разрядов синдро-

ма будет S3

содержать единицы в разрядах, которые отвечают искаженным

разрядам пакета ошибки.

 

 

 

 

 

 

 

 

 

В самом деле:

 

 

 

 

 

 

 

 

 

 

k 1

j 1

k 1

αT T

 

 

 

k

 

ET (mod 2).

S αT

αT

ET ) (mod 2) αT αT

3

i

i

i

i

 

 

 

 

i

k 1

 

i 1

i 1

i 1

 

 

 

 

 

 

i 1

 

 

 

k

 

 

 

 

 

 

 

 

 

 

Поскольку iT kT 1 , это

 

 

 

 

 

 

 

 

i 1

 

 

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

0 и S ET.

 

 

 

 

T

T

(mod 2)

 

(7.51)

 

 

i 1

i

k 1

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

Итак, анализируя выражение (7.51), приходим к выводу о наличии (при

S3 0) и значении ошибки. Известно, что место искажения (номер искажен-

ного символа) можно найти из системы уравнений

 

 

 

 

 

S hi1S

3

0, S

2

hi2 S 0,

 

(7.52)

 

 

 

1

 

 

3

 

 

которое называется индикатором искажений. Эта система совместная только

втом случае, когда в і-м обобщенном символе есть искажения.

Кпреимуществам РС-кода следует отнести сопоставимую простоту реализации матричных и модульных операций (поскольку модуль равняется 2)

546

Глава 7. Кодирование информации

при вычислении как синдрома (7.51), так и индикатора (7.52) искажений. Но учитывая большое количество этих операций суммарные аппаратурные затраты могут быть значительными.

Двоичные циклические коды. Циклические коды образовывают класс кодов, которые исправляют ошибки кодирования и декодирования, алгоритм которых основывается на полиномном представлении. Простая реализация этих кодов использует регистры сдвига и логические схемы.

Порождающие и проверочные полиномы. Обозначим С как линейный блочный (n, k) код. Пусть и - сообщение и v - соответствующее ему кодовое

слово кода C . Циклические коды имеют такие свойства, благодаря которым они становятся удобными для аппаратурной реализации. Поставим в соответствие каждому кодовому слову v полином v(x) :

v (v0 , v1,...,vn 1 ) v(x) v0 v1x ...vn 1xn 1.

Переменная x является индикатором относительного положения элемента vi в кодовом слове в виде произведения (монома) vi xi полинома v(x).

Линейный блочный код C является циклическим тогда и только то-

гда, когда любой циклический сдвиг любого кодового слова представляет собой другое (или то же) кодовое слово, т.е.

v(v0 , v1,...,vn 1 ) v(x) v0 v1x ...vn 1xn 1.

Вполиномном представлении циклический сдвиг на одну позицию, обозначенный v(1) (x), соответствует умножению на x по модулю

v(x) C v (x) xv(x)mod(xn 1) C.

Операция циклического сдвига реализуется на регистре сдвига (рис.

7.28).

v0

v1

…..

vn 1

Рис. 7.28. Циклический регистр сдвига

Пример 7.21. Рассмотрим случай n 7. Циклический сдвиг на одну позицию вектора равен v(1) (1010101). В полиномном представлении и двоичной арифметике получаем

v(x)x x3 x5 x6 ,

v(1) (x) xv(x) x2 x4 x6 x7 mod(x7 1)x2 x4 x6 x7 (x7 1) 1 x2 x4 x6 .

547

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

Порождающий многочлен. Важным свойством циклических кодов является то, что все кодовые слова-полиномы кратные одному фиксированному полиному, который называется порождающим полиномом кода. Этот полином (многочлен), как и любой другой, задается своими корнями, которые по обыкновению называют нулями кода. Легко показать, что порождающий

полином g(x) является делителем бинома (xn 1). (По аналогии с целыми числами «a(x) делит b(x)» (иначе a(x) b(x)), если b(x) a(x)q(x) ). Итак, чтобы найти некоторый порождающий многочлен, нужно знать разложение

бинома (xn 1)

на множители

j

(x), j 1,2,..., l.

 

 

 

 

 

 

 

 

(xn 1) (x)

(x).... (x).

(7.53)

 

 

 

1

2

l

 

Заметим, что в двоичной арифметике операции a b и a b (по модулю 2) дают одинаковый результат. Поскольку рассматриваем только двоичные коды или коды над конечными полями характеристики два, т.е. такие, которые используют двоичную арифметику, то в дальнейшем не будем различать

соответствующие операции (знаки «+» и «-»).

 

В результате получаем

 

 

 

g(x)

 

j (x).

(7.54)

 

j J 1,2,...l

 

Пример 7.22. На множестве двоичных многочленов, т.е. полиномов с

коэффициентами из множества Z

{0,1},

бином x7

1 имеет такое расписа-

2

ние:

x7 1 (x 1)(x3 x 1)(x3 x2 1).

Приведем примеры циклических кодов длины 7.

Двоичный циклический код Хэмминга с порождающим полиномом g(x) x3 x 1.

Двоичный циклический код с проверкой на парность порождается поли-

номом g(x) (x 1).

Дуальный код Хэмминга (код максимальной длины) имеет порождающий многочлен g(x) (x 1)(x3 x 1).

Кодирование и декодирование двоичных циклических кодов. Размерность двоичного циклического (n, k) кода

k n deg[g(x)],

где deg[.] - степень аргумента. Поскольку циклический код является

линейным кодом, то любое множество k линейно независимых векторов (кодовых слов) можно взять как порождающую матрицу кода. В частности, дво-

ичные

векторы,

которые

ассоциируются

с

многочленами

g(x), xg(x), ..., xk 1g(x),

линейно независимы. Эти векторы можно использо-

вать как строки порождающей матрицы кода С. В этом случае реализуется

548

Глава 7. Кодирование информации

несистематическое кодирование. Другими словами, сообщение не появляется в неизмененном виде на каких-нибудь позициях кодового слова.

Пример 7.23. Рассмотрим циклический код Хэмминга с порождающим полиномом g(x) x3 x 1 (1101). Порождающая матрица этого кода имеет вид

1

1

0

1

0

0

0

 

 

0 1

1

0 1

0

0

 

G

.

 

0

0

1

1

0

1

0

 

 

0

0

0

1

1

0

1

 

 

 

В другом варианте проверочную часть порождающей матрицы циклического кода можно построить с помощью таких полиномов:

xn 1 mod g(x),

xn k 1 mod g(x) xn k mod g(x).

С их помощью реализуется систематическое кодирование, рассмотренное в приведенном дальше примере.

Пример 7.24. Пусть С - циклический код Хэмминга с порождающим многочленом g(x) x3 x 1. Тогда имеем:

x6

mod(x3

x 1) x2

1,

x5 mod(x3

x 1) x2

x 1,

x4

mod(x3

x 1) x2

x,

x3 mod(x3

x 1) x 1.

Итак, систематическая порождающая матрица кода С имеет вид

1

0

0

0

1

0

1

 

 

0 1

0

0

1

1

1

 

G

.

 

0

0

1

0

1

1

0

 

 

0

0

0

1

0

1

1

 

 

 

Кодирование циклического кода может быть систематическим или несистематическим в зависимости от того, что именно происходит с сообщением.

Несистематическое кодирование

v(x) u(x)g(x).

(7.55)

Систематическое кодирование

 

v(x) xn k u(x) [xn k u(x)mod g(x)].

(7.56)

549