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

pri_cod2

.pdf
Скачиваний:
6
Добавлен:
27.05.2015
Размер:
585.25 Кб
Скачать

Пример 9. [КТИИ, стр. 154]). Пусть C(x) бинарный циклический код, проверочный и порождающий многочлены которого задаются так:

g(x) = x11 + x9 + x7 + x6 + x5 + x + 1;

h(x) = x12 + x10 + x7 + x4 + x3 + x2 + x + 1:

Длина кодовых слов этого кода n = 23, число информационных символов k = deg h(x) = 12 и число проверочных символов r = deg g(x) = 11. Кодовое расстояние d(C(x)) = 7 [ктти, с. 165].

Пусть при передаче по каналу связи на кодовое слово наложился вектор ошибок e(x) веса 3. Далее используем обозначения предложения 9. В нашем случае n = 23, поэтому ¾1 + ¾2 + ¾3 = 23 ¡ 3 = 20. Кроме того, множество P2 состоит из 12 вершин 23-угольника M с номерами 11, 12, : : :, 22. Не теряя общности, считаем, что ¾1 · ¾2 · ¾3. Далее возможны два случая.

Случай 1. ¾3 ¸ 12. В этом случае повторяем заключительные рассуждения при доказательстве предложения 9.

Случай 2. ¾3 · 11. В этом случае ¾1 + ¾2 ¸ 20 ¡11 = 9, откуда ¾2 ¸ 5, поскольку ¾1 · ¾2. Кроме того, ¾3 ¸ 7 иначе ¾1 + ¾2 + ¾3 · 3 ¢ 6 = 18 < 20. Следовательно, можно выбрать такую вершину A треугольника T , что с стороны от A имеется не менее 7 свободных вершин, а с другой стороны не менее 5 вершин. Поэтому при j = 16 или j = 17 выполнено следующее свойство:

Если повернуть треугольник T вокруг точки O на угол вида ® ¢ i так, чтобы вершина A попала в вершину с номером j, то ни одна из двух других его вершин не попадет во множество P2.

Учитывая сказанное, получаем такой алгоритм поиска трех ошибок:

61

1) При i = 0; 1; : : : ; 22 найти остаток r(x) при делении xiv(x) на g(x). Если при некотором i вес r(x) окажется не больше 3, то найти вектор ошибок e(x) = x23¡ir(x) (mod x23 ¡ 1). Конец.

2)При j = 16 и при i = 0; 1; : : : ; 22 найти остаток r(x) при делении xi(v(x) ¡ xj) на g(x). Если при некотором i вес многочлена r(x) окажется не больше 2, то найти вектор ошибок e(x) = x23¡i(r(x) + xj) (mod x23 ¡ 1). Конец.

3)При j = 17 проделать те же действия, какие были проделаны в предыдущем пункте при j = 16. Конец.

Аналогично (но проще) строится алгоритм поиска двух ошибок. В этом случае многочлену ошибок соответствует хорда F многоугольника M. Пусть с одной стороны этой хорды лежит ¾1 свободных вершин, а с другой стороны¾2 свободных вершин. Ясно, что ¾1 + ¾2 = 23 ¡2 = 21. Не теряя общности, считаем, что ¾1 · ¾2. Далее возможны два случая.

Случай 1. ¾2 ¸ 12. В этом случае хорду F можно повернуть так, чтобы ни один ее конец не попал во множество P2.

Случай 2. ¾2 · 11. В этом случае ¾2 = 11 и ¾1 = 10. Поэтому хорду F можно повернуть так, чтобы один ее конец попал в вершину с номером 16, а второй не попал во множество P2.

Теперь легко построить алгоритм поиска двух ошибок.

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

3.12БЧХ-коды

Циклические коды специального вида были разработаны Р.К. Боузом, Д.К. Чоудхури и А. Хоквингемом [ктти, стр. 163]. Они носят название БЧХкодов.

Пусть p простое число, m ¸ 2 целое число и GF (pm) конечное поле, состоящее из pm элементов. Известно [ктти, стр. 96], что любое конечное поле F содержит так называемый примитивный элемент ®, который удовлетворяет следующему условию:

62

Для любого ненулевого элемента ¯ поля F найдется целое i ¸ 0, для которого ¯ = ®i.

