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

Книги и конспекты / Горьковой Дискретная Математика

.pdf
Скачиваний:
154
Добавлен:
28.05.2022
Размер:
1.1 Mб
Скачать

{X

3g(X)}

=

(1101000),

 

1101000

 

{X

2g(X)}

=

(0110100),

0110100

{g X }

=

(0011010),

 

0011010

 

{Xg(X)}

G =

 

 

 

 

 

 

 

 

 

( )

=

(0001101),

 

0001101

 

можно выбрать в качестве базисных векторов, и, следовательно, матрицу G можно выбрать в качестве порождающей матрицы для этого кода. Этот код яыляется нулевым подпространством идеала, порожденного многочленом h(X) = (X − 1)(X3 + X + 1) = X4 +

X3 + X2 + 1:

{X2h(X)} =

(1110100),

{Xh(X)}

=

(0111010),

{h(X)}

=

(0011101).

Рассматриваемый код является нулевым подпространством

матрицы H, образованной

векторами {X2h(X)}, {Xh(X)} и

{h(X)}, компоненты которых записаны в обратном порядке:

H = 0 1 0 1 1 1 0

 

0 0 1 0 1 1 1

 

1 0 1 1 1 0 0

 

 

 

Легко проверить, что GHT = 0.

Другой способ задания циклических кодов основан на использовании корней (которые, возможно, лежат в расширении поля) многочлена g(X), порождающего идеал. Предположим, во-первых, что все корни α1, α2, ..., αr многочлена g(X) различны. Тогда циклический код полностью определяется условием: вектор {f (X)} принадлежит коду тогда и только тогда, когда α1, α2, ..., αr — корни многочлена f (X). Если обозначить через mi(X) минимальную функцию для αi, то вектор {f (X)} является кодовым вектором тогда и только тогда, когда многочлен f (X) делится на m1(X), m2(X), ..., mr (X) и, следовательно, на их наименьшее общее кратное. Поэтому код является идеалом, порожденным многочленом

g(X) = НОК[m1(X), m2(X), ..., mr (X)].

Так как многочлен Xn − 1 должен делится на многочлен g(X), то элементы α1, α2, ..., αr должны быть корнями многочлена Xn − 1,

136

ui q2

и, следовательно, число n должно делится на порядок каждого из элементов αi. Таким образом, n можно выбирать равным наименьшему общему кратному порядков элемента αi, так как при таком выборе n каждый элемент αi является корнем многочлена Xn − 1 и этот многочлен делится на g(X) без остатка.

Если корни задаются как степени одного и того же элемента α порядка e, т.е. если установлено, что αi = αui , где ui — заданные целые числа, то число сомножителей и степень каждого из них в разложении многочлена g(X) для целых e и ui могут быть найдены по следующей схеме. Все корни минимальной функции mi(X) содержатся в последовательности αui , αui q , α , ..., так что все корни mi(X) — различные элементы этой последовательности. Показатели степеней в этой последовательности — различные вычеты по модулю e чисел ui, uiq, uiq2, uiq3, ..., и число различных вычетов равно степени ri минимальной функции mi(X). Вполне возможно, что элементы αui и αuj имеют одну и ту же минимальную функцию mi(X) = mj (X). В этом случае совокупности корней функции mi(X) и mj (X) будут совпадать и в качестве сомножителя в разложении многочлена g(X) следует взять только одну из этих функций. Совокупность показателей, связанных с многочленом mi(X), называется циклическим множеством этого многочлена.

Пр и м е р 29. Код, рассмотренный в предыдущем примере, можно определить условием, чтобы каждый кодовый многочлен содержал среди своих корней любой корень α многочлена X3 +X2 +1.

Сдругой стороны, предположим, что известно только, что каждый кодовый многочлен должен содержать среди своих корней α некоторый примитивный элемент поля GF (23). Все примитивные элементы поля GF (23) являются корнями либо многочлена X3+X2+1, либо многочлена X3 + X + 1. Поэтому искомый код — это либо код, рассмотренный в предыдущем примере, либо эквивалентный ему код, порождаемый многочленом X3 + X + 1.

Код, корнями каждого кодового вектора которого являются единица и α — корень многочлена X3 + X2 + 1 — порождается мно-

гочленом g(X) = (X − 1)(X3 + X2 + 1).

Пр и м е р 30. Рассмотрим менее тривиальный пример. Пусть

