Главная страница

ТЕОРИЯ ИНФОРМАЦИИ И КОДИРОВАНИЯ. Воронежский институт мвд россии кафедра высшей математики


Скачать 1.43 Mb.
НазваниеВоронежский институт мвд россии кафедра высшей математики
Дата12.04.2022
Размер1.43 Mb.
Формат файлаpdf
Имя файлаТЕОРИЯ ИНФОРМАЦИИ И КОДИРОВАНИЯ.pdf
ТипУчебник
#464649
страница11 из 14
1   ...   6   7   8   9   10   11   12   13   14
Для исправления 3 ошибок нам необходимо рассчитать 6 значений
S
1
= F (2 1
) =
X
A
i
2
i
S
2
= F (2 2
) =
X
A
i
(2 2
)
i
S
3
= F (2 3
) =
X
A
i
(2 3
)
i
S
4
= F (2 4
) =
X
A
i
(2 4
)
i
S
5
= F (2 5
) =
X
A
i
(2 5
)
i
S
6
= F (2 6
) =
X
A
i
(2 6
)
i
После чего вычислить (σ
1
, σ
2
, σ
3
) из выражения


S
1
S
2
S
3
S
2
S
3
S
4
S
3
S
4
S
5




σ
3
σ
2
σ
1


=


S
4
S
5
S
6


и найти корни уравнения
Σ(x) = 1 + σ
1
x + σ
2
x
2
+ σ
3
x
3
= (1 + 2
α
x)(1 + 2
β
x)(1 + 2
γ
x).
Тогда (α, β, γ) являются степенями искаженных разрядов в полиноме кодовой комбинации.
F
В самом общем случае для исправления q ошибок нам необходимо рассчитать
2q значений
S
k
= F (2
k
) =
X
A
i
(2
k
)
i
После чего вычислить (σ
1
, σ
2
, ..., σ
q
) из выражения




S
1
S
2
S
3
S
q
S
2
S
3
S
4
S
q+1
S
q
S
q+1
S
q+2
... S
2q−1










σ
q
σ
q−1
σ
2
σ
1






=






S
q+1
S
q+2
S
2q−1
S
2q






и найти корни уравнения
1 + σ
1
x + σ
2
x
2
+ σ
3
x
3
+ ... + σ
q x
q
= (1 + 2
α
1
x)(1 + 2
α
2
x)...(1 + 2
α
q x)
или
Σ(x) =
q
X
j=0
σ
j x
j
=
q
Y
j=0
(1 + 2
α
j x)
Тогда (α
1
, α
2
, ..., α
q
) являются степенями искаженных разрядов в полиноме кодовой комбинации.
3.7.2
Коды БЧХ над
GF (2 3
)
Пример 3.28. Рассмотрим построение кода БЧХ в GF (2 3
) исправляющего 1 ошибку при передаче информационной последовательности a = (1001).

146
Глава 3. Теория помехоустойчивого кодирования
Решение. Пользуясь алгоритмами построения полиномиального кода из выражения
2
r
≥ k + r + 1
находим r = 3. Информационная последовательность a = (1001) представляется в виде m(x) = x
3
· 1 + x
2
· 0 + x · 0 + 1 · 1 = x
3
+ 1.
Поскольку r = 3, то умножаем
Q(x) = x r
m = x
3
m = x
3
(x
3
+ x
2
+ x + 1) = x
6
+ x
5
+ x
4
+ x
3
= 1001000.
Поскольку таблица индексов для GF (2 3
) строилась относительно полинома p = x
3
+
x + 1, то в разложении x
7
− 1 = ψ
0
ψ
1
ψ
2
= (1 + x)(1 + x + x
3
)(1 + x
2
+ x
3
)
возьмем p = ψ
1
. Делим m = x r
Q на образующий полином p x
3
m p
= C +
R
p или x
6
+ x
3
x
3
+ x + 1
= (x
3
+ x) +
x
2
+ x x
3
+ x + 1
окуда получим R = x
2
+ x = (110). Поскольку
Q(x) = x
6
+ x
5
+ x
4
+ x
3
= 1001000
то передаваемая комбинация
F есть прямая конкатенация m ⊕ R:
Q = 1001000
R =
110
F = 1001110
Таким образом, передаваемая кодовая комбинация имеет вид
F = (1001110). N
Допустим во время передачи по каналу информации в F возникла ошибка в 3
символе слева.
F = (1001110)

F = (1011110)
Опишем алгоритм определения и исправления ошибки кода БЧХ [7, 4].

3.7. Коды БЧХ
147
Пример 3.29. Обнаружить и исправить ошибку в кодовой БЧХ последовательности
F = (1011110) над GF (2 3
).
Решение. Перепишем принятую кодовую комбинацию F = (1011110) в полиномиальном виде
F (x) =
X
F
i x
i
= x
6
+ x
4
+ x
3
+ x
2
+ x.
Для исправления 1 ошибки нам достаточно подставить число 2 в принятую комбинацию
F (2) =
X
F
i
2
i
= 2 6
+ 2 4
+ 2 3
+ 2 2
+ 2 = 5 + 6 + 3 + 4 + 2 = 6 = 2 4
Здесь степень 2
k вычислялась по таблице индексов поля GF (2 3
), а в качестве сложения использовалась операция XOR (или см. таблицу сложения для GF (2 3
)). Поскольку
2
α
= 2 4
, то α = 4 степень искаженного разряда в полиноме кодовой комбинации:
F = (1011110)

F = (1001110).
Т.к. код БЧХ является систематическим, то для выделения информационной последовательности нам достаточно вычеркнуть r = 3 последних разряда кодовой комбинации a =
(1001). N
Задача 3.18.
На приемнике была получена кодовая последовательность БЧХ [7,4] над GF (2 3
).
Восстановить исходное сообщение.
N
F
N
F
N
F
1 1110001 11 0101001 21 1001001 2
0111010 12 1101010 22 0001010 3
1010011 13 0100011 23 1100011 4
1011100 14 0001100 24 1101100 5
0100001 15 1101110 25 0011111 6
0100111 16 1110110 26 0100111 7
0100100 17 1000110 27 0001011 8
1100111 18 0100110 28 0001101 9
1100100 19 1001111 29 0001110 10 1100010 20 0101111 30 1110010
Следующий пример преследует исключительно методическую цель, поскольку применение данного алгоритма на практике не рационально. Мы построим код БЧХ
в GF (8) исправляющий 2 ошибки.

148
Глава 3. Теория помехоустойчивого кодирования
Пример 3.30. Рассмотрим построение кода БЧХ в GF (2 3
) исправляющего 2
ошибки.
Решение. Для исправления 1 ошибки мы пользовались полиномом p = ψ
1
Для исправления 2 ошибок нам необходимо взять 2 функции ψ. Тогда проверочный полином будет выглядеть так p = ψ
1
ψ
2
= (1 + x + x
3
)(1 + x
2
+ x
3
) = 1 + x + x
2
+ x
3
+ x
4
+ x
5
+ x
6
Т.е. нам необходимо взять r = 6 проверочных символов для построения кода БЧХ
[7, 1] исправляющего 2 ошибки
6
Допустим информационная последовательность имеет вид a = (1) представляется в виде m(x) = 1.
Поскольку r = 6, то умножаем
Q(x) = x r
m = x
6
· 1 = x
6
= 1000000.
Делим Q = x r
m на проверочный полином p x
6
m p
= C +
R
p или x
6 1 + x + x
2
+ x
3
+ x
4
+ x
5
+ x
6
= 1 +
1 + x + x
2
+ x
3
+ x
4
+ x
5 1 + x + x
2
+ x
3
+ x
4
+ x
5
+ x
6
окуда получим R = 1 + x + x
2
+ x
3
+ x
4
+ x
5
. Поскольку
Q(x) = x
6
= 1000000
то передаваемая комбинация
F есть прямая конкатенация m ⊕ R:
Q = 1000000
R = 111111
F = 1111111
Таким образом, передаваемая кодовая комбинация имеет вид
F = (1111111). N
Допустим во время передачи по каналу информации в
F возникло две ошибки во
2 и 5 символе слева.
F = (1111111)

F = (1011011)
Опишем алгоритм определения и исправления ошибки кода БЧХ [7, 1].
6
Заметим, что повторный код [5, 1] : 1
→ 11111, исправляющий 2 ошибки имеет длину n = 5, а повторный код длины n = 7, [n, k] = [7, 1] исправляет 3 ошибки. Т.е. в данном примере код БЧХ
уступает по скорости 1/7 < 1/5 даже простейшему повторному.

3.7. Коды БЧХ
149
Пример 3.31. Обнаружить и исправить ошибки в БЧХ кодовой последовательности
A = (1011011) над GF (2 3
).
Решение. Перепишем принятую кодовую комбинацию A = (1011011) в полиномиальном виде
F (x) =
X
A
i x
i
= x
6
+ x
4
+ x
3
+ x + 1.
Для исправления двух ошибок нам необходимо рассчитать 4 значения
S
1
= F (2 1
) =
X
A
i
2
i
= 2 6
+ 2 4
+ 2 3
+ 2 + 1 = 5 + 6 + 3 + 2 + 1 = 3
S
2
= F (2 2
) =
X
A
i
(2 2
)
i
= 2 12
+ 2 8
+ 2 6
+ 2 2
+ 1 = 7 + 2 + 5 + 4 + 1 = 5
S
3
= F (2 3
) =
X
A
i
(2 3
)
i
= x
18
+ 2 12
+ x
9
+ 2 3
+ 1 = 6 + 7 + 4 + 3 + 1 = 7
S
4
= F (2 4
) =
X
A
i
(2 4
)
i
= x
24
+ x
16
+ x
12
+ 2 4
+ 1 = 3 + 4 + 7 + 6 + 1 = 7
Те читатели, которые захотят рассчитать предыдущие суммы устно (без компьютера)
должны помнить, что в GF (2 3
) возведение в степень имеет свойства
2
k
= 2
k+7
,
т.е. 2 18
= 2 4
= 6, 2 24
= 2 3
= 3, 2 16
= 2 2
= 4,
и т.д.
Теперь вычислим (σ
1
, σ
2
) из выражения
 S
1
S
2
S
2
S
3
  σ
2
σ
1

=
 S
3
S
4

,
т.е.
 3 5 5 7
  σ
2
σ
1

=
 7 7

По методу Крамера найдем
∆ =
3 5 5 7
= 3
· 7 − 5 · 5 = 2 + 7 = 5

2
=
7 5 7 7
= 7
· 7 − 7 · 5 = 3 + 6 = 5;

1
=
3 7 5 7
= 3
· 7 − 5 · 7 = 2 + 6 = 4
По таблице умножения в GF (2 3
) получим

−1
= 5
−1
= 2.
Тогда
σ
1
=

1

= ∆
1
· ∆
−1
= 4
· 2 = 3;
σ
2
=

2

= ∆
2
· ∆
−1
= 5
· 2 = 1
Теперь подставим полученные значения (σ
1
, σ
2
) в уравнение
Σ(x) = 1 + σ
1
x + σ
2
x
2
= 1 + 3x + x
2

150
Глава 3. Теория помехоустойчивого кодирования
Для решения данного уравнения воспользуемся формулами Виета
 x
1
+ x
2
= σ
1
x
1
· x
2
= σ
2
или
 x
