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

Березкин Основы теории информации и кодирования 2010

.pdf
Скачиваний:
1364
Добавлен:
16.08.2013
Размер:
3.57 Mб
Скачать

соответствующий целой части, должен делиться на g(x) , никаких

оснований нет.

Таким образом, многочлен g(x) должен быть делителем

xn 1, чтобы породить идеал или циклический код: xn 1 0 mod g(x) .

Поскольку для кольца справедливы все свойства группы, а для идеала – подгруппы, то R можно разложить на смежные классы, которые в данном случае называются классами вычетов по идеа-

лу.

Рассмотрим пример. Пусть имеется кольцо многочленов R со степенью меньше или равной 2, соответствующее кольцу трехраз-

рядных двоичных чисел (табл. 10.2). Делителями P0 (x) x3 1

являются x 1 и x2 x 1, так что в качестве порождающего многочлена можно выбрать

g1 (x) x 1,

g2 (x) x2 x 1.

Проведем теперь разложение кольца многочленов R по идеа-

лам с порождающими многочленами g1 (x)

и g2 (x) .

 

 

 

 

 

 

 

Таблица 10.2

Двоичные

Многочлен

 

Остатки от деления G j (x)

на

числа

G j (x)

 

 

 

 

 

 

g1

(x) x 1

 

g2 (x) x

2

x 1

 

 

 

 

000

0

 

0

 

0

 

 

001

1

 

1

 

1

 

 

010

x

 

1

 

x

 

 

011

x 1

 

0

 

x 1

100

x2

 

1

 

x 1

101

x2 1

 

0

 

x

 

 

110

x2 x

 

0

 

1

 

 

111

x2 x 1

 

1

 

0

 

 

Первую строку разложения образует идеал, причем нулевой элемент располагается крайним слева. В качестве образующего

231

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

Разложение R по идеалу с g1 (x) дает два класса вычетов:

0

x 1

x2 1

x2 x

1

x

x2

x2 x 1

Разложение R по идеалу с g2 (x) дает четыре класса вычетов:

0

x2 x 1

1

x2 x

x

x

2

1

 

 

x 1

 

x2

В общем случае число элементов идеала, порожденного многочленом g(x) степени n k , равно 2k , а число классов вычетов по

этому идеалу равно 2n 2n k .

2k

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

вых многочленов на многочлен g(x) .

Наибольшее число остатков, число классов вычетов по идеалу,

равное 2n k 1, исключая нулевой многочлен, может обеспечить только неприводимый многочлен с deg g(x) n k .

10.5.ЦИКЛИЧЕСКИЙ КОД, ОБНАРУЖИВАЮЩИЙ

ИИСПРАВЛЯЮЩИЙ ОШИБКИ

Любая принятая по каналу связи кодовая комбинация G'j (x) ,

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

ческого кода Gj (x) и вектора ошибки E j (x) :

G'j (x) G j (x) E j (x) .

При делении G'j (x) на образующий многочлен g(x) остаток,

232

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

случае, если многочлен

E j (x) не делится на

g(x) , так как неис-

каженная комбинация Gj (x) на g(x) делится без остатка.

 

 

Ej (x)

 

 

Gj (x)

 

 

 

 

G'j (x)

 

 

Канал

 

 

Рис. 10.9. Канал с шумом

По заданному объему кода однозначно определяется число информационных разрядов k . Далее необходимо найти наименьшее n , обеспечивающее обнаружение или исправление ошибок заданной кратности. В случае циклического кода эта проблема сводится к нахождению нужного многочлена g(x) .

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

10.5.1. Циклический код, обнаруживающий одиночные ошибки

Вектор единичной ошибки будет иметь 1 в искаженном разряде и 0 во всех остальных разрядах. Следовательно, вектору единичной

ошибки E j (0,0,...,1,...,0)

соответствует многочлен E j (x) xi 1 .

i разряд

 

Он не должен делиться на

g(x) . Среди неприводимых многочле-

нов в разложении xn 1 минимальная степень у многочлена x 1. Остаток от деления на x 1 равен 0 или 1. В этом случае кольцо разбивается на два смежных класса: идеал с порождающим многочленом и класс вычетов. Таким образом, при любом k необходим только один проверочный разряд и n k 1.