β= α89, где α — примитивный элемент GF (211). Исследуем двоичный код, для которого β, β2, β3, β4 — корни всех кодовых многочленов. Так как 89 × 23 = 211 − 1, то β23 = 1. Пусть m(X)

137

13 26

— минимальная функция для β. Тогда корни многочлена m(X) образуют последовательность β, β2, β4, β8, β16, β32 = β9, β18, β36 =

= 3 6 12 ( 24 = )

β , β β , β , β , β β .

Итак, m(X) — минимальная функция для β, β2, β3, β4, и многочлен принадлежит кодовому пространству тогда и только тогда, когда он делится на m(X). Различным выборам примитивного элемента α из GF (211) соответствуют различные значения β, каждое из которых является корнем одного из двух многочленов:

X11 +X9 +X7 +X6 +X5 +X +1 или X11 +X10 +X6 +X5 +X4 +X2 +1.

П р и м е р 31. Пусть q = 2 и α — примитивный элемент поля GF (24). Тогда α15 = 1. Рассмотрим код, такой, что вектор {f (X)} принадлежит ему тогда и только тогда, когда элементы α, α2, α3, α4, α5 и α6 являются корнями многочлена f (X). Пусть через mi(X) обозначена минимальная функция для αi. Тогда α, α2, α4, α8 — корни многочлена m1(X) и m1(X) = m2(X) = m4(X) = m8(X). Аналогично α3, α6, α12, α24 = α9 — корни многочлена m3(X). Это описание можно сократить, перечисляя только показатели степеней или циклические множества:

1

2

4

8

m1

(X) = m2

(X) = m4(X)

(степень 4),

3

6

12

9

m3

(X) = m6

(X)

(степень 4),

5

10

 

 

m5

(X)

 

(степень 2).

Отсюда g(X) = m1(X)m3(X)m5(X), и степень g(X) равна 10. П р и м е р 32. Пусть q = 2 и α — примитивный элемент поля GF (25). Тогда α31 = 1. Рассмотрим код, содержащий вектор {f (X)} тогда и только тогда, когда α, α2, α3, ..., α10 — корни

многочлена f (X). Тогда аналогично предыдущему находим

1

2

4

8

16

3

6

12

24

17

5

10

20

9

18

7

14

28

25

19

m1(X) (степень 5), m3(X) (степень 5), m5(X) (степень 5), m7(X) (степень 5).

 

Здесь m1(X) = m2(X) = m4(X) =

m8(X), m3(X) =

m6

(X), m5(X) = m10(X) = m9(X).

При этом все эле-

менты α, α2, α3, ..., α10 находятся среди

корней многочленов

m1

(X), m3(X), m5(X), m7(X), и поэтому

 

g(X) = m1(X)m3(X)m5(X)m7(X),

138

так что степень g(X) равна 20.

Если известно, что элемент αi должен быть корнем многочлена f (X) кратности ri, то в разложении многочлена g(X) минимальная функция mi(X) для αi должна повторяться ri раз. Можно показать, что многочлен Xn −1 не имеет кратных корней, если n и q взаимно просты. Если n = qsn1, где n1 и q взаимно просты, то

Xn − 1 = (Xn1 − 1)qs .

Таким образом, все корни многочлена Xn − 1 всегда повторяются одно и то же число раз, а именно qs раз, где qs — наибольшая степень числа q, на которую делится n. Для кратных корней значение n можно найти следующим образом. Пусть n1 — наименьшее общее кратное порядков элементов α1, α2, ..., αr . Каждый из этих элементов — простой корень многочлена Xn1 − 1. Пусть rm — наибольшая кратность среди кратностей всех корней, а s — наименьшее целое число, удовлетворяющее неравенству rm ≤ qs. Тогда n = n1qs.

Приведем два способа отыскания минимальной функции для заданного элемента поля α3, где α — корень примитивного много-

члена X4 + X + 1. (См. табл. 5.1.)

1.Элементы α3, α6, α12, α9 — корни многочлена m3(X), и, следовательно, m3(X) = (X − α3)(X − α6)(X − α12)(X − α9). Производя с использованием таблицы 5.1. умножение, находим m3(X) =

X4 + X3 + X2 + X + 1.

2.Известно, что степень многочлена m3(X) равна 4. Пусть m3(X) = a0 +a1X +a2X2 +a3X3 +X4. Подставляя α3 = (1000) вместо X, α6 = (1100) вместо X2, α9 = (1010) вместо X3 и α12 = (1111)