1
+ x
2
= 3
x
1
· x
2
= 1
По таблицам сложения и умножения для GF (2 3
) находим x
1
= 4, x
2
= 7, тогда
Σ(x) = 1 + 3x + x
2
= (1 + 4x)(1 + 7x) = (1 + 2 2
x)(1 + 2 5
x).
Т.е. ошибки в коэффициентах при степенях x
2
и x
5
полинома F (x). Меняя значения разрядов на противоположные получим
F = (1011011)

F = (1111111)
- исправленную кодовую комбинацию. N
Задача 3.19.
На приемнике была получена кодовая последовательность БЧХ [7,1] над GF (2 3
).
Восстановить исходное сообщение.
N
F
N
F
N
F
N
F
N
F
N
F
1 0101111 6
1100111 11 0101111 16 1111100 21 1011110 26 1011110 2
0110111 7
1101011 12 0110111 17 1111010 22 1011101 27 1011011 3
0111011 8
1101101 13 0111011 18 1111001 23 1011011 28 1001111 4
0111101 9
1101110 14 0111101 19 1110110 24 1010111 29 1110101 5
0111110 10 1110011 15 0111110 20 1010111 25 1011101 30 1001111 3.7.3
Коды БЧХ над
GF (2 4
)
Пример 3.32. Рассмотрим построение кода БЧХ в GF (2 4
) исправляющего 1 ошибку при передаче информационной последовательности a = (11100011100).
Решение. Пользуясь алгоритмами построения полиномиального кода из выражения
2
r
≥ k + r + 1 = 11 + r + 1 = 12 + r находим r = 4. Информационная последовательность a = (11100011100) представляется в виде m(x) = x
10
+ x
9
+ x
8
+ x
4
+ x
3
+ x
2
Поскольку r = 4, то умножаем m на x
4
:
Q(x) = x r
m = x
4
m = x
4
(x
10
+ x
9
+ x
8
+ x
4
+ x
3
+ x
2
)
= x
14
+ x
13
+ x
12
+ x
8
+ x
7
+ x
6
= 111000111000000.

3.7. Коды БЧХ
151
Поскольку таблица индексов для GF (2 4
) строилась относительно полинома p = x
4
+
x + 1, то в разложении x
15
− 1 = ψ
0
ψ
1
ψ
2
ψ
3
ψ
4
= (1 + x)(1 + x + x
2
)(1 + x + x
4
)(1 + x
3
+ x
4
)(1 + x + x
2
+ x
3
+ x
4
)
возьмем p = ψ
2
. Делим Q = x r
m на проверочный полином p x
4
m p
= C +
R
p или x
14
+ x
13
+ x
12
+ x
8
+ x
7
+ x
6
x
4
+ x + 1
= 1 + x + x
2
+ x
4
+ x
7
+ x
8
+ x
9
+
1 + x
3
x
4
+ x + 1
окуда получим R = x
3
+ 1 = (1001). Поскольку
Q(x) = x
14
+ x
13
+ x
12
+ x
8
+ x
7
+ x
6
= 111000111000000
то передаваемая комбинация
F есть прямая конкатенация Q ⊕ R:
Q = 111000111000000
R =
1001
F = 111000111001001
Таким образом, передаваемая кодовая комбинация имеет вид
F = (111000111001001).N
Допустим во время передачи по каналу информации в F возникла ошибка в 5
символе слева.
F = (111000111001001)

F = (111010111001001)
Опишем алгоритм определения и исправления ошибки кода БЧХ [15, 11].
Пример 3.33. Обнаружить и исправить ошибку в кодовой БЧХ последовательности
F = (111010111001001) над GF (2 4
).
Решение. Перепишем принятую кодовую комбинацию F = (111010111001001) в полиномиальном виде
F (x) =
X
F
i x
i
= x
14
+ x
13
+ x
12
+ x
10
+ x
8
+ x
7
+ x
6
+ x
3
+ 1.
Для исправления 1 ошибки нам достаточно подставить число 2 в принятую комбинацию
F (2) =
X
F
i
2
i
= 2 14
+ 2 13
+ 2 12
+ 2 10
+ 2 8
+ 2 7
+ 2 6
+ 2 3
+ 1
= 9 + 13 + 15 + 7 + 5 + 11 + 12 + 8 + 1 = 7 = 2 10

152
Глава 3. Теория помехоустойчивого кодирования
Здесь степень 2
k вычислялась по таблице индексов поля GF (2 4
), а в качестве сложения использовалась операция XOR (или см. таблицу сложения для GF (2 4
)). Поскольку
2
α
= 2 10
, то α = 10 степень искаженного разряда в полиноме кодовой комбинации:
F = (111010111001001)

F = (111000111001001)
Т.к. код БЧХ является систематическим, то для выделения информационной последовательности нам достаточно вычеркнуть r = 4 последних разряда кодовой комбинации a =
(11100011100). N
Задача 3.20.
На приемнике была получена кодовая последовательность БЧХ [15, 11] над GF (2 4
).
Восстановить исходное сообщение.
N
F
N
F
N
F
1 111100001111110 11 110011001100011 21 101010101011001 2
111100001111000 12 110011001100001 22 101010101011111 3
111100001110100 13 110011001100111 23 101010101010011 4
111100001101100 14 110011001101011 24 101010101001011 5
111100001011100 15 110011001110011 25 101010101111011 6
111100000111100 16 110011001000011 26 101010100011011 7
111100011111100 17 110011000100011 27 101010111011011 8
111100101111100 18 110011011100011 28 101010001011011 9
111101001111100 19 110011101100011 29 101011101011011 10 111110001111100 20 110010001100011 30 101000101011011
Пример 3.34. Рассмотрим построение кода БЧХ в GF (2 4
) исправляющего 2
ошибки.
Решение. Пользуясь алгоритмами построения полиномиального кода из выражения
2
r
≥ C
1 15
+ C
2 15
= 15 + 105 = 120
находим r = 7. Т.е. нам необходимо не менее 7 проверочных разрядов. Тогда из разложения x
15
− 1 = ψ
0
ψ
1
ψ
2
ψ
3
ψ
4
= (1 + x)(1 + x + x
2
)(1 + x + x
4
)(1 + x
3
+ x
4
)(1 + x + x
2
+ x
3
+ x
4
)
возьмем ψ
2
- как образующий поля GF (2 4
) и ψ
4
:
p = ψ
2
ψ
4
= (1 + x + x
4
)(1 + x + x
2
+ x
3
+ x
4
) = 1 + x
4
+ x
6
+ x
7
+ x
8
мы получим r = 8. Таким образом БЧХ код в GF (2 4
), исправляющий 2 ошибки будет иметь вид [n, k] = [15, 7].
Допустим информационная последовательность имеет вид a = (1110001) и представляется в виде m(x) = 1 + x
4
+ x
5
+ x
6

3.7. Коды БЧХ
153
Поскольку r = 8, то умножаем
Q(x) = x r
m = x
8
· (1 + x
4
+ x
5
+ x
6
) = x
14
+ x
13
+ x
12
+ x
8
Делим m = x r
Q на проверочный полином p x
8
m p
= C +
R
p или x
14
+ x
13
+ x
12
+ x
8 1 + x
4
+ x
6
+ x
7
+ x
8
= 1 + x + x
2
+ x
6
+
1 + x + x
2
+ x
4
+ x
5
+ x
6 1 + x
4
+ x
6
+ x
7
+ x
8
окуда получим R = 1 + x + x
2
+ x
4
+ x
5
+ x
6
= 01110111. Поскольку
Q(x) = x
14
+ x
13
+ x
12
+ x
8
= 111000100000000
то передаваемая комбинация
F есть прямая конкатенация Q ⊕ R:
Q = 111000100000000
R =
01110111
F = 111000101110111
Таким образом, передаваемая кодовая комбинация имеет вид
F = (111000101110111).N
Допустим во время передачи по каналу информации в
F возникло две ошибки в
3 и 8 символе слева.
F = (111000101110111)

F = (110000111110111)
Опишем алгоритм определения и исправления ошибки кода БЧХ [15, 7].
Пример 3.35. Обнаружить и исправить ошибки в БЧХ кодовой последовательности
F = (110000111110111) над GF (2 4
).
Решение. Перепишем принятую кодовую комбинацию F = (110000111110111) в полиномиальном виде
F (x) =
X
F
i x
i
= x
14
+ x
13
+ x
8
+ x
7
+ x
6
+ x
5
+ x
4
+ x
2
+ x + 1.
Для исправления двух ошибок нам необходимо рассчитать 4 значения
S
1
= F (2 1
) =
X
F
i
2
i
= 2 14
+ 2 13
+ 2 8
+ 2 7
+ 2 6
+ 2 5
+ 2 4
+ 2 2
+ 2 + 1 = 4
S
2
= F (2 2
) =
X
F
i
4
i
= 4 14
+ 4 13
+ 4 8
+ 4 7
+ 4 6
+ 4 5
+ 4 4
+ 4 2
+ 4 + 1 = 3
S
3
= F (2 3
) =
X
F
i
8
i
= 8 14
+ 8 13
+ 8 8
+ 8 7
+ 8 6
+ 8 5
+ 8 4
+ 8 2
+ 8 + 1 = 0
S
4
= F (2 4
) =
X
F
i
3
i
= 3 14
+ 3 13
+ 3 8
+ 3 7
+ 3 6
+ 3 5
+ 3 4
+ 3 2
+ 3 + 1 = 5

154
Глава 3. Теория помехоустойчивого кодирования
Те читатели, которые захотят рассчитать предыдущие суммы устно (без компьютера)
должны помнить, что в GF (2 4
) возведение в степень имеет свойства
2
k
= 2
k+15
,
т.е. 2 18
= 2 3
= 8, 2 24
= 2 9
= 10, 2 16
= 2 1
= 1,
и т.д.
Теперь вычислим (σ
1
, σ
2
) из выражения
 S
1
S
2
S
2
S
3
  σ
2
σ
1

=
 S
3
S
4

,
т.е.
 4 3 3 0
  σ
2
σ
1

=
 0 5

По методу Крамера найдем
∆ =
4 3 3 0
= 4
· 0 − 3 · 3 = 0 + 5 = 5

2
=
0 3 5 0
= 0
· 0 − 5 · 3 = 0 + 15 = 15;

1
=
4 0 3 5
= 4
· 5 − 3 · 0 = 7 + 0 = 7.
По таблице умножения в GF (2 4
) получим

−1
= 5
−1
= 11.
Тогда
σ
1
=

1

= ∆
1
· ∆
−1
= 7
· 11 = 4;
σ
2
=

2

= ∆
2
· ∆
−1
= 15
· 11 = 3.
Теперь подставим полученные значения (σ
1
, σ
2
) в уравнение
Σ(x) = 1 + σ
1
x + σ
2
x
2
= 1 + 4x + 3x
2
= (1 + 11x)(1 + 15x) = (1 + 2 7
x)(1 + 2 12
x).
Тогда α = 7 и β = 12 являются степенями искаженных разрядов в полиноме кодовой комбинации. Меняя значения разрядов на противоположные получим
F = (110000111110111)