БЧХ-код это такой циклический код C(x), порождающий многочлен g(x) которого при некотором ± ¸ 2 удовлетворяет следующему условию:

g(®) = g(®2) = ¢ ¢ ¢ = g(®±) = 0:

(7)

В этом случае код C(x) является (по определению) БЧХ-кодом с конструктивным кодовым расстоянием ± + 1. Последнее означает, что кодовое расстояние d(C(x)) не может быть меньше числа ± + 1 (но может быть больше этого числа).

Считаем, что ± < 2m иначе g(x) = xn ¡ 1 и код состоит только из одного (нулевого) кодового слова. Поэтому элементы ®, ®2, : : :, ®±, различны.

Предложение 16 Пусть выполнены условия (7). Тогда d(C(x)) ¸ ± + 1.

Доказательство. Рассмотрим типичный случай ± = 3. Пусть n длина кодовых слов кода C(x). Пусть u(x) многочлен степени n ¡ 1 с коэффициентами из Zp: u(x) = u0x1 + u1x2 + ¢ ¢ ¢ + u1. Тогда

u(x) 2 C(x) () u(x) = g(x)'(x) для некоторого многочлена '(x):

Поэтому из (7) вытекает, что если u(x) 2 C(x), то выполнены равенства

u(®) = u(®2) = u(®3) = 0:

В матричном виде эти равенства записывается так:

0

®1

®2 ®3

: : : ®

1

0

u0

®22

®24

®26

: : : ®2

1

1 B

u1

B

®

3n

¡

3

®

3n

¡

6

®

3n 9

: : : ®

3

1

C B

¢ ¢ ¢

B

 

 

 

 

¡

 

C B

B

 

 

 

 

 

 

 

 

 

 

 

 

 

C B

 

@

 

 

 

 

 

 

 

 

 

 

 

 

 

A B un 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@

¡

1

=

0

0

1

:

(8)

C

0

C

 

B

0

C

 

 

C

 

B

C

 

 

C

 

B

 

C

 

 

C

 

@

 

A

 

 

C

 

 

 

 

 

 

A

 

 

 

 

 

 

Допустим, что вес многочлена u(x) не больше 3. Мы должны убедиться, что u(x) нулевой многочлен. Проверим это. Положим I = fi : ui =6 0g. Тогда jIj · 3. Допустим, что jIj = 3. Тогда I = fi1; i2; i3g, где 0 · i1 < i2 < i3 < n.

63

Из (8) получаем

0

2n¡2i1 2

2n 2i2 2

2n 2i3 2

1 0

u

i1

1

0

0

1

 

 

®n i1¡1

®n¡i2¡1

®n¡i3¡1

 

 

 

 

 

 

 

B

®3n¡3i1¡3

®3n¡3i2¡3

®3n¡3i3¡3

C B ui2

C

= B

0

C

:

B

® ¡ ¡

® ¡ ¡

® ¡ ¡

C B ui

3

C

B

0

C

 

B

 

 

 

C B

 

 

C

B

 

C

 

@

 

 

 

A @

 

 

 

A

@

 

A

 

Сократим первую строку матрицы, стоящей слева, на ®n¡i3¡1, вторую на ®22i3¡2 и третью на ®33i3¡3. Тогда получим

0

2i3

¡2i1

2i3

¡2i2

1

1 0

u

i1

1

0 0 1

 

 

®i3

i1

®i3

i2

 

 

 

 

 

 

 

 

 

B

®3i3

¡3i1

®3i3

¡3i2

1

C B ui2

C

= B

0

C

:

B

®

¡

®

¡

1

C B ui

3

C

B

0

C

 

B

 

 

 

 

 

C B

 

 

C

B

 

C

 

@

 

 

 

 

 

A @

 

 

 

A

@

 

A

 

Определитель матрицы, стоящей слева, отличен от нуля (он является определителем Вандермонда, причем ®, ®2 и ®3 различны). Следовательно,

ui1 = 0, ui2 = 0 и ui3 = 0. Противоречие с выбором i1, i2, i3 показывает, что u(x) нулевой многочлен. Случаи jIj = 2 и jIj = 1 рассматриваются

аналогично (они проще рассмотренного).

3.13Циклический код, исправляющий 3 ошибки

