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

ИФПМ (ПРИТ) / Учебник

.pdf
Скачиваний:
71
Добавлен:
30.12.2021
Размер:
3.64 Mб
Скачать

2.Элементы теории кодирования

2.1.Линейные коды

Пусть имеется канал связи, по которому передаѐтся двоичная информация. Если двоичная последовательность разбивается на блоки длины k , которые в соответствии с процедурой кодирования преобразуются в блоки длины n k , то такое кодирование назы-

вается блочным.

Пример 1. Одним из наиболее простых линейных кодов является код проверки на

чѐтность. Двоичная последовательность (a1,..., ak ) длины k преобразуется в двоичную по-

 

k

следовательность (a1,..., ak , ak 1)

длины k 1 , где ak 1 ai . Код проверки на чѐтность по-

 

i 1

 

k 1

зволяет обнаруживать одиночную ошибку. Если в полученном сообщении ai 1, это

 

i 1

свидетельствует о наличии, по крайней мере, одной ошибки (или нечѐтного числа оши-

бок).

Определение 1. Линейным (n, k) -кодом будем называть линейное подпростран-

ство C размерности k в линейном пространстве n .

 

 

 

 

 

 

 

2

 

 

 

 

 

Определение 2. Если v n ,

то весом Хэмминга w(v) вектора v

будем назы-

2

 

 

 

 

 

 

 

вать число его ненулевых координат. Если u,v n , то число d(u,v) w(u v)

будем назы-

 

 

2

 

 

 

 

 

вать расстоянием между векторами u и v .

 

 

 

 

 

 

Определение 3. Число d min d (u,v)

min w(v)

будем называть весом кода C

u,v C

v C,v 0

 

 

 

 

 

и обозначать w(C) .

 

 

 

 

 

 

 

Определение 4. Матрицу G

размера k n , строки которой составлены из ко-

ординат векторов g1,..., gk некоторого базиса кода C ,

будем называть порождающей

матрицей кода C .

 

 

 

 

 

 

 

Определение 5. Пусть u (u ,...,u ), v (v ,...,v )

– элементы пространства n .

1

n

1

n

 

 

 

2

Величину

 

 

 

 

 

 

 

(u,v) u1 v1 ... un vn

(mod 2)

 

 

 

назовѐм их псевдоскалярным произведением. В случае (u,v) 0 элементы u

и v

бу-

дем называть ортогональными. Если C

линейное

подпространство

в

n ,

то

 

 

 

 

 

 

2

 

C u n2

 

для всех v C

(u,v) 0 будем называть ортогональным дополнением для C .

 

 

 

 

41

Очевидно, что C является линейным подпространством. Из курса линейной ал-

гебры известно, что сумма размерностей подпространств C и C равна n .

Заметим, что (u,u) 0 возможно для u 0 , т.е. не выполнена одна из аксиом ска-

лярного произведения. Поэтому произведение (u,v) называется псевдоскалярным.

Определение 6. Пусть C – ортогональное дополнение кода C в пространстве

n2 . Код C называется двойственным к C , а его порождающая матрица H размера

(n k) n называется проверочной матрицей кода C . Очевидно, что v C HvT 0 .

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

тельности (x1, x2 , x3 ) длины 3 сопоставляется двоичная последовательность (x1, x2 , x3, x4 , x5 )

длины 5 по формулам

x4 x1 x2 , x5 x2 x3 .

Тогда код C есть множество решений этой системы линейных однородных урав-

нений ранга 2 с пятью неизвестными. Следовательно, код C имеет размерность 3. Фунда-

ментальную систему решений можно выбрать из векторов

10010 ,

01011 ,

00101 .

Порождающая матрица кода C , таким образом, имеет вид

10010

C01011 .

00101

Ортогональным кодом C будет множество решений систем уравнений x1 x4 0 ,

x2 x4 x5 0 ,

x3 x5 0 .

Фундаментальная система решений имеет вид

11010 ,

01101 .

Таким образом, проверочная матрица кода C есть

11010

H 01101 .

Код C есть линейный (5, 3)-код.

42

Путѐм переименования переменных x1,..., xn и линейных преобразований над стро-

ками матрицы H всегда можно добиться, чтобы проверочная матрица имела бы вид

H0 P, In k , где In k – единичная подматрица. В рассматриваемом примере H H0 . По-

рождающая матрица может быть задана в виде G0 Ik , P .

 

 

 

 

 

 

 

 

Связь между проверочной и порождающей матрицей устанавливается в следующем

утверждении.

 

 

 

 

 

 

 

 

 

 

 

 