F = (111000101110111)
- исправленную кодовую комбинацию. N
Задача 3.21.
На приемнике была получена кодовая последовательность БЧХ [15, 7] над GF (2 4
).
Восстановить исходное сообщение.
N
F
N
F
N
F
1 111110111100101 11 110110111111000 21 101001100111110 2
111000111100101 12 111010111111000 22 100101100111110 3
111010011100101 13 111100111111000 23 100011100111110 4
111010101100101 14 111111111111000 24 100000100111110 5
111010110100101 15 111110011111000 25 100001000111110 6
111010111000101 16 111110101111000 26 100001110111110 7
101111111100101 17 111110110111000 27 100001101111110 8
101110011100101 18 111110111011000 28 100001100011110 9
101110101100101 19 111110111101000 29 100001100101110 10 101110110100101 20 111110111110000 30 100001100110110

3.7. Коды БЧХ
155
Пример 3.36. Рассмотрим построение кода БЧХ [15, 5] в GF (2 4
) исправляющего
3 ошибки.
Решение. Пользуясь алгоритмами построения полиномиального кода из выражения
2
r
≥ C
1 15
+ C
2 15
+ C
3 15
= 15 + 105 + 455 = 575
находим r = 10. Т.е. нам необходимо не менее 10 проверочных разрядов. Тогда из разложения x
15
− 1 = ψ
0
ψ
1
ψ
2
ψ
3
ψ
4
= (1 + x)(1 + x + x
2
)(1 + x + x
4
)(1 + x
3
+ x
4
)(1 + x + x
2
+ x
3
+ x
4
)
возьмем ψ
2
- как образующий поля GF (2 4
), ψ
4
и ψ
1
:
p = ψ
1
ψ
2
ψ
4
= (1 + x + x
2
)(1 + x + x
4
)(1 + x + x
2
+ x
3
+ x
4
) = 1 + x + x
2
+ x
4
+ x
5
+ x
8
+ x
10
Таким образом БЧХ код в GF (2 4
), исправляющий 3 ошибки будет иметь вид [n, k] =
[15, 5].
Допустим информационная последовательность имеет вид a = (11110) и представляется в виде m(x) = x + x
2
+ x
3
+ x
4
Поскольку r = 10, то умножаем
Q(x) = x r
m = x
10
· (x + x
2
+ x
3
+ x
4
) = x
14
+ x
13
+ x
12
+ x
11
Делим Q = x r
m на проверочный полином p x
10
m p
= C +
R
p или x
14
+ x
13
+ x
12
+ x
11 1 + x + x
2
+ x
4
+ x
5
+ x
8
+ x
10
= x
3
+ x
4
+
x
3
+ x
6
+ x
7
+ x
9 1 + x + x
2
+ x
4
+ x
5
+ x
8
+ x
10
окуда получим R = x
3
+ x
6
+ x
7
+ x
9
= 1011001000. Поскольку
Q(x) = x
14
+ x
13
+ x
12
+ x
8
= 111100000000000
то передаваемая комбинация F есть прямая конкатенация Q ⊕ R:
Q = 111100000000000
R =
1011001000
F = 111101011001000
Таким образом, передаваемая кодовая комбинация имеет вид
F = (111101011001000).N
Допустим во время передачи по каналу информации в
F возникло три ошибки в
2, 5 и 11 символе слева.
F = (111101011001000)

F = (101111011011000)

156
Глава 3. Теория помехоустойчивого кодирования
Опишем алгоритм определения и исправления ошибки кода БЧХ [15, 5].
Пример 3.37. Обнаружить и исправить ошибки в БЧХ [15, 5] кодовой последовательности
F = (101111011011000) над GF (2 4
).
Решение. Перепишем принятую кодовую комбинацию F = (101111011011000) в полиномиальном виде
F (x) =
X
F
i x
i
= x
14
+ x
12
+ x
11
+ x
10
+ x
9
+ x
7
+ x
6
+ x
4
+ x
3
Для исправления двух ошибок нам необходимо рассчитать 6 значений
S
1
= F (2 1
) =
X
F
i
2
i
= 9
S
2
= F (2 2
) =
X
F
i
4
i
= 13
S
3
= F (2 3
) =
X
F
i
8
i
= 4
S
4
= F (2 4
) =
X
F
i
3
i
= 14
S
5
= F (2 5
) =
X
F
i
6
i
= 6
S
6
= F (2 6
) =
X
F
i
12
i
= 3
Теперь вычислим (σ
1
, σ
2
, σ
3
) из выражения


S
1
S
2
S
3
S
2
S
3
S
4
S
3
S
4
S
5




σ
3
σ
2
σ
1


=


S
4
S
5
S
6


,
т.е.


9 13 4
13 4
14 4
14 6




σ
3
σ
2
σ
1


=


14 6
3


По методу Крамера найдем
∆ =
9 13 4
13 4
14 4
14 6
= 14

3
=
14 13 4
6 4
14 3
14 6
= 5

2
=
9 14 4
13 6
14 4
3 6
= 9

1
=
9 13 14 13 4
6 4
14 3
= 7
По таблице умножения в GF (2 4
) получим

−1
= 14
−1
= 3.
Тогда
σ
1
=

1

= ∆
1
· ∆
−1
= 7
· 3 = 9
σ
2
=

1

= ∆
2
· ∆
−1
= 9
· 3 = 8
σ
1
=

1

= ∆
1
· ∆
−1
= 5
· 3 = 15
Теперь подставим полученные значения (σ
1
, σ
2
, σ
3
) в уравнение
Σ(x) = 1 + σ
1
x + σ
2
x
2
+ σ
3
x
3
= 1 + 9x + 8x
2
+ 15x
3
= (1 + 3x)(1 + 7x)(1 + 13x)
= (1 + 2 4
x)(1 + 2 10
x)(1 + 2 13
x).

3.7. Коды БЧХ
157
Тогда α
1
= 4, α
2
= 10, α
3
= 13 являются степенями искаженных разрядов в полиноме кодовой комбинации. Меняя значения разрядов на противоположные получим
F = (101111011011000)

F = (111101011001000)
- исправленную кодовую комбинацию. N
Задача 3.22.
На приемнике была получена кодовая последовательность БЧХ [15, 5] над GF (2 4
).
Восстановить исходное сообщение.
N
F
N
F
N
F
1 110011110101111 11 111011001000001 21 100111000010111 2
110011110101001 12 111011001001101 22 100111000010001 3
110011110100101 13 111011001010101 23 100111000011101 4
110011110111101 14 111011001100101 24 100111000000101 5
110011110001101 15 111011000000101 25 100111000110101 6
110011111101101 16 111011011000101 26 100111001010101 7
110011100101101 17 111011101000101 27 100111010010101 8
110011010101101 18 111010001000101 28 100111100010101 9
110010110101101 19 111001001000101 29 100110000010101 10 110001110101101 20 111111001000101 30 100101000010101
Для кодов исправляющих 1-2 ошибки можно предложить еще один эффективный метод декодирования. Допустим вектор F содержит две ошибки e(x) = x
α
+x
β
, тогда
S
1
= 2
α
+ 2
β
S
3
= 2 3α
+ 2 3β
Если η
1
= 2
α
, η
2
= 2
β
- локаторы ошибок, то
S
1
= η
1
+ η
2
S
3
= η
3 1
+ η
3 2
поэтому
S
3
= S
3 1
+ S
2 1
η
1
+ S
1
η
2 1

1 + S
1
η
−1 1
+ S
2 1
+ S
3
S
−1 1
 η
−2 1
= 0.
F
Если имеется 2 ошибки, то полином локаторов имеет вид
1 + S
1
x + S
2 1
+ S
3
S
−1 1
 x
2
= 0
F
Если имеется 1 ошибка, то S
3 1
+ S
3
= 0 и полином локаторов имеет вид
1 + S
1
x = 0
F
Если ошибок нет, то S
1
= S
3
= 0.