вместо X4, получаем

 

 

0

 

 

 

1

 

 

 

1

 

 

 

1

 

 

 

1

 

 

a0

0

+ a1

0

+ a2

1

+ a3

0

+

1

= 0

 

0

 

 

0

 

 

0

 

 

1

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

0

 

 

 

0

 

 

 

0

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

или

a1 + a2 + a3 + 1

= 0,

a2 + 1

=

0,

a3 + 1

=

0,

a0 + 1

=

0,

139

n−r−1

откуда a0 = a1 = a2 = a3 = 1.

8.2. Матричное представление циклических кодов

Если многочлен g(X) = ar Xr + ar−1Xr−1 + ... + a0 порождает код, то все векторы {X g(X)}, {Xn−r−2g(X)}, ..., {g(X)} являются кодовыми векторами. Таким образом, кодовыми векторами являются все строки следующей матрицы:

 

 

 

a

ar−

 

.

...

a

0

 

. ... .

0

 

 

 

 

0r

ar

1

ar−1

...

. 0

a0

0 ... .

0

 

 

 

. .

 

.

... . .

 

. ... .

.

 

 

G

=

. .

 

.

... . .

 

. ... .

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. .

 

.

... . .

 

. ... .

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

.

...

ar

ar−1

. ... a0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

.

...

0

a

r

. ... .

a

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Очевидно, строки этой матрицы линейно независимы, а ее ранг, совпадающий с размерностью кода, равен n − r. Следовательно пространство строк матрицы G представляет собой кодовое пространство. Условимся, что в любом циклическом коде первые k символов, т.е. коэффициенты при Xn−1, Xn−2, ..., Xn−k ,

— будут всегда выбираться в качестве информационных сим-

волов,

а

последние n − k симоволов, т.е. коэффициенты при

X

, X

, ..., 1, — в качестве проверочных символов.

n−k−1

 

n−k−2

Порождающая матрица любого циклического кода может быть следующим образом приведена к модифицированной приведенноступенчатой форме. Пусть ri(X) — остаток от деления Xi на многочлен g(X):

Xi = g(X)qi(X) + ri(X).

Тогда многочлены

Xi − ri(X) = g(X)qi(X)

являются кодовыми векторами. Если эти многочлены при i = n − 1, n −2, ..., n −k выбрать в качестве строк порождающей матрицы, то

G = [Ik , −R],

где Ik — единичная матрица размерности k × k, а −R — матрица размерности k × (n − k), j-ой строкой которой является вектор из

140

коэффициентов многочлена −rn−j (X). Этот код является также нулевым пространством матрицы

H = [RT , In−k ],

причем j-я строка матрицы HT является вектором коэффициентов многочлена rn−j (X) даже при j ≤ n − k.

П р и м е р 33. Для двоичного циклического кода, порожденного многочленом g(X) = X3 + X2 + 1,

X6 = g(X)(X3 + X2 + X) + X2

+ X

 

 

X5 = g(X)(X2 + X + 1)

 

 

 

+ X + + 1

 

X4 = g(X)(X + 1)

 

 

 

+ X2

+ X + 1

 

X

3 = g(X)(1)

 

 

 

 

+

X

2

+

1

 

X

2 = g(X)(0)

 

 

 

 

+

X

2

 

 

 

X

1 = g(X)(0)

 

 

 

 

 

 

 

 

+ X

 

 

X

0 = g(X)(0)

 

 

 

 

 

 

 

 

+

1

 

 

 

1

1

0

 

 

 

 

 

 

 

 

 

 

 

 

0

1

1

 

 

 

 

 

1 0 0 0 1 1 0

 

HT

 

1

1

1

 

и

G

 

 

 

0 1 0 0 0 1 1

 

 

1

0

1

 

1

=

 

 

 

 

1

=

 

 

 

 

0

0 1 0 1 1 1

 

 

 

1

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

0

 

 

 

 

 

 

0

0 0 1 1 0 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Теперь рассмотрим двойственный код, т.е. код, порождааемый многочленом (X7 −1)/g(X) = (X −1)(X2 +X +1) = X4 +X3 +X2 +1.

Для этого порождающего многочлена

r6(X) =

3

+

2

 

+ X

 

 

 

 

 

 