Предложение 1. Если

 

H0 P, In k – проверочная матрица

(n, k) -кода

C ,

то

G I

k

, PT – его порождающая матрица.

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Наоборот, если G I

k

, P – порождающая матрица кода, то

H

0

PT , I

 

 

 

 

0

 

 

 

 

 

 

n k

его проверочная матрица.

 

 

 

 

 

 

 

 

 

 

 

 

Доказательство. Нужно лишь проверить, что H

0

GT 0 .

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

Предложение 2. Вес линейного (n, k) -кода C равен d любые (d 1) столбцов

проверочной матрицы линейно независимы, но некоторые d столбцов линейно зависимы.

Доказательство. ( ) . Допустим противное. Пусть столбцы с номерами

i1 i2 ... id 1 линейно зависимы. Тогда, взяв вектор v с единицами на указанных местах и нулями на остальных, получим, что H vT 0 . Но тогда v – кодовое слово с весом, мень-

шим d . Противоречие.

( ) . Любой вектор веса меньше d не может быть кодовым словом, и существует вектор v веса d , являющийся кодовым словом.

Предложение доказано.

Следствие. d n k 1.

Доказательство. Число линейно независимых столбцов не превосходит числа строк матрицы H . Поэтому d 1 n k .

Предложение 3. Линейный код C обнаруживает t ошибок вес кода t 1.

Линейный код C исправляет t ошибок вес кода 2t 1 .

Доказательство. Действительно, если вес кода равен m t , то найдутся два кодо-

вых слова u и v , расстояние между которыми равно m . Тогда, сделав m ошибок, воз-

можно, вместо кодового слова u на приѐме получим слово v . Но тогда, получив кодовое слово, не будет оснований утверждать наличие ошибок. Если же вес кода не менее чем t 1, то при наличии не более t ошибок на приѐме не получим кодового слова и, таким образом, сможем констатировать наличие ошибок.

43

Далее, пусть w(C) 2t 1 . Если u C , то множество

B(u, r)

v n2

 

d (u,v) r на-

 

зовѐм шаром радиуса r с центром в точке u . Очевидно,

что если u,v C, u v , то шары

B(u,t) и B(v,t) не могут пересекаться. Поэтому,

если в слове u сделано не более чем t

ошибок, то полученное слово

 

 

останется

в шаре

B(u,t)

и его

 

декодируем

u

 

как u , т.е. ошибки будут исправлены.

Если же

w(C) 2t ,

то некоторые шары B(u,t) и

B(v,t) могут пересекаться и тогда слово u , после того как в нѐм сделано t ошибок, может попасть в шар B(v,t) . В этом случае не получится его правильно декодировать.

Предложение доказано.

Общая процедура декодирования линейного кода C состоит в следующем. Если имеется линейный (n, k) -код, то абелеву группу n2 раскладываем в смежные классы по подгруппе C . В каждом смежном классе выбираем слово наименьшего веса ei . Если в данном смежном классе несколько слов наименьшего веса, выбираем любое из них. Вы-

бранное слово называется лидером. Если на приѐм поступило слово v и это слово содер-

жится в i -м смежном классе, то декодируем его как u v ei . Таким образом, данный код будет исправлять в точности те ошибки, которые совпадают с лидерами смежных классов.

Пример 2 (продолжение). Разложение абелевой группы n2 по подгруппе C име-

ет следующий вид:

00000 00001 00010 01000

10010 10011 10000 11010

01011 01010 01001 00011

00101 00100 00111 01101

11001 11000 11011 10001

10111 10110 10101 11111

01110 01111 01100 00110

11100 11101 11110 10100

Лидеры смежных классов расположены в первой строчке. Допустим, что на вход поступает слово u (101) . Сначала оно кодируется как v u G (10111) . Предположим, что при передаче по каналу связи во втором разряде была допущена ошибка и на приѐме по-

лучено слово v (11111) . Это слово содержится в четвѐртом смежном классе, поэтому при декодировании к нему прибавляется лидер этого смежного класса: (01000) . В результате получаем слово v (10111) , которое после отсечения последних двух разрядов будет рав-

но u (101) . Таким образом, ошибка исправлена.

Для того чтобы исправить одну ошибку, можно действовать и по-другому. Если умножить проверочную матрицу H на вектор v , то получится слово (11) . Оно называет-

44

ся синдромом и равно тому столбцу проверочной матрицы, в котором допущена ошибка.

В данном случае слово (11) совпадает со вторым столбцом матрицы H , поэтому в слове v нужно исправить второй разряд.