158
Глава 3. Теория помехоустойчивого кодирования
В заключение параграфа выпишем коэффициенты полинома локатора
Σ(x) = 1 + σ
1
x + σ
2
x
2
+ ... + σ
k x
k
= 0
для кода, исправляющего k<6 ошибок:
F
Коррекция 1 ошибки σ
1
= S
1
F
Коррекция 2 ошибок σ
1
= S
1
σ
2
=
S
3
+ S
3 1
S
1
F
Коррекция 3 ошибок σ
1
= S
1
σ
2
=
S
2 1
S
3
+ S
5
S
3
+ S
3 1
,
σ
3
= S
3 1
+ S
3
+ S
1
σ
2
F
Коррекция 4 ошибок σ
1
= S
1
σ
2
=
S
1
(S
7
+ S
7 1
) + S
3
(S
5 1
+ S
5
)
S
3
(S
3 1
+ S
3
) + S
1
(S
5 1
+ S
5
)
,
σ
3
= S
3 1
+ S
3
+ S
1
σ
2
,
σ
4
=
S
5
+ S
2 1
S
3
+ (S
3 1
+ S
3

2
S
1
F
Коррекция 5 ошибок σ
1
= S
1
σ
2
=
(S
3 1
+S
3
)[S
9 1
+S
9
+S
4 1
(S
5
+S
3 1
S
3
)+S
2 3
(S
3 1
+S
3
)]+(S
5 1
+S
5
)(S
7 1
+S
7
)+S
1
(S
2 3
+S
1
S
5
)
(S
3 1
+S
3
)[S
7
+S
7 1
+S
1
S
3
(S
3 1
+S
3
)]+(S
5
+S
2 1
S
3
)(S
5 1
+S
5
)
σ
3
= S
3 1
+ S
3
+ S
1
σ
2
σ
4
=
S
9 1
+ S
9
+ S
2 3
(S
3 1
+ S
3
) + S
4 1
(S
5
+ S
2 1
S
3
) + σ
2
[S
7
+ S
7 1
+ S
1
S
3
(S
3 1
+ S
3
)]
S
5 1
+ S
5
σ
5
= S
5
+ S
2 1
S
3
+ S
1
S
4
+ σ
2
(S
3 1
+ S
3
)
Пример 3.38. Обнаружить и исправить ошибки в БЧХ [7, 1] кодовой последовательности
F = (0111111) над GF (2 3
).
Решение. Вычислим вектор синдромов: S = (S
1
, S
2
, S
3
, S
4
) = (5, 7, 6, 3). Поскольку код БЧХ [7, 1] может исправить до двух ошибок, то
σ
1
= S
1
,
σ
2
=
S
3
+ S
3 1
S
1
и полином локаторов имеет вид
Σ(x) = 1 + σ
1
x + σ
2
x
2
= 1 + S
1
x +
S
3
+ S
3 1
S
1
x
2
= 1 + 5x +
6 + 5 3
5
x
2
= 1 + 5x = 1 + 2 6
x.
Т.е. ошибка в 6 степени. N

3.7. Коды БЧХ
159 3.7.4
Расширенный алгоритм Евклида
Расширенный алгоритм евклида для определения коэффициентов Безу также является итеррационным и требует вычисления остатков полиномов. Нам необходимо найти такие полиномы (Y, Σ), которые удовлетворяют равенству Безу x
r
Y + SΣ = 1.
Для этого мы записываем полином x r
через S = P S
k x
k в виде x
r
= S
· q
0
+ r
1
После чего расширенный алгоритм Евклида (относительно S) дает x
r
= S
· q
0
+ r
1 0
− 1 · q
0
=
−q
0
σ
1
= q
0
S = r
1
· q
1
+ r
2 1 + q
0
· q
1
= 1 + q
0
q
1
σ
2
= σ
1
q
1
+ 1
r
1
= r
2
· q
2
+ r
3
−q
0
− (1 + q
0
q
1
)
· q
2
=
−(q
0
+ (1 + q
0
q
1
)q
2
) σ
3
= σ
2
q
2
+ σ
1
r
2
= r
3
· q
3
+ r
5
(1 + q
0
q
1
) + (q
0
+ (1 + q
0
q
1
)q
2
)
· q
2
= σ
4
σ
4
= σ
3
q
3
+ σ
2
Этот коэффициент Безу и является полиномом локаторов:
σ
n+1
= σ
n q
n
+ σ
n−1
, σ
0
= 1, σ
−1
= 0.
F
1 ошибка
σ
1
= σ
0
q
0
= q
0
Т.к.
x r
= x
3
и
S(x) = 1 + S
1
x + S
2
x
2
= 1 + S
1
x + S
2 1
x
2
найдем q
0
x r
= S
· q
0
+ r
1
x
3
= (1 + S
1
x + S
2 1
x
2
)
 1 + S
1
x
S
3 1

+
1
S
3 1
т.е. q
0
=
1+S
1
x
S
3 1
тогда Σ = 1 + S
1
x
F
2 ошибки
σ
2
= σ
1
q
1
+ σ
0
= q
0
q
1
+ 1
нам необходимо найти q
0
и q
1
из последовательности выражений x
r
= S
· q
0
+ r
1
S = r
1
· q
1
+ r
2
Т.к.
x r
= x
5
и
S(x) = 1 + S
1
x + S
2 1
x
2
+ S
3
x
3
+ S
4 1
x
2

160
Глава 3. Теория помехоустойчивого кодирования получим x
5
= (1 + S
1
x + S
2 1
x
2
+ S
3
x
3
+ S
4 1
x
2
)
 S
3
+ S
4 1
x
S
1

+
S
3
+ (S
1
S
3
+ S
4 1
)x + (S
5 1
+ S
2 1
S
3
)x + (S
5 1
+ S
2 1
S
3
)x
2
S
1
т.е. q
0
=
S
3
+S
4 1
x
S
1
Далее
1 + xS
1
+ x
2
S
2 1
+ x
3
S
3
+ x
4
S
4 1
=
=
S
3
+ x (S
4 1
+ S
1
S
3
) + x
2
(S
5 1
+ S
2 1
S
3
) + x
3
(S
6 1
+ S
2 3
)
S
8 1
×
×
 S
14 1
+ xS
15 1
+ S
11 1
S
3
+ xS
12 1
S
3
+ S
8 1
s
2 3
S
9 1
+ S
6 1
S
3
+ S
3 1
S
2 3
+ S
3 3

+
+
S
9 1
+ x
2
S
11 1
+ x
2
S
8 1
S
3
S
9 1
+ S
6 1
S
3
+ S
3 1
S
2 3
+ S
3 3
т.е.
q
1
=
 S
14 1
+ xS
15 1
+ S
11 1
S
3
+ xS
12 1
S
3
+ S
8 1
S
2 3
S
9 1
+ S
6 1
S
3
+ S
3 1
S
2 3
+ S
3 3

тогда
1 + q
0
q
1
= 1 +
S
3
+ S
4 1
x
S
1
 S
14 1
+ xS
15 1
+ S
11 1
S
3
+ xS
12 1
S
3
+ S
8 1
S
2 3
S
9 1
+ S
6 1
S
3
+ S
3 1
S
2 3
+ S
3 3

=
S
2 1
(1 + S
1
x + x
2
(S
2 1
+ S
−1 1
S
3
))
S
9 1
+ S
6 1
S
3
+ S
3 1
S
2 3
+ S
3 3
и
Σ
2
= 1 + S
1
x + (S
2 1
+ S
−1 1
S
3
)x
2
F
3 ошибки
Σ
3
= σ
2
q
2
+ σ
1
= q
0
q
1
q
2
+ q
0
+ q
2
F
4 ошибки
Σ
4
= σ
3
q
3
+ σ
2
= q
0
q
1
q
2
q
3
+ q
0
q
3
+ q
2
q
3
+ q
1
q
0
+ 1

3.8. Совершенные недвоичные коды
161 3.8
Совершенные недвоичные коды
3.8.1
Введение
Пусть q 6= 2 - степень простого числа. Известно [1], что при k 6= 0, n не существует совершенного кода [n, k, d]
q
, отличного от

n =
q m
− 1
q
− 1
, n
− m, 3

q и
[11, 6, 5]
3
Все совершенные двоичные коды могут быть построены методом Хэмминга [2]. Для совершенных недвоичных кодов над Z
p математических проблем не возникает. Построение же кодов над GF (p m
) требует разработки новых методов. Это связано с тем, что кольцо Z
p m
не является полем. Так в [3] для кодирования в GF (2
m
) предлагается использовать дискретное преобразование Фурье. Для построения кода Рида-Соломона в [4] вводятся специфические законы сложения и умножения. Однако полученные коды имеют, соответственно, параметры [n, k] = [2
m
, 2
m−1
] и [n, k] = [2
m
− 1, 2
m
− 3] и не являются совершеннными. Несмотря на сомнительную практическую значимость,
работы по созданию новых кодов над полями малых размерностей ведутся достаточно интенсивно [5], поскольку дают взможность отработать новые алгоритмы и методы.
Аналогично, одной из основных причин пристального внимания к совершеннным кодам является то, что они нередко становятся базисными для построения других кодов. Удачно построенный алгоритм позволяет оставаться вблизи границы Синглтона даже при значительном расширении и изменении совершенного кода. В настоящей работе предлагается простой алгоритм построения совершенного кода над GF (2
m
).
3.8.2
Совершенный код в
GF (2 2
)
Построим таблицу умножения для элементов из поля Галуа GF (2 2
). Для этого предварительно найдем остатки от деления степеней x n
на примитивный полином p(x) = x
2
+ x + 1:

x
0
p(x)

= 1 = 001;

x
1
p(x)

= x = 010

x
2
p(x)

= x
2
= 011;

x
3
p(x)

= x + 1 = 001
Учитывая, что в десятичной записи
001 = 1, 010 = 2, 011 = 3
из этих остатков составим таблицу индексов для GF (2 2
)
n
0 1 2 3 2
n
1 2 3 1
ind n 3 0 1 2

162
Глава 3. Теория помехоустойчивого кодирования
Теперь, пользуясь таблицей индексов несложно построить таблицу умножения для GF (2 2
):
+
1 2 3 1 0 3 2 2 3 0 1 3 2 1 0
× 1 2 3 1 1 2 3 2 2 3 1 3 3 1 2
Таблица сложения строится как побитовое сложение элементов по модулю 2.
Совершенный код в GF (2 2
) имеет параметры [n, k] = [5, 3]. Рассмотрим правила построения проверочных символов (e
1
e
2
) по известным информационным (a
1
a
2
a
3
):
e
1
=
3
X
k=1
a k
,
e
2
=
3
X
k=1
ka k
Передаваемая кодовая комбинация теперь имеет вид
F = (a
1
a
2
a
3
e
1
e
2
).
Допустим в кодовой комбинации возникла одна ошибка:
F = (a
1
a
2
a
3
e
1
e
2
).
Тогда значение ошибки E вычисляется по формуле
E = e
1
+ e
1
,
где e
1
=
3
P
k=1
a k
, а позициция ошибки j j =
e
2
+ e
2
E
,
где e
2
=
3
P
k=1
ke k
. Если j = 0 или E = 0, то ошибка в проверочных символах.
Пример 39. Закодировать сообщение a = (321).
Решение. Пользуясь таблицами сложения и умножения поля GF (2 2
) найдем проверочные символы e
1
=
X
a k
= 3 + 2 + 1 = 0,
e
2
=
X
ka k
= 1
· 3 + 2 · 2 + 3 · 1 = 3 + 3 + 3 = 3.
Т.о. кодовая комбинация принимает вид
F = (32103). N
Допустим во время передачи информации в сообщении появилась ошибка во 2-м символе
F = (31103).
Пример 40. Обнаружить и исправить ошибку в сообщении F = (31103).

3.8. Совершенные недвоичные коды
163
Решение. Из принятой кодовой комбинации имеем (e
1
= 0, e
2
= 3). Пользуясь таблицами сложения и умножения поля GF (2 2
) найдем новые проверочные символы e
1
=
X
a k
= 3 + 1 + 1 = 3,
e
2
=
X
ka k
= 1
· 3 + 2 · 1 + 3 · 1 = 3 + 2 + 3 = 2.
Тогда значение ошибки E вычисляется по формуле
E = e
1
+ e
1
= 0 + 3 = 3,
а позициция ошибки j j =
e
2
+ e
2
E
=
3 + 2
E
=
1 3
= 2.
Прибавляя E = 3 ко второму символу a
2
+ E = 1 + 3 = 2 получим информационную комбинацию a = (321). N
Задача 3.23. Обнаружить и исправить единичную ошибку совершенного кода
[n,k]=[5,3] в GF (2 2
).
N
F
N
F
N
F
N
F
1
(2, 2, 1, 1, 3)
9
(3, 2, 2, 2, 0) 17 (2, 0, 2, 2, 0) 25 (3, 1, 2, 1, 3)
2
(1, 2, 2, 2, 0) 10 (2, 1, 0, 1, 1) 18 (3, 3, 3, 1, 3) 26 (1, 0, 3, 0, 2)
3
(0, 2, 2, 2, 0) 11 (3, 2, 3, 1, 3) 19 (2, 3, 1, 2, 2) 27 (0, 3, 0, 2, 2)
4
(2, 1, 1, 1, 1) 12 (3, 3, 1, 1, 3) 20 (1, 3, 1, 0, 2) 28 (1, 0, 2, 0, 2)
5
(3, 0, 3, 1, 3) 13 (3, 2, 0, 1, 3) 21 (1, 2, 1, 1, 3) 29 (3, 1, 0, 1, 3)
6
(1, 2, 1, 0, 2) 14 (3, 3, 1, 2, 2) 22 (3, 0, 1, 1, 3) 30 (2, 1, 2, 2, 0)
7
(1, 3, 1, 2, 2) 15 (2, 3, 2, 1, 0) 23 (3, 2, 3, 1, 3) 31 (0, 2, 1, 1, 3)
8
(2, 2, 3, 2, 0) 16 (2, 1, 3, 1, 1) 24 (3, 1, 1, 1, 3) 32 (3, 1, 1, 1, 3)
3.8.3
Совершенный код в
GF (2 3
)
Совершенный код в GF (2 3
) имеет параметры [n, k] = [9, 7]. Рассмотрим правила построения проверочных символов (e
1
e
2
) по известным информационным (a
1
a
2
...a
7
):
e
1
=
7
X
k=1
a k
,
e
2
=
7
X
k=1
ka k
Передаваемая кодовая комбинация теперь имеет вид
F = (a
1
a
2
a
3
a
4
a
5
a
6
a
7
e
1
e
2
).
Допустим в кодовой комбинации возникла одна ошибка:
F = (a
1
a
2
a
3
a
4
a
5
a
6
a
7
e
1
e
2
).
Тогда значение ошибки E вычисляется по формуле
E = e
1
+ e
1
,

164
Глава 3. Теория помехоустойчивого кодирования где e
1
=
7
P
k=1
a k
, а позициция ошибки j j =
e
2
+ e
2
E
,
где e
2
=
7
P
k=1
ke k
. Если j = 0 или E = 0, то ошибка в проверочных символах.
Пример 41. Закодировать сообщение a = (6543456).
Решение. Пользуясь таблицами сложения и умножения поля GF (2 3
) найдем проверочные символы e
1
=
X
a k
= 6 + 5 + 4 + 3 + 4 + 5 + 6 = 3,
e
2
=
X
ka k
= 1
· 6 + 2 · 5 + 3 · 4 + 4 · 3 + 5 · 4 + 6 · 5 + 7 · 6 = 6 + 1 + 7 + 7 + 2 + 3 + 4 = 2
Т.о. кодовая комбинация принимает вид
F = (654345632). N
Допустим во время передачи информации в сообщении появилась ошибка во 3-м символе
F = (651345632).
Пример 42. Обнаружить и исправить ошибку в сообщении F = (651345632).
Решение. Из принятой кодовой комбинации имеем (e
1
= 3, e
2
= 2). Пользуясь таблицами сложения и умножения поля GF (2 3
) найдем новые проверочные символы e
1
=
X
a k
= 6 + 5 + 1 + 3 + 4 + 5 + 6 = 6,
e
2
=
X
ka k
= 1
· 6 + 2 · 5 + 3 · 1 + 4 · 3 + 5 · 4 + 6 · 5 + 7 · 6 = 6 + 1 + 3 + 7 + 2 + 3 + 4 = 6
Тогда значение ошибки E вычисляется по формуле
E = e
1
+ e
1
= 3 + 6 = 5,
а позициция ошибки j j =
e
2
+ e
2
E
=
2 + 6
E
=
4 5
= 4
· 2 = 3.
Прибавляя E = 5 к третьему символу a
3
+ E = 1 + 5 = 4 выделим информационную комбинацию a = (6543456). N
Задача 3.24. Обнаружить и исправить единичную ошибку совершенного кода
[n,k]=[9,7] над GF (2 3
).

3.8. Совершенные недвоичные коды
165
N
F
N
F
N
F
1
(4, 4, 4, 3, 5, 2, 6, 1, 6) 11 (2, 3, 2, 1, 6, 4, 0, 7, 6) 21 (1, 2, 3, 2, 7, 5, 1, 7, 2)
2
(2, 3, 5, 1, 2, 3, 6, 3, 3) 12 (4, 6, 4, 3, 5, 2, 6, 1, 6) 22 (6, 3, 2, 2, 7, 0, 7, 2, 7)
3
(1, 2, 0, 2, 1, 5, 1, 7, 2) 13 (2, 3, 4, 0, 2, 3, 6, 3, 3) 23 (4, 2, 4, 3, 5, 2, 6, 1, 6)
4
(2, 3, 2, 0, 2, 3, 6, 0, 0) 14 (4, 3, 5, 0, 6, 7, 3, 2, 0) 24 (2, 0, 4, 1, 2, 3, 6, 3, 3)
5
(2, 3, 2, 5, 1, 4, 0, 7, 6) 15 (1, 2, 3, 2, 6, 5, 1, 7, 2) 25 (2, 3, 2, 1, 1, 4, 4, 7, 6)
6
(2, 3, 4, 1, 2, 3, 3, 3, 3) 16 (4, 3, 2, 1, 1, 1, 3, 0, 5) 26 (4, 3, 2, 0, 1, 6, 3, 0, 5)
7
(2, 3, 2, 5, 1, 3, 6, 1, 6) 17 (2, 3, 2, 4, 2, 3, 0, 0, 0) 27 (0, 3, 5, 2, 6, 7, 3, 2, 0)
8
(6, 3, 2, 1, 1, 6, 3, 0, 5) 18 (2, 3, 4, 1, 2, 6, 6, 3, 3) 28 (2, 0, 2, 3, 1, 3, 6, 1, 6)
9
(4, 3, 5, 2, 0, 7, 3, 2, 0) 19 (2, 0, 5, 5, 1, 3, 6, 1, 6) 29 (2, 0, 2, 4, 2, 3, 6, 0, 0)
10 (1, 7, 2, 2, 7, 0, 7, 2, 7) 20 (1, 4, 2, 2, 7, 0, 7, 2, 7) 30 (2, 3, 4, 5, 2, 3, 6, 3, 3)

166
Глава 3. Теория помехоустойчивого кодирования
3.9
Коды Рида-Соломона
Коды Рида-Соломона были предложены в 1960 Ирвином Ридом (Irving S. Reed) и
Густавом Соломоном (Gustave Solomon), являвшимися сотрудниками Линкольнской лаборатории МТИ. Они использованы на алгоритме декодирования Berlekamp-Massey.
Коды Рида-Соломона это блочные коды, которые применяются для исправления ошибок во многих системах:
- устройствах памяти CD, DVD, штриховых кодах,
- беспроводных или мобильных каналах (сотовые телефоны, микроволновые каналы и т.д.)
- спутниковых коммуникацях
- цифровом телевидении DVB (digital video broadcast).
- скоростных модемах ADSL, xDSL.
3.9.1
Исправление 1 ошибки несовершенного кода
[n, k]
q
= [7, 5]
8
Как правило пораждающий полином в конечном поле Галуа GF (2 3
) имеет вид g(x) =
b+2t−1
Y
i=b
(x
⊕ 2
i
),
где t - количество ошибок, исправляемых кодом, b - произвольная целая константа
(обычно 0 или 1).
Пример 3.43. Порождающие полиномы для исправления t=1 ошибки:
b=0:
g(x) =
2t−1
Y
i=0
(x
⊕ 2
i
) = (x
⊕ 2 0
)(x
⊕ 2 1
) = x
2
+ (1 + 2)x + (1
· 2) = x
2
+ 3x + 2,
b=1:
g(x) =
2t
Y
i=1
(x
⊕ 2
i
) = (x
⊕ 2 1
)(x
⊕ 2 2
) = x
2
+ (2 + 4)x + (2
· 4) = x
2
+ 6x + 3,
b=2:
g(x) =
2t+1
Y
i=2
(x
⊕ 2
i
) = (x
⊕ 2 2
)(x
⊕ 2 3
) = x
2
+ (4 + 3)x + (4
· 3) = x
2
+ 7x + 7. N
Здесь мы непосредственно используем таблицы сложения и умножения для поля
Галуа GF (2 3
). Однако, данные полиномы приводимы по определению и поэтому не формируют совершенных кодов, хотя и удобны в использовании. Сведем для

3.9. Коды Рида-Соломона
167
удобства в таблицу коэффициенты (c i
, d i
), необходимые для формирования проверочных символов по информационным для исправления 1 ошибки:
e
1
=
4
X
i=0
c i
a i
,
e
2
=
4
X
i=0
d i
a i
,
b g(x)
c i
d i
0 x
2
+ 3x + 2 (5, 2, 4, 7, 3) (4, 3, 5, 6, 2)
1 x
2
+ 6x + 3 (6, 7, 7, 1, 6) (2, 2, 3, 1, 3)
2 x
2
+ 7x + 7 (4, 4, 2, 4, 7) (1, 5, 1, 3, 7)
3 x
2
+ 5x + 1 (1, 5, 6, 6, 5) (5, 6, 6, 5, 1)
4 x
2
+ 1x + 4 (7, 3, 1, 5, 1) (7, 4, 2, 4, 4)
5 x
2
+ 2x + 6 (3, 1, 3, 2, 2) (6, 1, 7, 7, 6)
6 x
2
+ 4x + 5 (2, 6, 5, 3, 4) (3, 7, 4, 2, 5)
Построение кода сводится к следующей последовательности действий.
Представим информационную последовательность (a
0
, a
1
, a
2
, ..., a n
) в виде полинома u(x) =
n
X
i=0
a i
x n−i
= a
0
x n
+ a
1
x n−1
+ a
2
x n−2
+ ... + a n−1
x + a n
Сдвинем информационную последовательность на r = 2t разрядов влево, для этого умножим информационный полином u(x) на x r
:
m(x) = x r
u(x).
Разделим полученный полином на порождающий:
m(x)
g(x)
= C(x) +
R(x)
g(x)
,
или m(x) = C(x)
· g(x) + R(x).
Запишем полином остатков в виде
R(x) =
r
X
i=0
e i
x r−i
Передаваемая кодовая комбинация теперь имеет вид
F = a
0
a
1
a
2
a
3
a
4
e
1
e
2
или
F (x) = a
0
x
6
+ a
1
x
5
+ a
2
x
4
+ a
3
x
3
+ a
4
x
2
+ e
1
x + e
2

168
Глава 3. Теория помехоустойчивого кодирования
Обозначим принятую кодовую комбинацию через
F (x) = A
6
x
6
+ A
5
x
5
+ A
4
x
4
+ A
3
x
3
+ A
2
x
2
+ A
1
x + A
0
или
F = (A
6
A
5
A
4
A
3
A
2
A
1
A
0
).
Допустим, принятая кодовая комбинация
F имеет 1 ошибку. Прямой алгебраический метод исправления 1 ошибки заключается в следующем. Находим синдромы ошибки по формулам
S
0
= F (2
b
) = A
6
(2
b
)
6
+ A
5
(2
b
)
5
+ A
4
(2
b
)
4
+ A
3
(2
b
)
3
+ A
2
(2
b
)
1
+ A
1
(2
b
) + A
0
,
S
1
= F (2
b+1
) = A
6
(2
b+1
)
6
+ A
5
(2
b+1
)
5
+ A
4
(2
b+1
)
4
+ A
3
(2
b+1
)
3
+ A
2
(2
b+1
)
2
+ A
1
(2
b+1
) + A
0
Решая уравнение
S
1
= S
0
σ
по таблице индексов для GF (2 3
) находим локатор ошибки
λ = ind σ
и значение ошибки
S
0
= σ
b
E.
Ошибка величиной E находится на λ месте кодовой последовательности.
Очевидно, что размерность синдрома позволяет локализовать только 7 разрядов,
поэтому прямой алгебраический метод применяется для кода [7,5], с пятью информационными символами.
Пример 3.44. Пусть передается информационная последовательность (20105).
Для построения кода Рида-Соломона с b=0, исправляющего одну ошибку сформируем по информационным символам (a
0
, a
1
, a
2
, a
3
, a
4
) = (20105) проверочные (e
1
, e
2
):
e
1
= 5a
0
+ 2a
1
+ 4a
2
+ 7a
3
+ 3a
4
,
e
2
= 4a
0
+ 3a
1
+ 5a
2
+ 6a
3
+ 2a
4
,
или e
1
= 5
· 2 + 2 · 0 + 4 · 1 + 7 · 0 + 3 · 5 = 1 + 4 + 4 = 1,
e
2
= 4
· 2 + 3 · 0 + 5 · 1 + 6 · 0 + 2 · 5 = 3 + 5 + 1 = 7.
Код Рида-Соломона имеет вид
F = (A
6
A
5
A
4
A
3
A
2
A
1
A
0
) = (2010517).
Допустим в передаваемой кодовой последовательности возникла ошибка в 3 разряде
F = (2015517). Учитывая, что
F (x) = 2
· x
6
+ 0
· x
5
+ 1
· x
4
+ 5
· x
3
+ 5
· x
2
+ 1
· x
1
+ 7
· 1,

3.9. Коды Рида-Соломона
169
определяем синдром ошибки с помощью выражений
S
0
= F (2
b
),
и
S
1
= F (2
b+1
).
Поскольку у нас b=0, то
S
0
= F (2 0
) = F (1) = 2
· 1 6
+ 0
· 1 5
+ 1
· 1 4
+ 5
· 1 3
+ 5
· 1 2
+ 1
· 1 + 7
= 2 + 1 + 5 + 5 + 1 + 7 = 5,
S
1
= F (2 1
) = F (2) = 2
· 2 6
+ 0
· 2 5
+ 1
· 2 4
+ 5
· 2 3
+ 5
· 2 2
+ 1
· 2 + 7,
= 2
· 5 + 0 · 7 + 1 · 6 + 5 · 3 + 5 · 4 + 1 · 2 + 7,
= 1 + 6 + 4 + 2 + 2 + 7 = 4.
Для определения локатора ошибки решаем уравнение
S
1
= S
0
σ,
4 = 5σ

σ = 4
· 5
−1
Из таблицы умножения для GF (2 3
) видим, что 5
· 2 = 1, т.е. обратным элементом для 5 является 2 (т.е. 5
−1
= 2):
σ = 4
· 5
−1
= 4
· 2 = 3.
По таблице индексов находим локатор ошибки
λ = ind σ,
λ = ind 3 = 3.
Величину ошибки E найдем по формуле
S
0
= σ
b
E,
5 = 1
· E.
Т.е. к символу A
3
необходимо прибавить E = 5:
F = (2015517) → F = (2010517)
и передаваемую информационную последовательность записать в виде a = (20105)
7
N
Пример 3.45. Пусть передается информационная последовательность (54321).
Для построения кода Рида-Соломона с b=2, исправляющего одну ошибку сформируем по информационным символам (a
0
, a
1
, a
2
, a
3
, a
4
) = (54321) проверочные (e
1
, e
2
). Учитывая что для b=2 по таблице c = (44247), d = (15137) получим e
1
= (a
· c) = (54321)(44247),
e
2
= (a
· d) = (54321)(15137)
7
Данный результат F = (2010517) можно проверить следующими способами.
a) Если для a = (20105) мы получим e
1
= 1, e
2
= 7, то задача решена правильно.
b) Если для F = (2010517) мы получим S
0
= 0, S
1
= 0, то задача решена правильно.