1

1

1

0

 

X

X

 

 

 

 

 

 

r5(X) =

 

 

X2

 

+ X + 1

 

 

 

0

1

1

1

r4(X) = X3

+ X2

 

+ X + 1

 

 

 

 

1

1

0

1

 

r

3

(

X

) =

X3

 

 

 

 

 

 

 

 

HT

=

 

1

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

r2(X) =

 

 

2

 

 

 

 

 

 

 

 

 

0

1

0

0

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r1(X) =

 

 

 

 

 

X

 

 

 

 

 

 

0

0

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R

0(

X

) =

 

 

 

 

 

 

 

1

 

 

 

 

0

0

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

G2

= 0 1 0 0 1 1 1 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

1

1

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

1

1

1

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

141

Матрицы H1 и G2 совпадают, если в одной из них порядок расположения строк и столбцов заменить на обратный. То же самое верно для матриц G1 и H2.

Предположим, что многочлен f (X) принадлежит кодовому пространству тогда и только тогда, когда элементы α1, α2, ..., αr являются его корнями. Если

f (X) = fn−1Xn−1 + fn−2Xn−2 + ... + f0,

то при i = 1, 2, ..., r

f (α

) = f

αn−1

+ f

αn−2

+ ... + f

0

= 0,

i

n 1

i

n 2

i

 

 

и это равенство может быть записано при помощи произведения матриц

n−1

n−2

T

[fn−1, fn−2, ..., f0][αi

, αi

, ..., αi] = 0.

Это условие в точности эквивалентно условию, состоящему в том, что αi — корень мнонгочлена f (X). Это условие совпадает также с условием, состоящем в том, что многочлен f (X) делится на минимальную функцию mi(X) для элемента αi. Далее, то что элементы α1, α2, ..., αr являются корнями многочлена f (X), эквивалентно условию, состоящему в том, что соответствующий вектор принадлежит нулевому пространству матрицы

 

n−1

n−2

· · ·

1

0

 

α2

α2

α2

α2

 

α1

α1

· · ·

α1

α1

 

 

n−1

n−2

 

1

0

 

. . . . . .. . . . . . . . . . .

H =

 

 

 

 

 

 

αn 1

αn 2

· · ·

α1

α0

 

r

r

r

r

 

 

.

 

 

 

 

 

 

 

 

 

 

Совокупность всех многочленов, одним из корней которых является элемент αi, совпадает с нулевым пространством матрицы

n−1

, αn−2

, ..., α0

],

(8.1)

i

i

i

 

 

и поскольку эта совокупность многочленов совпадает с многочленами, которые делятся на минимальную функцию mi(X) степени mi, то они образуют идеал, размерность которого равна n − mi. Так как размерность нулевого пространства матрицы (8.1) равна n −mi, то размерность пространства строк матрицы равна mi. Заметим, что коэффициенты кодовых многочленов принадлежат полю GF (q), а αi — элемент расширения поля, если только mi =6 1.

142

Элементы расширения поля можно рассматривать как векторы с mi компонентами над основным полем. Следовательно, размерность пространства строк матрицы (8.1) надGF (q) равна mi.

Если αi и αj определяют один и тот же минимальный многочлен mi(X) = mj (X), то соответствующие им нулевые пространства совпадают и, следовательно, соответствующие пространства строк определяют одно и то же пространство над полем GF (q). Поэтому при построении матрицы H в разложении многочлена g(X) нужно использовать только один корень каждого неприводимого сомножителя.

П р и м е р 34. Рассмотрим двоичный циклический код, содержащий вектор {f (X)} тогда и только тогда, когда элементы α, α2, ..., α6 являются корнями многочлена f (X). Здесь α — корень многочлена p(X) = X4 + X + 1 и, следовательно, примитивный элемент GF (24). В этом случае

g(X) = m1(X)m3(X)m5(X),

и достаточно потребовать, чтобы корнями любого многочлена f (X), принадлежащего коду, были элементы α, α3, α5. Искомым кодом является нулевое пространство матрицы H, транспонированная матрица к которой равна

 

 

 

α14

· · ·

α42 = α12

α70 = α10

 

 

 

α13 · · ·

α39 = α9

α65 = α5

HT

=

α12

· · ·

α36 = α6

α60 = 1

 

 

 

 

 

 

 

 

 

 

. . . . . . . . . . . . . . . . . . . . . .

 

 

 