Заметим, что если бы ошибка произошла на первом или третьем разрядах, то слово было бы декодировано неправильно. Это свидетельствует о том, что данный код ещѐ очень мало эффективен в плане исправления ошибок. Далее будут описаны более эффек-

тивные коды.

Задачи

Линейный (5, 2) -код задан порождающей матрицей G . Найдите проверочную мат-

рицу. Определите вес кода. Сколько ошибок обнаруживает и сколько ошибок исправляет такой код? Найдите разложение 52 в смежные классы по подгруппе C . Выберите лидеры смежных классов. Ошибки в каких разрядах могут быть исправлены?

10011

1. G .

01100

10011

2. G .

01101

10110

3.G .

01111

4.Коды C и C называются эквивалентными, если существует взаимно однознач-

ное отображение f :C C , сохраняющее расстояния между словами. Какие из кодов в примерах 1 – 3 эквивалентны?

5. Линейный (6,3) -код задан порождающей матрицей G

100011

G 010101 .001110

Найдите проверочную матрицу. Определите вес кода. Сколько ошибок обнаружи-

вает и сколько ошибок исправляет такой код?

2.2. Коды Хэмминга

Определение 1. Максимальное число точек пространства n2 , попарные рас-

стояния между которыми не меньше s , обозначим A(n, s) .

45

Предложение 1. Справедливо неравенство Хэмминга:

 

A(n, 2t 1)

 

2n

 

 

.

 

 

 

 

1 C1 ... Ct

 

 

 

 

 

 

n

 

n

 

 

 

Доказательство. Число точек в шаре радиуса t

равно 1 C1 ... Ct

. Действитель-

 

 

 

 

 

 

 

n

n

 

но, если v

– центр шара, то эта точка принадлежит шару. Существует C1

точек, отстоя-

 

 

 

 

 

 

 

 

n

 

щих от v

на расстоянии 1, так как в v можно изменить одну координату C1 способами.

 

 

 

 

 

 

 

 

 

n

Существует C 2 точек, отстоящих от v на расстоянии 2, и т.д.:

 

 

 

 

n

 

 

 

 

 

 

 

A(n, 2t 1) (1 C1 ... Ct ) 2n ,

 

 

 

 

n

 

n

 

 

 

так как шары не пересекаются.

 

 

 

 

 

 

Определение 2. Линейный n, k -код C веса

2t 1 называется совершенным, ес-

ли

 

 

 

 

 

 

 

 

 

 

A(n, 2t 1) 2k

 

2n

.

 

 

 

 

 

... Ct

 

 

 

 

1 C1

 

 

 

 

 

 

 

n

 

 

n

 

 

 

Таким образом, для совершенного кода неравенство Хэмминга превращается в ра-

венство.

 

 

 

 

 

 

 

 

 

Код Хэмминга, исправляющий одну ошибку,

– это линейный

(n, k) -код, где

n 2m 1, k 2m m 1 ( m – некоторое натуральное число).

 

 

 

Проверочная матрица H этого кода имеет размеры m (2m 1)

и представляет со-

бой двоичную запись натуральных чисел 1, 2,3,..., 2m 1, расположенных по столбцам. На-

пример, для m 3

0001111

H0110011 .1010101

Если была допущена одна ошибка и на приѐм поступило слово u , то вектор HuT

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

Определение 3. Отношение

R

 

k

 

 

для блочного

 

(n, k) -кода называется скоро-

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

стью передачи.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для кода Хэмминга R

2m m 1

1

 

 

 

m

 

1

при m

.

2m 1

 

2m 1

 

 

 

 

 

 

 

 

 

 

Код Хэмминга является совершенным (при t 1) , так как

 

 

 

2n

 

2m 1

22m m 1

,

 

 

 

 

 

 

 

 

 

 

1 C1

 

 

 

2m

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

46

 

 

 

 

 

 

а 2m m 1 k – размерность пространства кодовых слов.

Вес кода Хэмминга d 3, так как в проверочной матрице нет одинаковых столбцов,

т.е. любые два столбца линейно независимы, и существуют 3 столбца, которые линейно зависимы, например сумма первых двух столбцов равна третьему.

Задачи

Запишите проверочную матрицу для (15,11) -кода Хэмминга. Известно, что в при-

нятом слове u допущена одна ошибка. Исправьте еѐ.

1.u (000111000111000) .

2.u (100100100100100) .

3.u (000000001111111) .

 

 

 

 

 

 

 

 

 

2.3. Циклические коды

 

 

 

 

 

 

 

 

Определение 1. Линейный