170
Глава 3. Теория помехоустойчивого кодирования или e
1
= 5
· 4 + 4 · 4 + 3 · 2 + 2 · 4 + 1 · 7 = 2 + 6 + 6 + 3 + 7 = 6,
e
2
= 5
· 1 + 4 · 5 + 3 · 1 + 2 · 3 + 1 · 7 = 5 + 2 + 3 + 6 + 7 = 5.
Код Рида-Соломона имеет вид
F = (A
6
A
5
A
4
A
3
A
2
A
1
A
0
) = (5432165).
Допустим в передаваемой кодовой последовательности возникла ошибка в 5 разряде
F = (5732165). Учитывая, что
F (x) = 5
· x
6
+ 7
· x
5
+ 3
· x
4
+ 2
· x
3
+ 1
· x
2
+ 6
· x
1
+ 5
· 1,
определяем синдром ошибки с помощью выражений
S
0
= F (2
b
),
и
S
1
= F (2
b+1
).
Поскольку у нас b=2, то
S
0
= F (2 2
) = F (4) = 5
· 4 6
+ 7
· 4 5
+ 3
· 4 4
+ 2
· 4 3
+ 1
· 4 2
+ 6
· 4 + 5
= 5
· 7 + 7 · 3 + 3 · 2 + 2 · 5 + 1 · 6 + 6 · 4 + 5
= 6 + 2 + 6 + 1 + 6 + 5 + 5 = 5,
S
1
= F (2 3
) = F (3) = 5
· 3 6
+ 7
· 3 5
+ 3
· 3 4
+ 2
· 3 3
+ 1
· 3 2
+ 6
· 3 + 5
= 5
· 3 6
+ 7
· 3 5
+ 3
· 3 4
+ 2
· 3 3
+ 1
· 3 2
+ 6
· 3 + 5
= 5
· 6 + 7 · 2 + 3 · 7 + 2 · 4 + 1 · 5 + 6 · 3 + 5
= 3 + 5 + 2 + 3 + 5 + 1 + 5 = 6.
Для определения локатора ошибки решаем уравнение
S
1
= S
0
σ,
6 = 5σ