1

· · ·

3

5

 

 

 

 

α

α

α

 

 

 

 

 

 

 

 

 

 

 

 

1

· · ·

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

или

143

m0+1

 

1001

1111

0111

 

1101

1010

0110

 

 

 

 

 

1111

1100

0001

 

 

 

 

 

1110

1000

0111

 

 

 

 

 

0111

0001

0110

 

 

 

 

 

 

 

 

T

1010

1111

0001

 

1010

 

 

0101

0111

 

 

 

 

H =

1011

1100

0110

 

 

 

 

 

 

 

 

 

1100

1000

0001

 

 

 

 

 

0110

0001

0111

 

 

 

 

 

0011

1111

0110

 

 

 

 

 

 

 

 

 

1000

1010

0001

 

 

 

 

 

0100

1100

0111

 

 

 

 

 

0010

1000

0111

 

 

 

 

 

 

 

 

 

0001

0001

0001

если подставить, пользуясь таблицей 5.1, векторное представление элементов поля.

Далее,

X15 − 1 = (X − 1)(X2 + X + 1)(X4 + X3 + X2 + X + 1)×

×(X4 + X3 + 1)(X4 + X + 1),

и легко проверить, что если α — корень многочлена X4 + X + 1, то α3 — корень многочлена X4 + X3 + X2 + X + 1, α5 — корень многочлена X2 + X + 1. Поэтому ранг матрицы (α14, α13, ..., α0) равен 4 и ранг матрицы (α42, α39, ..., α0) также равен 4, поскольку степени минимальных функций для каждого из элементов α и α3 равны 4. Степень минимальной функции для элемента α5, однако, равна 2, и ранг матрицы (α70, α65, ..., α0) должен быть равен 2. Очевидно, что это так; в матрице HT девятый столбец состоит из нулей, а десятый и одинадцатый столбцы полностью совпадают.

8.3. Коды Боуза Чоудхури Хоквингема (БЧХ)

Пусть α — элемент из поля GF (qm). При любых заданных значениях m0 и d0 код, порожденный многочленом g(X), является БЧХ-кодом тогда и только тогда, когда многочлен g(X) является многочленом наименьшей степени над GF (q), для которого

αm0 , α , ..., αm0+d0−2 — корни.

144

Длина кода равна наименьшему общему кратному порядков корней. За исключением того случая, когда задатся только один корень αm0 , длина кода n равна порядку e элемента α. Так как

m0 )n = αm0n = 1, (αm0+1)n = αm0n+n = 1

и, следовательно, αn = 1, длина кода n делится на e и n не может быть меньше чем e — порядок элемента α. С другой стороны, если αe = 1, то (αj )e = 1, так что число e делится на порядок каждого элемента αj . Поэтому n не больше e, и, следовательно, n = e.

Наибольшее значение имеют двоичные БЧХ-коды, получающиеся, если в качестве α выбрать примитивный элемент поля GF (2m) и положить m0 = 1, а d0 = 2t0 + 1. Тогда вектор {f (X)} принадлежит коду тогда и только тогда, когда элементы

2

3

2t0

α, α , α , ..., α

являются корнями многочлена f (X). Однако каждая четная степень α является корнем минимальной функции, являющейся также минимальной функцией для некоторой предшествуюющей нечетной степени α. Например, если mj (X) обозначает минимальную функцию для αj , то α2, α4 — корни m1(X), α6 — корень m3(X), α8

— корень m1(X), α10 — корень m5(X) и т.д. Следовательно, можно дать следующее эквивалентное определение кода: вектор {f (X)} принадлежит коду тогда и только тогда, когда элементы

32t0−1

α, α , ..., α

являются корнями многочлена f (X). Итак, код порождается многочленом

g(X) = НОК(m1(X), m3(X), ..., m2t0−1(X)),

(8.2)

причем степень каждого многочлена mi(X), как следует из теорем 51 и 59, не превосходит m. Таким образом, степень многочлена g(X) не превосходит mt0.

Другим важным подклассом БЧХ-кодов являются коды РидаСоломона, получаемые при m = m0 = 1. Пусть α элемент GF (q) порядка n. (Если α — примитивный элемент, то n равно своему наибольшему значению q − 1.) Пусть вектор{f (X)} является кодовым вектором тогда и только тогда, когда элементы

2d−1

α, α , ..., α

145