(n, k) -код называется циклическим,

если вместе с

вектором (a0 , a1,..., an 1)

он всегда содержит вектор (an 1, a0 , a1,..., an 2 ) .

 

 

 

 

Каждому кодовому слову (a0 , a1,..., an 1) линейного (n, k) -кода сопоставим много-

член a a x ... a

xn 1

(над

2

).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Предложение 1. Линейный (n, k) -код C является циклическим множество со-

ответствующих многочленов образует идеал в кольце

2

[x] / (xn 1) .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Доказательство. Пусть код C – циклический. Тогда множество соответствующих

многочленов

образуют

абелеву

 

группу

I .

 

 

Если

 

 

(a0 ,..., an 1) C ,

то

f (x) a

a x ... a

 

xn 1 I

.

Тогда

x(a

a x ... a

 

xn 1 a

 

a x ... a

xn 1 .

По-

0

 

1

n 1

 

 

 

 

 

 

0

1

n 2

 

 

n 1

 

0

n 2

 

 

 

скольку (an 1, a0 ,..., an 2 ) C ,

то xf (x) I . Следовательно, I

– идеал.

 

 

 

 

 

 

Обратно,

если

I

идеал,

 

f (x) a a x ... a

xn 1

I ,

(a ,..., a

 

) C ,

то

 

 

 

 

 

 

 

 

 

 

 

 

0

1

 

 

n 1

 

 

 

0

n 1

 

 

xf (x) a

 

a x ... a

xn 1

I , т.е. (a

 

, a ,..., a

) C и, значит, код

C – циклический.

n 1

0

 

 

n 2

 

 

 

n 1

0

n 2

 

 

 

 

 

 

 

 

 

 

 

 

Предложение доказано.

Определение 2. Многочлен g(x) наименьшей степени, порождающий идеал мно-

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

кода.

47

 

Теорема 1. Пусть g(x) g

0

g x ... g

n k

xn k , (g

, g

n k

0) – порождающий многочлен

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

циклического кода C . Тогда матрица

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

g0

g1

 

g2

 

...

gn k

 

0

 

 

 

 

 

0

 

 

...

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

... gn k 1

 

gn k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

g0

g1

 

 

 

0

 

 

...

0

 

 

 

 

 

 

 

G 0

 

0

 

g

0

 

...

g

n k

2

 

g

n k 1

g

n k

...

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

... ... ...

 

... ...

 

 

 

...

 

 

 

 

...

 

...

...

 

 

 

 

 

 

 

 

 

 

0

 

0

 

 

...

0

 

 

 

 

 

g0

 

 

 

g1

 

...

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

gn k

 

 

 

размера

k n

является

 

порождающей

 

 

матрицей

 

кода

C .

Пусть

h(x)

xn 1

h

h x ... h xk . Тогда матрица

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

g(x)

0

1

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

 

 

...

0

 

 

hk

 

 

 

hk 1

...

h1

h0

 

 

 

 

 

 

 

 

 

 

 

0

 

0

 

 

...

hk

 

hk 1

 

hk 2

...

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

H ... ...

 

 

... ... ...

 

 

 

...

 

... ...

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hk

 

hk 1

 

...

h1

 

 

h0

 

 

 

0

 

...

0

0

 

 

 

 

 

 

размера (n k) n

– проверочная матрица кода. Размерность кода совпадает со

степенью h(x) .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Доказательство. Строки матрицы G линейно независимы,

так как gn k 0 . Если

f (x) – многочлен кода

C ,

то

deg f (x) n

и f (x)

 

делится на

g(x) в обычном смысле.

Пусть

f (x) g(x) u(x) ,

где

u(x) u

u x ... u xm .

 

Тогда

0 m k 1

и

f (x) u

g(x)

 

 

 

 

 

 

 

 

 

0

 

 

1

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

u xg(x) ... u (xm g(x) . Значит,

строки матрицы G действительно образуют базис кода

1

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Умножим i -ю строчку матрицы G на j -ю строчку матрицы H

 

 

 

 

 

 

 

 

 

 

 

 

i

:

0...0 g

0

g ...g

n k

 

0...0

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

G

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i 1

k i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n k 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

:

0...0 h h

...h

 

0...0 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

H

 

k

k 1

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n k j

j 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Получим сумму вида

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

gs ht

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s t m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

что представляет

собой

коэффициент

 

при

 

 

 

xm

в

 

произведении

многочленов

g(x) h(x) xn 1, причѐм

1 m n 1 , так как произведение последних строк будет равно

g0h1 g1h0 , т.е.

m 1, а произведение первых строк равно gn k 1 hk gn k hk 1 , т.е. m n 1.

 

Теорема доказана.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример 1. Многочлен x7 1 раскладывается на множители следующим образом:

 

 

 

 

 

 

 

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

1) .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

48

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

рочный многочлен будет равен h(x)

 

x7

1

 

(x 1)(x3 x2 1)

x4 x2 x 1. В этом

x3 x 1

 

 

 

 

случае n 7 , deg g(x) 3, k n deg g(x) 4 . Тогда порождающая матрица кода имеет вид

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

 

 

 

Проверочная матрица будет такой

 

 

 

 

 

 

 

0

0

1

0

1

1

1

 

 

 

1 1

1

0

 

H 0 1 0

.

 

0

1

1

1

0

0

 

1

 

Поскольку в матрице H нет одинаковых столбцов, любые два столбца линейно не-

зависимы. Сумма первого, второго и четвѐртого столбцов равна нулю, поэтому сущест-

вуют три столбца, которые линейно зависимы. Следовательно, вес кода равен 3 и поэтому этот код исправляет одну ошибку. Рассмотрим процедуру кодирования и декодирования.

Поскольку имеем дело с (7, 4) -кодом, при кодировании слова длины 4 преобразуются в слова длины 7. Рассмотрим слово u (1010) . Ему соответствует кодовый многочлен x2 1 .

Кодирование состоит в умножении на порождающий многочлен:

v(x) u(x)g(x) (x2 1)(x3 x 1) x5 x2 x 1.

Допустим, в процессе передачи произошла одна ошибка и на приѐме вместо много-

члена v(x) получили v(x) x5 x 1. Чтобы иметь возможность исправлять одну ошибку,

нужно составить таблицу синдромов ошибок. Выражение xk будем называть локатором ошибки. Синдром ошибки получается при умножении локатора ошибки на проверочный

многочлен (все умножения производятся в фактор-кольце

2

[x] / (x7

1) ). В результате по-

 

 

 

 

 

 

лучается следующая таблица синдромов ошибок:

 

 

 

 

 

 

 

 

 

 

 

Локатор

Синдром

 

 

 

 

 

1

x4 x2 x 1

 

 

 

 

 

x

x5 x3 x2 x

 

 

 

 

 

x2

x6 x4 x3 x2

 

 

 

 

 

x3

x5 x4 x3 1

 

 

 

 

 

x4

x6 x5 x4 x

 

 

 

 

 

x5

x6 x5 x2 1

 

 

 

 

 

x6

x6 x3 x 1

 

 

 

 

 

 

49

 

 

 

 

Умножая полученный многочлен v(x) на h(x) , получаем

 

(x5 x 1)(x4 x2 x 1) x9 x7 x6 x4 x3 1

 

x6 x4 x3 x2.

Далее

по таблице находим локатор ошибки x2 . Исправленный многочлен

v(x) x(x) x2 .

Процесс декодирования завершается делением многочлена v(x) на g(x) .

Так выглядит процесс кодирования и декодирования для циклических кодов.

Задачи

Пусть циклический код задаѐтся порождающим многочленом g(x) . Найдите про-

верочный многочлен, порождающую и проверочную матрицы. Определите вес кода.

1.g(x) x4 x3 x2 1 2[x] / (x7 1) .

2.g(x) x3 x2 1 2[x] / (x7 1) .

2.4.БЧХ-коды

Рассмотрим самую простую конструкцию БЧХ-кода. Допустим, надо построить код с минимальным расстоянием не менее d 2 . Потребуется следующий факт из линей-

ной алгебры.

Предложение 1. Если x1, x2 ,..., xn – элементы некоторого поля, то

 

1

 

1

...

1

 

 

 

x1

 

x2

...

xn

 

 

 

x12

 

x22

...

xn2

(xi x j ) .

 

 

...

 

...

... ...

i j

 

 

 

 

 

 

xn 1

xn 1

... xn 1

 

 

 

1

 

2

 

n

 

 

Определение 1. Определитель ,

указанный в предложении 1, называется оп-

ределителем Вандермонда.

 

 

 

 

 

 

Если все элементы x1, x2 ,..., xn

различны,

то определитель Вандермонда отличен от

нуля.

 

 

 

 

 

 

Теорема 1. Пусть число r

такое,

что 2r d 1, где d 2 . Пусть

GF (2r )

примитивный элемент. Пусть m1(x)

– минимальный многочлен для , m2 (x)

– минималь-

50

Соседние файлы в папке ИФПМ (ПРИТ)