σ = 7.
По таблице индексов находим локатор ошибки
λ = ind σ,
λ = ind 7 = 5.
Т.е. ошибка в символе A
5
. Величину ошибки E найдем по формуле
S
0
= σ
b
E,
5 = 7 2
· E = 3 · E

E = 3.
Т.е. к символу A
5
необходимо прибавить E = 3:
F = (5732165) → F = (5432165)
и передаваемую информационную последовательность записать в виде a
= (54321).
N

3.9. Коды Рида-Соломона
171
Задача 3.25.
Обнаружить и исправить ошибку в информационной кодовой комбинации RSC[7,5] сформированной производящим полиномом g(x) поля GF (2 3
).
N
g(x)
F
N
g(x)
F
i
1
x
2
+ 3x + 2 (2, 0, 1, 7, 5, 7, 4) 16 x
2
+ 6x + 3 (7, 0, 1, 7, 5, 6, 3)
2
x
2
+ 6x + 3 (5, 6, 1, 5, 5, 7, 2) 17 x
2
+ 7x + 7 (5, 6, 3, 5, 7, 0, 5)
3
x
2
+ 7x + 7 (6, 3, 3, 4, 2, 7, 4) 18 x
2
+ 5x + 1 (6, 6, 1, 7, 5, 5, 2)
4
x
2
+ 5x + 1 (4, 5, 1, 3, 1, 5, 3) 19 x
2
+ 1x + 4 (7, 0, 4, 5, 2, 6, 1)
5
x
2
+ 1x + 4 (5, 5, 4, 4, 2, 2, 2) 20 x
2
+ 2x + 6 (4, 5, 1, 7, 3, 5, 7)
6
x
2
+ 2x + 6 (6, 4, 1, 0, 7, 4, 7) 21 x
2
+ 4x + 5 (1, 0, 0, 5, 2, 2, 1)
7
x
2
+ 4x + 5 (7, 0, 0, 4, 2, 6, 2) 22 x
2
+ 3x + 2 (4, 0, 3, 7, 5, 7, 0)
8
x
2
+ 3x + 2 (2, 5, 1, 7, 4, 5, 2) 23 x
2
+ 6x + 3 (6, 5, 1, 4, 5, 5, 3)
9
x
2
+ 6x + 3 (0, 3, 1, 5, 4, 4, 1) 24 x
2
+ 7x + 7 (6, 6, 2, 5, 6, 2, 0)
10 x
2
+ 7x + 7 (4, 5, 6, 3, 4, 5, 6) 25 x
2
+ 5x + 1 (7, 5, 3, 4, 5, 6, 5)
11 x
2
+ 5x + 1 (5, 3, 1, 5, 5, 6, 4) 26 x
2
+ 1x + 4 (0, 3, 1, 5, 6, 1, 2)
12 x
2
+ 1x + 4 (6, 3, 5, 3, 5, 1, 7) 27 x
2
+ 2x + 6 (1, 0, 3, 4, 3, 4, 6)
13 x
2
+ 2x + 6 (7, 4, 1, 5, 2, 7, 4) 28 x
2
+ 4x + 5 (2, 4, 4, 5, 5, 2, 5)
14 x
2
+ 4x + 5 (1, 5, 1, 3, 5, 4, 2) 29 x
2
+ 3x + 2 (2, 3, 1, 1, 3, 4, 4)
15 x
2
+ 3x + 2 (3, 4, 2, 1, 5, 2, 1) 30 x
2
+ 6x + 3 (5, 4, 3, 2, 1, 5, 0)

172
Глава 3. Теория помехоустойчивого кодирования
3.9.2
Исправление 2 ошибок несовершенного кода
[n, k]
q
= [7, 3]
8
Для исправления t = 2 ошибок мы создаем r = 2t = 4 проверочных символа которые могут принимать 8 4
= 4096 значений, достаточных для обнаружения 1 и 2 ошибок максимум в n = 13 разрядах, поскольку:
1 + C
1 13 7 + C
2 13 7
2
= 3914 < 8 4
Расмотрим алгебраический метод декодирования для исправления 2 ошибок.
Пример 3.46. Порождающие полиномы для исправления t=2 ошибок:
b=0:
g(x) =
2t−1
Y
i=0
(x
⊕ 2
i
) =
3
Y
i=0
(x
⊕ 2
i
) = (x
⊕ 2 0
)(x
⊕ 2 1
)(x
⊕ 2 2
)(x
⊕ 2 3
)
= (x
⊕ 1)(x ⊕ 2)(x ⊕ 4)(x ⊕ 3) = x
4
+ (1 + 2 + 4 + 3)x
3
+(1
· 2 + 1 · 4 + 1 · 3 + 2 · 4 + 2 · 3 + 4 · 3)x
2
+(1
· 2 · 4 + 1 · 2 · 3 + 1 · 4 · 3 + 2 · 4 · 3)x + 1 · 2 · 4 · 3
= x
4
+ 4x
3
+ (2 + 4 + 3 + 3 + 6 + 7)x
2
+ (3 + 6 + 7 + 5)x + 5
= x
4
+ 4x
3
+ 7x
2
+ 7x + 5
b=1:
g(x) =
2t
Y
i=1
(x
⊕ 2
i
) =
4
Y
i=1
(x
⊕ 2
i
) = (x
⊕ 2 1
)(x
⊕ 2 2
)(x
⊕ 2 3
)(x
⊕ 2 4
)
= (x
⊕ 2)(x ⊕ 4)(x ⊕ 3)(x ⊕ 6) = x
4
+ 3x
3
+ 4x
2
+ 2x + 3
b=2:
g(x) =
2t+1
Y
i=2
(x
⊕ 2
i
) =
5
Y
i=2
(x
⊕ 2
i
) = (x
⊕ 2 2
)(x
⊕ 2 3
)(x
⊕ 2 4
)(x
⊕ 2 5
)
= (x
⊕ 4)(x ⊕ 3)(x ⊕ 6)(x ⊕ 7) = x
4
+ 6x
3
+ 4x
2
+ 6x + 1 N
Сведем для удобства в таблицу коэффициенты (c i
, d i
, h i
, f i
), необходимые для формирования проверочных символов по информационным для исправления 2 ошибок:
e
1
=
X
a k
c k
,
e
2
=
X
a k
d k
,
e
3
=
X
a k
h k
,
e
4
=
X
a k
f k
b g(x)
c i
d i
h i
f i
0 x
4
+ 4x
3
+ 7x
2
+ 7x + 5 (2, 1, 4) (3, 6, 7) (5, 4, 7) (5, 2, 5)
1 x
4
+ 3x
3
+ x
2
+ 2x + 3
(6, 4, 3) (1, 1, 1) (6, 5, 2) (7, 5, 3)
2 x
4
+ 6x
3
+ 4x
2
+ 6x + 1 (1, 6, 6) (6, 3, 4) (4, 3, 6) (6, 6, 1)
3 x
4
+ 7x
3
+ 6x
2
+ x + 6
(3, 5, 7) (2, 5, 6) (1, 1, 1) (3, 4, 6)
4 x
4
+ 5x
3
+ 5x
2
+ 3x + 2 (5, 2, 5) (7, 4, 5) (7, 6, 3) (4, 1, 2)
5 x
4
+ x
3
+ 2x
2
+ 5x + 7
(4, 3, 1) (4, 7, 2) (3, 2, 5) (2, 7, 7)
6 x
4
+ 2x
3
+ 3x
2
+ 4x + 4 (7, 7, 2) (5, 2, 3) (2, 7, 4) (1, 3, 4)