Рассмотренный в предыдущем разделе метод позволяет строить циклические коды с заранее заданным кодовым расстоянием, что позволяет обнаруживать и исправлять заранее определенное число ошибок. Однако этот метод не дает эффективного алгоритма поиска ошибок. Опишем алгоритм В. Питерсона, позволяющий обнаруживать и исправлять до 3 ошибок [КТТИ, стр. 173]. Этот метод легко модифицировать так, чтобы он обнаруживал и большее число ошибок.

Пусть ® примитивный элемент поля GF (pm) и g(x) многочлен с коэффициентами из Zp, корнями которого являются элементы ®, ®2, : : :, ®6. Методы построения таких многочленов рассмотрены, например в [ктти, стр. 104 – 109].

Пусть C(x) циклический код с порождающим многочленом g(x). Пусть u(x) кодовый многочлен. Тогда u(x) = g(x)'(x) для некоторого многочлена с коэффициентами из Zp. Поэтому любой корень ¯ 2 GF (pm)

64

многочлена g(x) является корнем u(x). Следовательно, выбор g(x) гарантирует справедливость такого свойства:

®; ®2; : : : ; ®6 корни многочлена u(x):

(9)

Пусть многочлен u(x) отправлен по каналу связи, а на выходе получен многочлен v(x) = u(x) + e(x), где e(x) многочлен (вектор) ошибок. Пусть число ошибок не превосходит 3. Тогда e(x) имеет вид

e(x) = e1xk1 + e2xk2 + e3xk3;

где ei 2 Zp при i = 1; 2; 3.

Поиск (и исправление) ошибок производится в два этапа.

Этап 1. Поиск позиций k1, k2, k3, в которых произошли ошибки (числа k1, k2, k3 называют локаторами ошибок).

Положим

Sj = e(®j) = e1(®k1)j + e2(®k2)j + e3(®k3)j:

При j = 1; 2; : : : ; 6 величины Sj можно найти по вектору v(x), поскольку по свойству (9) v(®j) = u(®j) + e(®j) = 0 + e(®j). Положим xi = ®ki при i = 1; 2; 3. Тогда

Sj = e(®j) = e1x1j + e2x2j + e3x3j :

(10)

Найдем уравнение третьей степени, корнями которого являются x1, x2, x3. Пусть это уравнение имееет вид t3 + At2 + Bt + C = 0, где A, B и C неизвестные нам коэффициенты. Тогда выполнены равенства

8

3

2

 

 

x13

+ Ax12 + Bx1

+ C = 0;

> x2 + Ax2 + Bx2 + C = 0;

>

 

 

 

>

 

 

 

<

3

2

+ C = 0:

> x3

+ Ax3 + Bx3

>

 

 

 

>

 

 

 

:

 

 

 

Умножая первое из этих равенств на e1xj1, второе на e2xj2, а третье на e3xj3, и складывая полученные равенства, придем к равенствам

S3+j + AS2+j + BS1+j + CSj = 0 при j = 1; 2; 3:

65

Давая j значения 1, 2 и 3, получим систему линейных уравнений

8

S4 + AS3 + BS2 + CS1 = 0;

>

S5 + AS4 + BS3 + CS2 = 0;

>

 

>

 

<

 

>

S6 + AS5 + BS4 + CS3 = 0:

>

 

>

 

:

 

Решая эту систему, найдем A, B и C. Если определитель ¢ системы отличен от нуля, то полезно применить метод Крамера. Если же ¢ = 0, то или число ошибок меньше 3 или больше 3. Если число ошибок меньше 3, то e(x) ищем в виде e(x) = e1xk1 + e2xk2 (для двух ошибок) или в виде e(x) = e1xk1 (для одной ошибки). Метод поиска аналогичен описанному.

Перебирая элементы поля GF (2m), найдем

корни x1, x2, x3 уравнения

t3 +At2 +Bt+C = 0. Решая теперь при i = 1; 2; 3

уравнения xi = ®ki, найдем

номера k1, k2, k3 позиций, в которых произошли ошибки.

Этап 2. Поиск e1, e2, e3. Полагая в (10) j = 1; 2; 3, придем к системе уравнений относительно неизвестных e1, e2, e3:

 

e x1 + e2x2 + e3x3 = S1;

> e1x1 + e2x2 + e3x3

= S2;

>

1

2

2

2

 

8

 

>

 

 

 

 

 

<

 

3

3

3

= S3:

> e1x1

+ e2x2