Значение символа в этом контрольном разряде обеспечивает четность числа единиц в любой разрешенной кодовой комбинации, а, следовательно, и делимость ее многочлена на x 1. Полученный циклический код способен обнаруживать не только все одиночные ошибки, но и ошибки в любом нечетном числе разрядов.

Например, при n 4 и k 3 образующая матрица циклического кода имеет вид

233

M 4,3

 

0

0

1

:

1

 

.

 

 

 

0

1

0

:

1

 

 

 

1

0

0

:

1

 

 

10.5.2.Циклический код, исправляющий одиночные ошибки

иобнаруживающий двойные

Ошибку можно исправить, если каждой единичной ошибке в любом разряде сопоставить свой класс вычетов и свой опознаватель. В циклическом коде опознаватель – это остаток от деления

многочлена E j (x) на g(x) . Поэтому g(x) должен обеспечить

требуемое число различных остатков или классов вычетов. Наибольшее число остатков дает неприводимый многочлен степени n k . В этом случае число смежных классов, исключая идеал,

равно 2n k 1.

Необходимое условие исправления любой одиночной ошибки есть 2n k 1 n . Отсюда находится deg g(x) n k log2 (n 1) . Несколько значений n, k сведены в табл. 10.3, учитывающие усло-

вие xn 1 0 mod g(x) .

Таблица 10.3

m n k

2

3

4

5

6

7

8

9

10

n

3

7

15

31

63

127

255

511

1023

k

1

4

11

26

57

120

247

502

1013

Можно показать, что любой двучлен xn 1 x2m 1 1 может быть представлен произведением всех без исключения неприводимых многочленов, степени которых являются делителями числа m , от 1 до m включительно.

Так для n 15, k 11, m 4 двучлен x15 1 можно записать в

виде произведения всех неприводимых многочленов, степени которых являются делителями числа m 4 , т.е. 1, 2, 4. Существует таблица неприводимых многочленов. В ней находим один много-

член первой степени x 1, один второй x2 x 1, три четвертой: x4 x 1, x4 x3 1, x4 x3 x2 x 1. Таким образом,

234

x15 1 (x 1)(x2 x 1)(x4 x 1)(x4 x3 1)(x4 x3 x2 x 1) .

Один из этих сомножителей может быть принят за образующий многочлен кода (порождающий многочлен идеала). Возьмем

x4 x3 1 11001. Необходимо убедиться, что каждому вектору одиночных ошибок соответствует свой остаток. Проще всего найти все остатки от деления на g(x) , если взять код 1000…00 и начать

делить его на 11001, выписывая все промежуточные остатки:

1000000000000000...

 

11001

Остатки:

11001

 

 

1.1001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.1011

 

 

 

10010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11001

3.1111

 

 

 

 

 

 

 

 

 

 

4. 0111

10110

 

 

 

 

 

 

 

 

 

 

11001

5.1110

 

 

 

 

 

 

 

 

6. 0101

 

 

 

11110

 

 

 

 

 

 

 

 

11001

...

 

...

 

 

 

 

 

 

 

 

15.1000

При последующем делении остатки повторяются.

С тем же успехом можно использовать многочлен x4 x 1.

Многочлен же x4 x3 x2 x 1 использовать нельзя, так как при проверке числа различных остатков обнаруживается, что их у него не 15, а только 5:

1000000000000000...

 

 

11111

Остатки:

11111

 

 

 

1.1111

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. 0001

 

 

 

 

 

 

 

 

 

 

 

 

11110

 

 

 

 

 

 

 

 

11111

3. 0010

 

 

 

 

 

 

 

 

4. 0100

 

10

 

 

 

 

 

 

100

 

 

 

 

 

5.1000

 

 

 

 

 

 

 

1000

 

 

 

 

 

 

1000011111

11110

...

235

Этот факт объясняется тем, что многочлен x4 x3 x2 x 1 входит не только в разложение x15 1 , но и в разложение x5 1 (x 1)(x4 x3 x2 x 1) .

Поэтому целесообразно выбирать такой многочлен g(x) , который, являясь делителем xn 1, не входит ни в одно разложение ни

одного двучлена xr 1, для которого r n . Другими словами, многочлен g(x) должен быть не только неприводимым, но еще и