3.9. Коды Рида-Соломона
173
Для исправления 2 ошибок возьмем 4 проверочных разряда. Передаваемая кодовая комбинация теперь имеет вид
F = a
0
a
1
a
2
e
1
e
2
e
3
e
4
или
F (x) = a
0
x
6
+ a
1
x
5
+ a
2
x
4
+ e
1
x
3
+ e
2
x
2
+ e
3
x + e
4
Допустим, принятая кодовая комбинация
F (x) = A
6
x
6
+ A
5
x
5
+ A
4
x
4
+ A
3
x
3
+ A
2
x
2
+ A
1
x + A
0
имеет 2 ошибки. Прямой алгебраический метод исправления 2 ошибок заключается в следующем. Находим синдромы ошибки по формулам
S
k
= F (2
b+k
).
Например, для b=0, получим
S
0
= F (2 0
) = F (1) = A
6 1
6
+ A
5 1
5
+ A
4 1
4
+ A
3 1
3
+ A
2 1
2
+ A
1 1
1
+ A
0
,
S
1
= F (2 1
) = F (2) = A
6 2
6
+ A
5 2
5
+ A
4 2
4
+ A
3 2
3
+ A
2 2
2
+ A
1 2
1
+ A
0
,
S
2
= F (2 2
) = F (4) = A
6 4
6
+ A
5 4
5
+ A
4 4
4
+ A
3 4
3
+ A
2 4
2
+ A
1 4
1
+ A
0
,
S
3
= F (2 3
) = F (3) = A
6 3
6
+ A
5 3
5
+ A
4 3
4
+ A
3 3
3
+ A
2 3
2
+ A
1 3
1
+ A
0
Решая уравнение
 S
2
S
3

=
 S
0
S
1
S
1
S
2
  σ
2
σ
1

находим многочлен локаторов ошибок
σ(x) = 1 + σ
1
x + σ
2
x
2
=
ν
Y
k=1
(1 + α
k x)
корни которого равны обратным величинам локаторов ошибок.
Для нахождения значения ошибок наобходимо решить систему
 S
0
S
1

=

α
b
1
α
b
2
α
b+1 1
α
b+1 2
  e
1
e
2

Ошибка величиной E
k
= ind(e k
) находится на λ
k
= ind(σ
k
) месте кодовой последовательности.
Очевидно, что размерность синдрома позволяет локализовать только 7 разрядов,
поэтому прямой алгебраический метод применяется для кода [7,3], с тремя информационными символами.
Пример 3.47.
Пусть передается информационная последовательность (753).
Для построения кода Рида-Соломона с b=0, исправляющего две ошибки сформируем по информационным символам (a
0
, a
1
, a
2
) = (753) проверочные (e
1
, e
2
, e
3
, e
4
):
e
1
=
X
a k
c k
,
e
2
=
X
a k
d k
,
e
3
=
X
a k
h k
,
e
4
=
X
a k
f k

174
Глава 3. Теория помехоустойчивого кодирования или e
1
= 2a
1
+ 1a
2
+ 4a
3
= 2
· 7 + 1 · 5 + 4 · 3 = 5 + 5 + 7 = 7,
e
2
= 3a
1
+ 6a
2
+ 7a
3
= 3
· 7 + 6 · 5 + 7 · 3 = 2 + 3 + 2 = 3,
e
3
= 5a
1
+ 4a
2
+ 7a
3
= 5
· 7 + 4 · 5 + 7 · 3 = 6 + 2 + 2 = 6,
e
4
= 5a
1
+ 2a
2
+ 5a
3
= 5
· 7 + 2 · 5 + 5 · 3 = 6 + 1 + 4 = 3.
Код Рида-Соломона для данной информационной последовательности имеет вид
F = (7537363).
Допустим в передаваемой кодовой последовательности возникли ошибки в 4 и 5
разряде
F = (7537363) ⇒ F = (7667363). Учитывая, что
F (x) = 7
· x
6
+ 6
· x
5
+ 6
· x
4
+ 7
· x
3
+ 3
· x
2
+ 6
· x
1
+ 3
· 1,
определяем синдром ошибки с помощью выражений
S
0
= F (2
b
) = 7
· 1 6
+ 6
· 1 5
+ 6
· 1 4
+ 7
· 1 3
+ 3
· 1 2
+ 6
· 1 + 3 = 6
S
1
= F (2
b+1
) = 7
· 2 6
+ 6
· 2 5
+ 6
· 2 4
+ 7
· 2 3
+ 3
· 2 2
+ 6
· 2 + 3 = 1,
S
2
= F (2
b+2
) = 7
· 4 6
+ 6
· 4 5
+ 6
· 4 4
+ 7
· 4 3
+ 3
· 4 2
+ 6
· 4 + 3 = 4,
S
3
= F (2
b+3
) = 7
· 3 6
+ 6
· 3 5
+ 6
· 3 4
+ 7
· 3 3
+ 3
· 3 2
+ 6
· 3 + 3 = 0.
Для определения локатора ошибки нам необходимо решить систему
 S
2
S
3

=
 S
0
S
1
S
1
S
2
  σ
2
σ
1

или
 4 0

=
 6 1 1 4
  σ
2
σ
1

Методом Крамера, получим
∆ =
6 1 1 4
= 6
· 4 − 1 · 1 = 5 + 1 = 4

2
=
4 1 0 4
= 4
· 4 − 0 · 1 = 6 + 0 = 6

1
=
6 4 1 0
= 6
· 0 − 1 · 4 = 0 + 4 = 4
Из таблицы умножения для GF (2 3
) видим, что 4
· 7 = 1, т.е. обратным элементом для 4 является 7. Тогда
σ
2
=

2

=
6 4
= 6
· 7 = 4, σ
1
=

1

=
4 4
= 4
· 7 = 1.

3.9. Коды Рида-Соломона
175
Построим многочлен локаторов ошибки
σ(x) = 1 + σ
1
x + σ
2
x
2
= 1 + x + 4x
2
Для решения данного уравнения воспользуемся формулами Виета
 x
1
+ x
2
= σ
1
x
1
· x
2
= σ
2
или
 x
1
+ x
2
= 1
x
1
· x
2
= 4
По таблицам сложения и умножения для GF (2 3
) находим x
1
= 6, x
2
= 7, тогда
σ(x) = 1 + x + 4x
2
= (1 + 6x)(1 + 7x) = (1 + 2 4
x)(1 + 2 5
x).
и ошибки локализованы в разрядах
λ
1
= ind x
1
= ind 6 = 4 и λ
2
= ind x
2
= ind 7 = 5.
Т.е. ошибки в символах A
4
и A
5
(коэффициенты при степенях x
4
и x
5
) полинома
F (x).
Для нахождения значения ошибок решим систему
 S
0
S
1

=

x b
1
x b
2
x b+1 1
x b+1 2
  e
1
e
2

или
 6 1

=
 1 1 6 7
  e
1
e
2

Методом Крамера, получим
∆ =
1 1 6 7
= 1
· 7 − 6 · 1 = 7 + 6 = 1

1
=
6 1 1 7
= 6
· 7 − 1 · 1 = 4 + 1 = 5

2
=
1 6 6 1
= 1
· 1 − 6 · 6 = 1 + 2 = 3
Тогда e
1
=

1

=
5 1
= 5,
e
2
=

2

=
3 1
= 3.
Т.о. мы имеем ошибку в разряде x
4
со значением E
4
= 5 и в разряде x
5
со значением
E
5
= 3. Исправляя ошибки, получим
F (x) = 7
· x
6
+ 6
· x
5
+ 6
· x
4
+ 7
· x
3
+ 3
· x
2
+ 6
· x
1
+ 3
· 1,
F (x) = 7
· x
6
+ (6 + 3)
· x
5
+ (6 + 5)
· x
4
+ 7
· x
3
+ 3
· x
2
+ 6
· x
1
+ 3
· 1
= 7
· x
6
+ 5
· x
5
+ 3
· x
4
+ 7
· x
3
+ 3
· x
2
+ 6
· x
1
+ 3
· 1

176
Глава 3. Теория помехоустойчивого кодирования или
F (x) = (7 667363)

F (x) = (7 537363)
и исправленная информационная последовательность имеет вид a = (753)
8
. N
Пример 3.48.
Построить код Рида-Соломона, иправляющего 2 ошибки для информационной последовательности a = (264).
Для построения кода Рида-Соломона с b=3, исправляющего две ошибки сформируем по информационным символам (a
0
, a
1
, a
2
) = (264) проверочные (e
1
, e
2
, e
3
, e
4
):
e
1
=
X
a k
c k
,
e
2
=
X
a k
d k
,
e
3
=
X
a k
h k
,
e
4
=
X
a k
f k
Из таблицы коэффициентов для кода [7, 3]
8
для b=3, g(x) = x
4
+ 7x
3
+ 6x
2
+ x + 6
имеем:
c = (357),
d = (256),
h = (111),
f = (346)
или e
1
= (a
· c) = 2 · 3 + 6 · 5 + 4 · 7 = 6 + 3 + 1 = 4,
e
2
= (a
· d) = 2 · 2 + 6 · 5 + 4 · 6 = 4 + 3 + 5 = 2,
e
3
= (a
· h) = 2 · 1 + 6 · 1 + 4 · 1 = 2 + 6 + 4 = 0,
e
4
= (a
· f) = 2 · 3 + 6 · 4 + 4 · 6 = 6 + 5 + 5 = 6.
Код Рида-Соломона для данной информационной последовательности имеет вид
F = (2644206).
Допустим в передаваемой кодовой последовательности возникли ошибки в 2 и 6
разряде
F = (2644206) ⇒ F = (7644606). Учитывая, что
F (x) = 7
· x
6
+ 6
· x
5
+ 4
· x
4
+ 4
· x
3
+ 6
· x
2
+ 0
· x
1
+ 6
· 1,
определяем синдром ошибки при b=3 с помощью выражений
S
0
=
F (2
b
) = F (2 3
) = F (3)
= 7
· 3 6
+ 6
· 3 5
+ 4
· 3 4
+ 4
· 3 3
+ 6
· 3 2
+ 0
· 3 + 6
= 7
· 6 + 6 · 2 + 4 · 7 + 4 · 4 + 6 · 5 + 0 · 3 + 6
= 4 + 7 + 1 + 6 + 3 + 0 + 6 = 1
S
1
=
F (2
b+1
) = F (2 4
) = F (6)
= 7
· 6 6
+ 6
· 6 5
+ 4
· 6 4
+ 4
· 6 3
+ 6
· 6 2
+ 0
· 6 + 6 = 1
= 7
· 3 + 6 · 5 + 4 · 4 + 4 · 7 + 6 · 2 + 0 · 6 + 6
= 2 + 3 + 6 + 1 + 7 + 0 + 6 = 7,
8
Данный результат F = (7537363) можно проверить следующими способами.
a) Если для a = (753) мы получим e = (7363), то задача решена правильно.
b) Если для F = (7537363) мы получим S
0
= S
1
= S
2
= S
3
= 0, то задача решена правильно.