+ e3x3

>

 

 

 

 

 

>

 

 

 

 

 

:

 

 

 

 

 

Отметим, что при p = 2 этап 2 не нужен, поскольку в этом случае ei может принимать только значения 0 или 1.

4Коды Адамара

Одно из основных назначений кодов заключается в исправлении ошибок. При этом желательно использовать коды, которые при заданной длине кодовых слов и заданном кодовом расстоянии имеют наибольшее число кодовых слов. Линейные коды этому свойству часто не удовлетворяют. Так, бинарный линейный код с кодовыми словами длины 11 и кодовым расстоянием ¸ 5 (то есть исправляющий две ошибки) содержит самое большее 16 кодовых слов. В то же время имется нелинейный код с той же длиной кодовых слов и кодовым расстоянием ¸ 5, содержащий 24 кодовых слова (см. ниже пример

.....). Поэтому выигрыш (в скорости передачи) составляет 50%.

66

Определение 1. (n; M; d)-кодом называется код, котоый состоит из M кодовых слов длины n каждое и имеет кодовое расстояние d.

Из определения вытекает, что линейный бинарный (n; k)-код является (n; 2k; d)-кодом, где d кодовое расстояние этого кода.

4.1Матрицы Адамара

Матрица Адамара порядка n это такая кввадратная матрица H порядка n, состоящая из чисел 1 и ¡1, для которой

HHt = nE;

(1)

где E единичная матрица порядка n.

Равенство (1) эквивалентно следующему свойству

(10) Скалярное произведение различных строк матрицы H равно 0, а скалярный квадрат любой строки равен n.

Пусть H матрица Адамара. Тогда справедливы следующие свойства:

а) при умножении строки матрицы H на ¡1 получается матрица Адамара.

б) при перестановке строк матрицы H получается матрица Адамара.

в) Ht = nH¡1.

г) HtH = nE, поэтому Ht матрица Адамара.

д) свойства а) и б) останутся верными, если термин “строка“ заменить термином “столбец“.

е) любые две строки матрицы H различаются ровно в n=2 компонентах.

Последнее свойство вытекает из (10), поскольку скалярное произведение двух различных строк с номерами i и k равно Pnj=1 aijakj, а произведение aijakj равно 1, если эти элементы равны и равно ¡1, если они различны.

Из свойства а) вытекает, что любую матрицу Адамара можно привести к нормализованной матрице Адамара, в которой все элементы первой строки и первого столбца равны 1.

Примеры матриц Адамара:

67

 

0 1

1 1

 

0

1

1

 

1

 

1

1

1 ;

;

B

1

¡1

 

1

¡1

C

³ ´

1

1

 

B

1

1

 

1

 

1

C

 

@

¡ A

 

B

 

 

¡

 

¡

 

C

 

 

B

1

1

1

1

C

 

 

 

 

B

 

 

C

 

 

 

 

B

 

¡

¡

 

 

 

C

 

 

 

 

@

 

 

 

 

A

Предложение 17 Пусть H – матрица Адамара порядка n > 2. Тогда n делится на 4

Доказательство. Преобразуем матрицу H к нормализованному виду. Тогда первые три столбца будут содержать только строки следущего вида:

Строка

Число строк

1; 1; 1)

i

 

 

1; 1; ¡1)

j

1; ¡1; 1)

k

1; ¡1; ¡1)

l

Вычисляя скалярыный квадрат первого столбца, а также скалярные произведения различных столбцов, придем к равенствам:

8 i + j + k + l

= n;

> i + j

 

k

 

l

=

0;

>

 

¡

 

¡

 

 

 

>

 

 

 

 

 

>

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

> i

j + k

¡

l

=

0;

<

 

 

 

 

=

0:

> i ¡ j

 

k + l

>

¡

¡

 

 

 

 

 

>

 

 

 

 

 

>

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

:

 

 

 

 

 

 

 

Из этих равенств следует i = j = k = l, откуда n = i + j + k + l = 4i, поэтому n кратно четырем.

Предложение 18 Пусть H матрица Адамара порядка n > 2. Тогда

0

@ H H H ¡H

матрица Адамара порядка 2n.

1

A

Предложение 19 Пусть Hn матрица Адамара порядка n и Hm матрица Адамара порядка m. Тогда существует Hmn матрица Адамара порядка mn.

68