примитивным. Если g(x) неприводим и примитивен, то говорят,

что он принадлежит максимальному показателю e 2n k 1 : xe 1 0 mod g(x) .

В табл. 10.4 приведены основные характеристики некоторых циклических кодов Хэмминга, способных исправлять одиночные ошибки или обнаруживать все одиночные и двойные ошибки.

(n, k)

 

 

Таблица 10.4

m n k

 

g(x)

(3,1)

2

 

x2 x 1

(7,4)

3

x3

x 1,

x3 x2 1

(15,11)

4

x4

x 1,

x4 x3 1

(31,26)

5

x5 x2 1,

x5 x3 1

Многочлен, соответствующий вектору двойной ошибки, имеет

вид

E(x) xi x j xi (x j i 1), j i . Поскольку

j i n , а

g(x)

не кратен x и принадлежит показателю степени n , то E(x)

не делится на g(x) , что и позволяет обнаружить двойные ошибки.

10.5.3. Обнаружение ошибок высокой кратности

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

но воспользоваться правилом Хэмминга. Если gs 1 (x) – порождающий многочлен кода, обнаруживающего ошибки кратности

236

s 1, то порождающий многочлен кода, обнаруживающего ошибки кратности s , равен gs (x) gs 1 (x)(x 1) .

Умножение gs 1 (x) на x 1 равносильно введению дополни-

тельной проверки на четность. При этом число символов в комбинациях кода за счет добавления еще одного проверочного символа увеличивается до n 1.

10.5.4. Исправление ошибок высокой кратности

Процедуру отыскания порождающего многочлена кода, исправляющего s - кратные ошибки, можно представить как итеративный процесс:

1. По заданному числу информационных символов k1 подбирается n1 , т.е. определяются параметры (n1 , k1 ) кода, исправляющего одиночные ошибки;

2.Полученное значение n1 интерпретируется как новое значение k2 , и п.1 повторяется;

3.Повторяя п.1 и п.2 s раз, получим длину кодовой комбинации ns циклического кода, исправляющего ошибки кратности до

sвключительно;

4.По заданному значению k1 и значению ns можно определить

степень порождающего многочлена m ns k1 , а по таблице не-

приводимых и примитивных многочленов выбрать подходящий gs (x) .

Найденный таким образом gs (x)

порождает неоптимальный, с

точки зрения числа

проверочных

символов, циклический код

(ns , k1 ) . Более того,

s - кратные ошибки исправляются только в

информационных разрядах k1 . Это не всегда приемлемо.

10.5.5. Обнаружение пакетов ошибок

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

237

l n k .

Пакет ошибок в n k разрядов описывается многочленом степени xi (xn k 1 xn k 2 ... 1) . Многочлен же степени n k 1 на многочлен степени n k не делится.

10.5.6. Параметры некоторых циклических кодов

Циклический код длиной n 2n k 1, порождаемый неприводимым многочленом степени n k , исправляет однократные ошибки и называется циклическим кодом Хэмминга. Таблица примитивных многочленов различной степени частично приводилась.

Наилучшими из известных циклических кодов для исправления независимых ошибок произвольной кратности являются коды Бо- уза–Чоудхури–Хоквингема (БЧХ) [7]. В этих кодах число прове-

рочных разрядов n k deg g(x) mt при длине кода n 2m 1 ,

где t количество независимых исправляемых ошибок, а m любое целое число.

Образующий полином кода БЧХ является наименьшим общим кратным (НОК) так называемых минимальных многочленов Fi (x) ,

максимальный порядок которых равен d 2 :

g(x) НОК{F1 (x),..., Fi (x),..., F (x)}, где d 2t 1, а i 1,3,5,..., .

ОПРЕДЕЛЕНИЕ 10.12.

Пусть GF(q) – некоторое поле,

GF(Q) – расширение поля

GF(q) , построенное по неприводи-

мому многочлену P(z) степени n , и – элемент GF(Q) . Тогда

простой многочлен

F(x) наименьшей степени, для которого

F( ) mod P(z) 0 ,

называется минимальным многочленом эле-

мента .

 

ОПРЕДЕЛЕНИЕ 10.13. Примитивный элемент поля GF(Q)

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

238

GF (2 4 ) .