3.9. Коды Рида-Соломона
177
S
2
= F (2
b+2
) = F (2 5
) = F (7)
= 7
· 7 6
+ 6
· 7 5
+ 4
· 7 4
+ 4
· 7 3
+ 6
· 7 2
+ 0
· 7 + 6
= 7
· 4 + 6 · 6 + 4 · 5 + 4 · 2 + 6 · 3 + 0 · 7 + 6
= 1 + 2 + 2 + 3 + 1 + 0 + 6 = 5,
S
3
= F (2
b+3
) = F (2 6
) = F (5)
= 7
· 5 6
+ 6
· 5 5
+ 4
· 5 4
+ 4
· 5 3
+ 6
· 5 2
+ 0
· 5 + 6
= 7
· 2 + 6 · 4 + 4 · 3 + 4 · 6 + 6 · 7 + 0 · 5 + 6
= 5 + 5 + 7 + 5 + 4 + 0 + 6 = 0.
Для определения локатора ошибки нам необходимо решить систему
 S
2
S
3

=
 S
0
S
1
S
1
S
2
  σ
2
σ
1

или
 5 0

=
 1 7 7 5
  σ
2
σ
1

Методом Крамера, получим
∆ =
1 7 7 5
= 1
· 5 − 7 · 7 = 5 + 3 = 6

2
=
5 7 0 5
= 5
· 5 − 0 · 7 = 7 + 0 = 7

1
=
1 5 7 0
= 1
· 0 − 7 · 5 = 0 + 6 = 6
Из таблицы умножения для GF (2 3
) видим, что 6
· 3 = 1, т.е. обратным элементом для 6 является 3. Тогда
σ
2
=

2

=
7 6
= 7
· 3 = 2, σ
1
=

1

=
6 6
= 6
· 3 = 1.
Построим многочлен локаторов ошибки
σ(x) = 1 + σ
1
x + σ
2
x
2
= 1 + x + 2x
2
Для решения данного уравнения воспользуемся формулами Виета
 x
1
+ x
2
= σ
1
x
1
· x
2
= σ
2
или
 x
1
+ x
2
= 1
x
1
· x
2
= 2
По таблицам сложения и умножения для GF (2 3
) находим x
1
= 4, x
2
= 5, тогда
σ(x) = 1 + x + 2x
2
= (1 + 4x)(1 + 5x) = (1 + 2 2
x)(1 + 2 6
x).

178
Глава 3. Теория помехоустойчивого кодирования и ошибки локализованы в разрядах
λ
1
= ind x
1
= ind 4 = 2 и λ
2
= ind x
2
= ind 5 = 6.
Т.е. ошибки в символах A
2
и A
6
(коэффициенты при степенях x
2
и x
6
) полинома
F (x).
Для нахождения значения ошибок решим систему
 S
0
S
1

=

x b
1
x b
2
x b+1 1
x b+1 2
  e
1
e
2

или
 1 7

=
 4 3
5 3
4 4
5 4
  e
1
e
2

=
 5 6 2 3
  e
1
e
2

Методом Крамера, получим
∆ =
5 6 2 3
= 5
· 3 − 2 · 6 = 4 + 7 = 3

1
=
1 6 7 3
= 1
· 3 − 7 · 6 = 3 + 4 = 7

2
=
5 1 2 7
= 5
· 7 − 2 · 1 = 6 + 2 = 4
Тогда e
1
=

1

=
7 3
= 7
· 6 = 4, e
2
=

2

=
4 3
= 4
· 6 = 5.
Т.о. мы имеем ошибку в разряде x
2
со значением E
2
= 4 и в разряде x
6
со значением
E
6
= 5. Исправляя ошибки, получим
F = (7644606) ⇒ F = (2644206)
и исправленная информационная последовательность имеет вид a = (264)
9
. N
Пример 3.49. Обнаружить и исправить ошибки в принятой последовательности
F = (6254420) кода [n, k] = [7, 3] построеной при помощи полинома b=4 в GF (2 3
).
Учитывая, что
F (x) = 6
· x
6
+ 2
· x
5
+ 5
· x
4
+ 4
· x
3
+ 4
· x
2
+ 2
· x
1
+ 0
· 1,
определяем синдром ошибки при b=4 с помощью выражений
S
0
=
F (2
b
) = F (2 4
) = F (6)
= 6
· 6 6
+ 2
· 6 5
+ 5
· 6 4
+ 4
· 6 3
+ 4
· 6 2
+ 2
· 6 + 0
= 6
· 3 + 2 · 5 + 5 · 4 + 4 · 7 + 4 · 2 + 2 · 6 + 0
= 1 + 1 + 2 + 1 + 3 + 7 + 0 = 7 9
Данный результат F = (2644206) можно проверить следующими способами.
a) Если для a = (264) мы получим e = (4206), то задача решена правильно.
b) Если для F = (2644206) мы получим S
0
= S
1
= S
2
= S
3
= 0, то задача решена правильно.

3.9. Коды Рида-Соломона
179
S
1
=
F (2
b+1
) = F (2 5
) = F (7)
= 6
· 7 6
+ 2
· 7 5
+ 5
· 7 4
+ 4
· 7 3
+ 4
· 7 2
+ 2
· 7 + 0
= 6
· 4 + 2 · 6 + 5 · 5 + 4 · 2 + 4 · 3 + 2 · 7 + 0
= 5 + 7 + 7 + 3 + 7 + 5 + 0 = 4,
S
2
= F (2
b+2
) = F (2 6
) = F (5)
= 6
· 5 6
+ 2
· 5 5
+ 5
· 5 4
+ 4
· 5 3
+ 4
· 5 2
+ 2
· 5 + 0
= 6
· 2 + 2 · 4 + 5 · 3 + 4 · 6 + 4 · 7 + 2 · 5 + 0
= 7 + 3 + 4 + 5 + 1 + 1 + 0 = 5,
S
3
= F (2
b+3
) = F (2 7
) = F (1)
= 6
· 1 6
+ 2
· 1 5
+ 5
· 1 4
+ 4
· 1 3
+ 4
· 1 2
+ 2
· 1 + 0
= 6
· 1 + 2 · 1 + 5 · 1 + 4 · 1 + 4 · 1 + 2 · 1 + 0
= 6 + 2 + 5 + 4 + 4 + 2 + 0 = 3.
Для определения локатора ошибки нам необходимо решить систему
 S
2
S
3

=
 S
0
S
1
S
1
S
2
  σ
2
σ
1

,
или
 5 3

=
 7 4 4 5
  σ
2
σ
1

Методом Крамера, получим
∆ =
7 4 4 5
= 7
· 5 − 4 · 4 = 6 + 6 = 0

2
=
5 4 3 5
= 5
· 5 − 3 · 4 = 7 + 7 = 0

1
=
7 5 4 3
= 7
· 3 − 4 · 5 = 2 + 2 = 0
Поскольку главный определитель равен нулю, мы заключаем, что в принятой последовательности произошла только одна ошибка. Для ее локализации решаем уравнение
S
1
= σS
0
или 4 = σ7

σ = 6 = 2 4
Т.е. ошибка локализована в символе A
4
(коэффициент при степени x
4
полинома
F (x)). Значение ошибки находим по формуле
S
0
= σ
b
E
или 7 = 6 4
E = 4E

E = 4
−1 7 = 7
· 7 = 3.
Т.о. мы имеем ошибку в разряде x
4
со значением E
4
= 3. Исправляя ошибку, получим
F = (6254420) ⇒ F = (6264420)

180
Глава 3. Теория помехоустойчивого кодирования и исправленная информационная последовательность имеет вид a = (626)
10
. N
Задача 3.26. Обнаружить и исправить 2 ошибки в информационной кодовой комбинации RSC[7,3] сформированной производящим полиномом g(x) поля GF (2 3
).
N
g(x)
F
i
N
g(x)
F
i
1
x
4
+ 4x
3
+ 7x
2
+ 7x + 5 (4562373) 16 x
4
+ 3x
3
+ 1x
2
+ 2x + 3 (1615153)
2
x
4
+ 3x
3
+ 1x
2
+ 2x + 3 (2732576) 17 x
4
+ 6x
3
+ 4x
2
+ 6x + 1 (7563113)
3
x
4
+ 6x
3
+ 4x
2
+ 6x + 1 (1247370) 18 x
4
+ 7x
3
+ 6x
2
+ 1x + 6 (4431737)
4
x
4
+ 7x
3
+ 6x
2
+ 1x + 6 (5116230) 19 x
4
+ 5x
3
+ 5x
2
+ 3x + 2 (4661674)
5
x
4
+ 5x
3
+ 5x
2
+ 3x + 2 (2325111) 20 x
4
+ 1x
3
+ 2x
2
+ 5x + 7 (5564312)
6
x
4
+ 1x
3
+ 2x
2
+ 5x + 7 (3333005) 21 x
4
+ 2x
3
+ 3x
2
+ 4x + 4 (5471253)
7
x
4
+ 2x
3
+ 3x
2
+ 4x + 4 (4117765) 22 x
4
+ 4x
3
+ 7x
2
+ 7x + 5 (2715001)
8
x
4
+ 4x
3
+ 7x
2
+ 7x + 5 (2453626) 23 x
4
+ 3x
3
+ 1x
2
+ 2x + 3 (6262477)
9
x
4
+ 3x
3
+ 1x
2
+ 2x + 3 (0650027) 24 x
4
+ 6x
3
+ 4x
2
+ 6x + 1 (5525355)
10 x
4
+ 6x
3
+ 4x
2
+ 6x + 1 (0114252) 25 x
4
+ 7x
3
+ 6x
2
+ 1x + 6 (3270440)
11 x
4
+ 7x
3
+ 6x
2
+ 1x + 6 (2421121) 26 x
4
+ 5x
3
+ 5x
2
+ 3x + 2 (2264425)
12 x
4
+ 5x
3
+ 5x
2
+ 3x + 2 (3634162) 27 x
4
+ 1x
3
+ 2x
2
+ 5x + 7 (5253561)
13 x
4
+ 1x
3
+ 2x
2
+ 5x + 7 (3615206) 28 x
4
+ 2x
3
+ 3x
2
+ 4x + 4 (2727517)
14 x
4
+ 2x
3
+ 3x
2
+ 4x + 4 (2264027) 29 x
4
+ 4x
3
+ 7x
2
+ 7x + 5 (1426013)
15 x
4
+ 4x
3
+ 7x
2
+ 7x + 5 (3262616) 30 x
4
+ 3x
3
+ 1x
2
+ 2x + 3 (2535555)
10
Данный результат F = (6264420) можно проверить следующими способами.
a) Если для a = (626) мы получим e = (4420), то задача решена правильно.
b) Если для F = (6264420) мы получим S
0
= S
1
= S
2
= S
3
= 0, то задача решена правильно.

3.10. Алгоритм Берлекемпа-Месси
181 3.10
Алгоритм Берлекемпа-Месси
d =0
c = c+d Bx
2L
B=c/d, c=c
L=i-L
c=c
B=Bx
i
j i-j
i
+
i
i=n
+
1   ...   6   7   8   9   10   11   12   13   14


написать администратору сайта