Доказательсто. Пусть Hn = (aij). Тогда (aijHm) искомая матрица. Предполагается, что существуют матрицы Адамара всех порядков, кратных

4. Наименьший порядок, для которого матрица Адамара не построена, равен 268 (на 1977 год).

Замечание. Имеются и другие методы построения матриц Адамаранапример, метод Пейли [Мак-Вильямс, стр 53, КТИИ, стр 112.]

4.2Построение кодов Адамара

Пусть Hn нормализованная матрица Адамара порядка n. Заменив в ней элементы 1 на 0, а ¡1 на 1, получим двоичную матрицу Адамара An. Любые две строки матрицы An совпадают в n=2 позициях и различаются также в n=2 позициях. Поэтому расстояние Хэмминга между этими строками равно n=2.

Матрица An позволяет построить три кода Адамара.

(1)(n ¡ 1; n; n=2)-код An, который состоит из строк матрицы An, из которой удален первый столбец (состоящий из одних нулей).

(2)(n ¡ 1; 2n; (n=2) ¡ 1)-код Bn, состоящий из векторов кода An, а также их дополнений до вектора (1; 1; : : : ; 1).

(3)(n; 2n; n=2)-код Cn, состоящий из строк матрицы An, а также их дополнений до вектора (1; 1; : : : ; 1).

Пример 10. Пусть n = 12. Код A12 состоит из 12 кодовых слов длины 11. Кодовое расстояние равно 6. Поэтому код может исправлять до 2 ошибок включительно.

Код B12 состоит из 24 кодовых слов длины 11. Кодовое расстояние равно 5. Код может исправлять до 2 ошибок.

Код C12 состоит из 24 кодовых слов длины 12. Кодовое расстояние равно 6. Код может исправлять до 2 ошибок.

Пример 11. Пусть требуется построить код C, исправляющий до 3 ошибок. Тогда его кодовое расстояние d(C) должно быть не менее 2 ¢ 3 + 1 = 7. Если использовать коды Адамара, то (n=2) ¸ 7, откуда n ¸ 14. Так как матрицы

69

Адамара существуют только при n = 1; 2, а также при n = 4k, наименьшее n равно 16.

Сформулированным выше условиям удовлетворяет код A16, состоящий из 16 кодовых слов длины 15, а также коды B16 и C16, состоящие из 32 кодовых слов длины 15 и 16 соответственно.

4.3Другие применения матриц Адамара

1. Максимальные определители. Пусть Hn матрица Адамара порядка n. Тогда

jHHtj = jnEj = nnjEj = nn;

n

откуда jHnj = §n2 .

В то же время справелива теорема Адамара:

Пусть A = (aij) квадратная матрица порядка n и ¡1 · aij · 1. Тогда

n

откуда jAj по абсолютной величине не превосходит числа n2 .

2. Весовые планы [4, стр. 60-61]. Пусть имеется n предметов и необходимо за n взвешиваний определить их веса. При взвешиваниях возможны случайные ошибки, имеющие дисперсию ¾2. Рассмотрим типичный случай n = 4. Пусть a, b, c, d веса предметов.

Весовой план 1. Каждый предмет взвешивается отдельно. Тогда ошибки будут иметь дисперсию ¾2.

Весовой план 2. Проведя 4 взвешивания, находим величины y1, y2, y3, y4, удовлетворяющие равенствам

 

 

 

8 a + b + c + d = y1 + "1

 

 

 

 

> a b + c d = y2 + "2

 

 

 

 

>

¡

 

¡

 

;

 

 

 

>

 

 

 

 

 

>

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

> a + b c

¡

d = y3 + "3

 

 

 

 

<

 

 

 

 

 

 

 

> a b ¡ c + d = y4 + "4

 

 

 

 

>

¡ ¡

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

>

 

 

 

 

 

где

y

i показания

весов, а "

 

ошибки взвешивания, i = 1; 2; 3; 4.

 

:

 

i

 

 

 

Тогда a = (y1 + y2 + y3 + y4)=4 + ("1 + "2 + "3 + "4)=4, поэтому оценка a~ = (y1 + y2 + y3 + y4)=4 величины a имеет дисперсию 4 ¢ (¾2=16) = ¾2=4. Аналогичный результат получается для b, c и d. При построении весового плана использована матрица Адамара H4.

70

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