В табл. 10.5 задано представление поля GF(24 ) как расширение поля GF(2) , построенное по примитивному многочлену P(z) z4 z 1 . Очевидно, что таблица сформирована для случая, когда m 4 . В нее включены также минимальные многочлены над GF(2) для всех элементов из поля

 

 

 

 

 

 

 

 

Таблица 10.5

 

 

 

Поле GF (24 ) в виде

 

Минимальные многочлены

 

 

 

 

 

 

 

 

 

при i

 

 

 

степени

 

многочлена

 

 

кода

 

 

 

 

0

 

0

 

 

0000

 

 

 

 

 

 

 

1

 

 

0001

 

x 1

 

 

 

1

 

z

 

 

0010

F1(x) x4 x 1

 

 

 

2

 

z2

 

 

0100

 

x4 x 1

 

 

 

3

 

z3

 

 

1000

F3 (x) x4 x3 x2 x 1

 

 

4

 

z 1

 

 

0011

 

x4 x 1

 

 

 

5

 

z2 z

 

 

0110

F5 (x) x2 x 1

 

 

 

6

 

z3 z2

 

 

1100

 

x4 x3 x2 x 1

 

 

 

7

 

z3 z 1

 

 

1011

F7 (x) x4 x3 1

 

 

 

8

 

z2 1

 

 

0101

 

x4 x 1

 

 

 

9

 

z3 z

 

 

1010

 

x4 x3 x2 x 1

 

 

 

10

 

z2 z 1

 

 

0111

 

x2 x 1

 

 

 

11

 

z3 z2 z

 

 

1110

 

x4 x3 1

 

 

 

12

 

z3 z2 z 1

 

 

1111

 

x4 x3 x2 x 1

 

 

 

13

 

z3 z2 1

 

 

1101

 

x4 x3 1

 

 

 

14

 

z3 1

 

 

1001

 

x4 x3 1

 

 

 

Пусть

z3

элемент

GF (2 4 ) .

Тогда

F(x) x4 x3

x2 x 1

минимальный многочлен элемента z3 ,

239

так как F( )modP(z) [(z3 )4 (z3 )3 (z3 )2

(z3 ) 1]mod(z4 z 1) 0 .

Коды БЧХ строятся по заданным n

и t . Значение k (число

информационных разрядов) неизвестно, пока не найден порождающий многочлен кода g(x) .

 

Значения

минимальных

многочленов

для степени m 2 6

приведены в табл. 10.6 [8].

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 10.6

 

 

 

m

 

 

2

3

 

4

 

 

5

 

 

6 ( t )

 

 

 

1

 

111 (1)

1011 (1)

 

10011

(1)

 

100101

(1)

 

1000011

(1)

 

 

 

3

 

 

1101 (3)

 

11111

(2)

 

111101

(2)

 

1010111

(2)

 

 

 

5

 

 

1

 

111

(3)

 

110111

(3)

 

1100111

(3)

 

 

i

7

 

 

 

 

11001

(7)

 

101111

(5)

 

1001001

(4)

 

 

9

 

 

 

 

1

 

 

101001

(7)

 

1101

(5)

 

 

 

11

 

 

 

 

1

 

 

111011

(15)

 

1101101

(6)

 

 

 

13

 

 

 

 

1

 

 

1

 

 

1011011

(7)

 

 

 

15

 

 

 

 

 

 

 

1

 

 

1110101

(10)

 

 

 

17

 

 

 

 

 

 

 

 

 

 

1100111

(10)

 

 

 

19

 

 

 

 

 

 

 

 

 

 

1011011

(10)

 

 

Например, порождающий многочлен кода длины

n 15 , слу-

жащий для исправления трехкратных ошибок t 3 , имеет вид g(x) НОК{F1 (x) 10011, F3 (x) 11111, F5 (x) 111}

x10 x8 x5 x4 x2 x 1.

Циклический код БЧХ (15,5) имеет k 5 информационных разрядов и полностью определяется порождающей матрицей:

00001 : 0100110111

00010 : 1001101110 M15,5 00100 : 0111101011 .

01000 : 1111010110

10000 : 1010011011

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

имеет вид g(x) p(x)(xc 1) , где p(x) – неприводимый много-

240

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]