
Методы по алгебре Липницкий, БГУИР (Мет пособие) / Пособ_ТК
.pdf5. ВАЖНЕЙШИЕ КОДЫ
5.1. БЧХ-коды
Определение примитивного БЧХ-кода. Пусть m и t < qm −1 - целые числа,
тогда q-ичный БЧХ-код имеет параметры n = qm −1; k ≥ n − m t ; dmin ≥ 2t +1. Код формируется генераторным полиномом g(x), имеющим корнями примитивный
элемент поля GF(qm ) αi , i =1,..., 2t ,. Соответственно
g(x) = НОК(mα (x), mα2 (x),..., mα2t (x)) , |
(5.1) |
где mαi - минимальный полином, соответствующий элементу поля αi .
Для q = 2 в поле GF(2m ) элементы α и α2 имеют одинаковые минимальные полиномы, поэтому для двоичного БЧХ-кода:
|
|
|
g(x) = НОК(mα (x),mα3 (x),...,mα2t −1 (x)) |
|
(5.2) |
|||||||||
|
|
Расширенные БЧХ-коды формируются по следующему правилу: |
|
|||||||||||
|
|
g(x) = НОК(m |
b (x), m |
|
b+1 (x),...,m b+2t −1 (x)) |
(5.3) |
||||||||
|
|
|
|
|
α |
α |
|
|
|
|
α |
|
|
|
|
|
Пусть необходимо исправить t ошибок. Предположим, что |
|
|
||||||||||
|
|
|
|
g(x) = НОК(m1(x),m2 (x),...,mr (x)) , |
|
(5.4) |
||||||||
где mi (x) = mαi . Код принятого сигнала можно записать как |
|
|
||||||||||||
|
|
y(x) = c(x) + e(x) , |
e(x) = e |
+ e x + e |
2 |
x2 +... + e |
n−1 |
xn−1, |
||||||
|
|
|
|
|
|
0 |
|
1 |
|
|
|
|
||
где e(x) - полином ошибки. |
|
|
|
|
|
|
|
|
|
|
||||
|
|
Если примем, что ηi - корни генераторного полинома g(x), тогда |
|
|||||||||||
|
|
|
|
|
y(ηi ) = e(ηi ) = S j , |
|
|
|
|
(5.5) |
||||
|
|
|
|
|
|
|
|
|
|
|
n−1 |
|
|
|
где Sj - это j-тая компонента синдрома, равная |
S j |
= |
∑ ei ηij . Выберем множество |
|||||||||||
{η |
|
|
|
|
|
|
|
|
|
|
i=0 |
|
|
|
j |
в виде (η ,...,η |
j |
) = (α,α2 |
,α3,...,α2t ) ,где |
α |
|
- |
примитивный |
элемент поля |
|||||
|
1 |
|
|
|
|
|
|
|
|
|
|
|
63

GF(qm ) . Такая конструкция позволяет по множеству {S j исправить t ошибок.
|
Алгоритм формирования кода имеет следующий вид: |
1. |
Строится поле GF(qm ) , для которого α - примитивный элемент поля. |
2. |
Определяются примитивные полиномы mi (x) = mαi (x) для αi , i =1,...,2t |
3. Находится g(x) как g(x) = НОК(m1(x),m2 (x),...,m2t (x)) .
Пример. Пусть в поле GF(24 ) m = 4, q = 2 . Положим t = 2, n = 24 −1 =15, k ≥ n − m t =15 − 4 2 = 7 , тогда
g(x) = НОК(m (x),m (x),m (x),m (x)) =
=НОК[x4 + x +1, x4 + x +1, x4 + x3 + x2 + x +1, x4 + x +1]=
=(x4 + x +1) (x4 + x3 + x2 + x +1) = x8 + x7 + x6 + x4 +1.1 2 3 4
Соответственно, dmin ≥ 2 2 +1 = 5, deg(g(x)) = 8, что дает r = n − k = 8, k = 7 . В результате получается БЧХ-код с параметрами (15,7,5) .
Структура БЧХ-кодов тесно связана с понятием циклотомических классов. Рассмотрим возможность построения БЧХ-кода, корректирующего три ошибки. Определим конечное поле GF(24), для которого существует четыре циклотомических класса K1 = {1, 2, 4, 8}; K2 ={3, 6, 12, 9}; K5= {5, 10}; K7 = {7, 14, 13, 11}.
Возьмем элемент поля α3 GF(24 ) , которому соответствует минимальный неприводимый в Z2 [x] полином m3 (x) = x4 + x3 + x2 + x +1. Элемент α3 является корнем полинома (x5 - 1). Элементы α и α3 являются корнями полинома
m13 (x) = m1 (x)m3 (x) = (x4 + x +1)m3 (x) = x8 + x7 + x6 + x4 +1.
Степень примитивного элемента поля (α5 )3 = α15 =1 и, следовательно, α5- является корнем многочлена x3 – 1 = x3 + 1 = (x + 1) (x2 + x + 1) и кодовые слова должны
быть кратны полиному
g(x) = m135(x) = m13(x) m5(x) = m13(x) (x2 + x + 1) = x10 + x8 + x5 +x4 +x2 +x + 1.
В результате получается БЧХ-код с параметрами (15,5,7) .
Возможности поля GF(24) позволяют построить код, корректирующий четыре ошибки. Действительно, структура циклотомических классов показывает, что может быть определен минимальный полином m7(x), корнями которого являются степени
α7 ,α14 ,α13,α11. Требуемый полином m(x), на основе которого формируется код, определяется через произведение g(x) = m1357 (x) = m1(x)m3(x)m5 (x)m7 (x) и имеет
64
степень, равную 14. Получается БЧХ-код (15, 1) с одним информационным символом.
Проверочные частоты. В несистематическом виде циклический код записывается в виде произведения полиномов c(x) = a(x)g(x) . Дискретное
n−1
преобразование Фурье в конечном поле задается как Ek = ∑el ωlk , k = 1,…, 2t , при
l=0
ωi =αi . В частотной области можно определить образы Фурье для кодового слова Cω ={Cω,i} и порождающего полинома Gω ={Gω,i} . Роль спектральных компонент
образа Gω,i состоит в том, чтобы задать частоты, в которых стоят нулевые спектральные компоненты Cω,i . Циклический код можно определить как множество
таких кодовых слов над полем GF(p), у которых все спектральные компоненты, принадлежащие заданному множеству так называемых проверочных частот
j1,..., jn−k , равны нулю. В этом случае элемент α j является корнем многочлена g(x) . При этом обратные преобразования Фурье спектральных векторов кода должны принадлежать полю GF(p). Это условие выполняется, если соблюдены ограничения сопряженности. Если V есть n-мерный вектор с компонентами из GF(pm), где n делит (pm - 1), тогда обратное преобразование Фурье является вектором с компонентами из
GF(p), когда выполняются равенства V jp =V(( pj)) , j = 0, …, n – 1.
Коды БЧХ являются циклическими кодами, в которых проверочные частоты выбираются последовательно. Исправляющий t ошибок код БЧХ длиной (pm - 1) определяется как множество всех кодовых слов над GF(p), спектр которых равен нулю в заданном блоке из 2t последовательных частот.
5.2. Декодирование БЧХ-кодов
Предположим, что задан БЧХ-код, корректирующий t ошибок, и при приеме
произошло ν |
ошибок, причём |
0 ≤ν ≤ t . Ошибки располагаются |
на |
позициях |
||||||||||
(i ,i |
|
,...,i ) , |
вектор ошибок |
i |
|
i |
2 |
i |
i |
|
→α |
i j |
. |
|
2 |
e(x) = e x 1 |
+ e x |
+... + e x |
ν , |
j |
|
||||||||
1 |
ν |
|
i |
i |
2 |
|
i |
|
|
|
|
|
||
|
|
|
|
1 |
|
|
ν |
|
|
|
|
|
|
Декодер решает две задачи. Первая – определяет координаты ошибок, т.е. значения {i j . Вторая - оценивает величины ошибок. Свойства кода позволяют рассматривать
структуру синдрома с двух точек зрения. Во-первых, компонента синдрома может быть вычислена как
S j = y(α j ) = c(α j ) + e(α j ) = e(α j ) |
(5.6) |
65
Во-вторых, если для функции ошибки определить дискретное преобразование Фурье в конечном поле, то компоненты синдрома можно трактовать как коэффициенты этого преобразования Sj = Ej , j = 1,…,2t .
Введем следующие обозначения: X e =αie - локатор ошибки; eie = Qe - величина ошибки. Для всех компонентов синдрома можно составить следующие уравнения:
S1 = Q1 x1 +Q2 x2 +... +Qν xν , |
|
|
||||||
S |
2 |
= Q x2 |
+Q x2 +... +Q x2 |
, |
|
|||
|
1 |
1 |
2 |
2 |
ν ν |
|
|
|
.............................................. |
|
|||||||
S |
2t |
= Q x2t +Q x2t |
+... +Q x2t |
, |
||||
|
1 |
1 |
2 |
2 |
ν |
ν |
|
|
|
|
|
|
ν |
xij . |
|
|
|
|
|
S j = ∑Qi |
|
|
||||
|
|
|
|
i=1 |
|
|
|
|
(5.7)
(5.8)
Оценки параметров ошибки можно получить путем решения нелинейной системы уравнений (5.7 – 5.8), что достаточно сложно. Используем искусственный приём.
Введем, так называемый, полином локаторов ошибки σ(x) .
σ(x) =σν xν +σν −1 xν −1 +... +σ1 x +σ0 . |
(5.9) |
Полином σ(x) можно представить в виде: |
|
σ(x) = (1 − x X1) (1 − x X 2 ) ... (1 − x Xν ) = ∏(1 − x Xi ) . |
(5.10) |
i |
|
Корнями полинома σ(x) являются величины x = Xi−1. Если коэффициенты σ(x) известны, то соответственно для определения локаторов ошибок Xi нужно найти корни σ(x) , после чего вычислить обратные к ним величины. При этом решение системы нелинейных уравнений сводится к решению системы линейных уравнений относительно коэффициентов полинома σ(x) . Составим систему линейных уравнений, воспользовавшись записью:
σ(x) =σν xν +σν −1 xν −1 +... +σ1 x +σ0 .
Умножим левую и правую части уравнения на Q x j +ν |
, а также положим, что |
|||||||||
|
|
|
|
|
|
i |
i |
|
|
|
x = X e−1 и σ(X e−1) = 0 ,тогда справедлива система уравнений |
|
|
||||||||
0 = Q X j+ν (1 +σ |
1 |
X |
−1 +σ |
2 |
X |
−2 +... +σ |
ν |
X |
−ν ), e =1,...,ν . |
|
e e |
|
e |
|
e |
|
|
e |
66
Просуммировав уравнения по индексу e от 1 до ν , для каждого индекса j получим:
ν |
ν |
ν |
|
∑Qe X ej+ν +σ1 |
∑Qe X ej+ν −1 |
+... +σν ∑Qe X ej = 0 . |
(5.11) |
e=1 |
e=1 |
e=1 |
|
ν
Учитывая, что Si = ∑Qe X ej получаем алгебраическую систему уравнений
e=1
σ1 S j+ν −1 +σ2 S j+ν −1 +... +σν S j = −S j+ν , j =1,...,ν ,
или в матричной форме:
S1S2
S3
...
Sν
S2 |
S3 |
... |
Sν −1 |
|
Sν |
|
|
σν |
|
− Sν +1 |
|
|
|||||||
S |
3 |
S |
4 |
... |
|
S |
S |
|
σ |
ν |
−1 |
|
− S |
|
|
|
|||
|
|
|
|
ν |
|
ν +1 |
|
|
|
|
|
ν +2 |
|
|
|||||
S4 |
S5 |
... |
Sν +1 |
Sν +2 |
|
σν −2 |
= − Sν +3 |
|
. (5.12) |
||||||||||
... |
... |
... |
|
... |
|
... |
|
... |
|
... |
|
|
|||||||
S |
+1 |
S |
+2 |
... |
S |
2ν −2 |
S |
2ν −1 |
|
|
σ |
1 |
|
|
− S |
2ν |
|
|
|
ν |
ν |
|
|
|
|
|
|
|
|
|
|
|
|
Система связывает значения компонент синдрома Si с коэффициентами полинома локаторов ошибок, задача вычисления которых решается достаточно просто, если можно найти обратную матрицу синдромов.
Алгоритм декодирования Питерсона-Горенштейна-Цирлера (ПГЦ)
1. Вычисляются компоненты синдрома: Si = y(α j ), j =1,2,...,2t . Задается величина ν =t.
2.Составляется матрица синдромов Mν = [Sl+k +1], l,k = 0,1,…, ν-1.
3.Вычисляется определитель матрицы ∆ = det Mν . Если ∆ = 0 , то матрица
является сингулярной, и обратной матрицы не существует. В этом случае изменяется размер матрицы ν:= (ν - 1) до тех пор, пока определитель не станет отличным от нуля. После чего повторяют второй шаг.
4. Определяются коэффициенты полинома локаторов ошибок:
σν
σν −1σν −2 =...
σ1
|
− Sν +1 |
|
|
|
|
− S |
|
|
|
M −1 |
|
ν +2 |
|
(5.13) |
− S |
|
|||
ν |
|
ν +3 |
|
|
|
... |
|
|
|
|
|
− S2ν |
|
|
|
|
|
|
5. Находятся корни σ(x) = 0 и через инверсию корней вычисляются значения Xi .
67
6. Оцениваются величины ошибок {Qi } при решении системы
Q1Q2
Q3
...
Qµ
|
|
X1 |
|
|
2 |
|
X1 |
|
|
= X 3 |
|
|
|
1 |
|
... |
|
|
|
µ |
|
X1 |
... |
X µ |
−1 |
|
S |
|
|
... |
2 |
|
|
1 |
|
|
X µ |
|
S2 |
|
|
||
... |
X 3 |
|
S3 |
. |
(5.14) |
|
|
µ |
|
|
|
|
|
... ... |
|
... |
|
|
||
... |
µ |
|
|
|
|
|
X µ |
|
Sµ |
|
|
7. Корректируется принятый вектор, подставляя на позиции Xi вычисленные значения Qi .
Для исправления одиночной ошибки можно использовать выражения
|
|
|
|
|
S σ |
1 |
= −S |
2 |
; σ |
1 |
= − |
S2 |
. |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S1 |
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Если код бинарный, |
|
то σ1 = −S1 , |
|
|
следовательно, |
|
σ(x) =1 − S1 x . Полином |
|||||||||||||||||||||||||||||||||||||
σ(x) имеет 0 в точке 1/ S . Следовательно, |
|
S |
|
=αi |
|
|
и ошибка локализуется в позиции |
|||||||||||||||||||||||||||||||||||||
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
2m −1 − i . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рассмотрим случай, когда код исправляет 2 ошибки. Тогда имеем |
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
[Si+ j ]= |
S |
|
|
|
|
|
|
|
|
S |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
S2 |
|
|
|
|
|
S3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
Если определитель матрицы ∆ ≠ 0 , то получаем: |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||
σ |
2 |
|
|
= |
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
S |
3 |
|
|
− S |
2 |
|
|
|
− S |
3 |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
, |
|||||||||||||
σ |
|
S |
|
S |
|
− |
S |
2 |
|
|
|
− S |
|
|
|
|
S |
|
− S |
|
||||||||||||||||||||||||
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
4 |
|
|||||||||||||||||||||
|
|
|
|
|
|
1 |
|
|
2 |
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
S |
2 |
S |
3 |
− S |
|
S |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
− S 2 |
+ S |
2 |
S |
4 |
|
|||||||||||||
σ1 = |
|
|
|
|
|
1 |
|
|
|
|
|
; |
|
|
|
|
σ2 = |
|
|
|
3 |
|
|
|
|
|
. |
|||||||||||||||||
|
|
S S |
3 |
− S 2 |
|
|
|
|
|
|
|
|
|
|
S S |
3 |
− S 2 |
|
||||||||||||||||||||||||||
|
|
|
|
|
|
1 |
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
2 |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S |
3 |
+ S 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
Для бинарного кода σ |
1 |
= −S , |
σ |
2 |
= − |
|
|
|
|
|
1 |
. |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
При большом количестве ошибок алгоритм ПГЦ характеризуется значительной вычислительной сложностью. В таких случаях для вычисления полинома локаторов ошибок используют алгоритмы Сигуяма, Берлекемпа–Месси, а для оценки значений ошибок для q-ичных кодов – алгоритм Форни .
Алгоритм Сигуямы. Позволяет решить систему уравнений в поле F
68

Et−1 |
Et−2 |
E0 |
σ1 |
|
|
Et |
|
|
|
|
Et |
Et−1 |
E1 |
|
|
|
Et+1 |
|
|
|
σ2 |
|
= − |
|
, |
||||
|
|
|
|
|
|
|
|
|
|
|
|
E2t−3 |
|
|
|
|
|
|
|
E2t−2 |
Et−1 σt |
|
E2t−1 |
|
|
что разрешает центральную проблему декодирования локаторов ошибок.
t
Предполагаем, что σ0 =1, полином локаторов ошибок σ(x) = ∑σ j x j и полином
j=0
2t−1
спектральных коэффициентов E j функции ошибокE(x) = ∑E j x j . Считается, что
j=0
коэффициенты полинома произведения σ(x)E(x) равны нулю для j = t,…,2t-1. Решение матричной системы уравнений эквивалентно решению полиномиального
уравнения σ(x)E(x) = Γ(x) mod x2t для степени полинома σ(x) не больше, чем t и степени Γ(x) не больше, чем t – 1.
Рассматриваемый алгоритм решает полиномиальное уравнение с использованием
алгоритма |
Евклида следующим образом. |
Обозначим начальные условия как |
a(0) (x) = x2t |
и b(0) = E(x) . Для ( r )-й итерации вычисления алгоритма Евклида можно |
|
записать |
|
|
|
a(r−1) (x) = Θ(r ) (x)b(r−1) (x) +b(r ) |
при deg(b(r ) (x) < deg(b(r−1) (x)) . |
Определим условие выполнения равенства a(r ) (x) = b(r−1) (x) :
|
(r ) |
|
|
0 |
|
1 |
|
a |
(r ) |
(x) |
= |
−Θ |
(r ) |
a |
|
b |
(x) |
|
1 |
|
(x) b |
(r−1)
(r−1)
(x) . (x)
Матрицу A(r ) (x) ( r )-й итерации по индукции можно определить как
A(r ) (x) = |
0 |
|
|
|
1 |
|
|
(x) |
|
|
|
|
1 |
0 |
|
|
|
−Θ |
(r ) |
A(r−1) |
и A(0) (x) = |
. |
|||||||||
|
1 |
|
(x) |
|
|
|
|
|
|
0 1 |
|||||
Для r ≥ 0 имеем |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(r ) |
|
|
|
= |
(r ) |
(x) |
(r ) |
|
|
x |
2t |
|
|
a |
|
(x) |
|
A11 |
A12 |
(x) |
|
. |
|
||||||
|
b(r ) |
(x) |
|
|
|
A(r ) |
(x) |
A(r ) |
(x) |
|
E(x) |
|
|
||
|
|
|
|
|
21 |
|
22 |
|
|
|
|
||||
Откуда получаем желаемую форму уравнения |
|
|
|
|
|
|
|||||||||
b(r ) (x) = A(r ) E(x) mod x2t , σ(x) ← A(r ) . |
|
||||||||||||||
|
|
|
|
|
22 |
|
|
|
|
|
|
|
22 |
|
Для решения задачи декодирования требуется найти такое значение r,при котором deg(A22(r ) (x)) ≤ t и deg(b(r ) (x) ≤ t −1. Это требование удобно выполнить, выбирая rt как
значения r, удовлетворяющие условиям deg(b(rt −1) ) ≥ t и deg(b(rt ) ) ≤ t −1. Алгоритм Берлекемпа-Месси. Находит полином локаторов ошибок
69
σ(x) =σν xν +σν −1 xν −1 +... +σ1 x +1
по заданному синдрому. В основе алгоритма лежит адаптивная модель авторегрессионного фильтра, который генерирует компоненты синдрома по правилу:
ν
S j = −∑σi S j−1 , i=1
где ν - количество произошедших ошибок; j =ν +1,...,2ν . Фильтр перестраивает свою структуру в зависимости от возможной конфигурации ошибок.
Для нахождения полинома локатора ошибок используется итерационная процедура. На каждой итерации вычисляется модель регистра с обратными связями, генерирующего первые r компонент синдрома, где r – номер этапа. Длина регистра
на r-ом этапе обозначается r . На r-ом этапе оценка €r r-ой компоненты синдрома
L S
равна:
|
Lr |
(r −1) |
|
|
|
|
|
|
|
|
€ |
Sr − j , |
|
(5.15) |
|||||
|
Sr = − ∑σ j |
|
|
||||||
|
j=1 |
|
|
|
|
|
|
|
|
где σ rj −1- весовые коэффициенты на (r −1) -м предыдущем этапе. |
|
||||||||
Ошибка (невязка) вычислений ∆r определяется как |
|
|
|
||||||
|
€ |
Lr |
(r |
−1) |
|
|
|||
|
∑ |
Sr − j . |
(5.16) |
||||||
|
∆r = Sr − Sr = |
σ j |
|
||||||
|
|
|
j =0 |
|
|
|
|
||
Если ∆r = 0 , то параметры модели не меняются |
|
|
|
||||||
|
(L ,σ (r) (x)) := (L |
|
|
,σ (r −1) (x)). |
(5.17) |
||||
|
r |
r −1 |
|
|
|
|
|
||
Если ∆r ≠ 0 , то параметры модели меняются по правилу |
|
||||||||
|
σ (r) (x) =σ (r −1) (x) + A xl σ (m−1) (x) , |
(5.18) |
|||||||
где σ(x) - веса; xl - некоторое целое число; |
A - элемент поля. |
|
|||||||
Новая невязка может быть вычислена как: |
|
|
|
|
|
|
|
||
L |
L |
|
|
|
|
|
L |
|
|
∆'r = ∑r σ (jr) Sr − j = ∑r σ (jr −1) |
Sr − j |
+ A ∑r σ (jm−1) Sr − j −1 |
(5.19) |
||||||
j=0 |
j=0 |
|
|
|
|
|
j=0 |
|
|
Определим величины |
A,m и r так, чтобы новая невязка ∆'r была равна нулю. |
||||||||
Выберем следующие значения |
|
|
|
|
|
|
|
|
|
|
m < r → ∆m ≠ 0; |
l = r − m; |
A = −∆−m1 ∆r . |
(5.20) |
70

После подстановки получаем:
∆'r = ∆r − ∆r ∆m = 0
∆m
Вэтом случае новая модель регистра сдвига будет генерировать последовательность S1,...,Sr −1, Sr . Если выберем Lm > Lm−1 , то получим регистр с
обратной связью минимальной длины.
Теорема Берлекемпа–Месси. Пусть заданы компоненты синдрома S1,...,S2t из некоторого поля, тогда при начальных условиях σ (0) (x) =1, B(0) (x) =1, L0 =1
выполняются следующие рекуррентные равенства, использующиеся для вычисления
σ(x) :
|
|
n−1 |
|
|
|
|
1. |
∆r = ∑ σ (jr −1) Sr − j |
|
|
|
||
|
|
j=0 |
|
|
|
|
2. |
Lr = δr (r − Lr −1) + (1 −δr ) Lr −1 |
|
||||
3. |
σ (r) (x) |
1 |
−∆r x |
σ (r −1) |
(x) |
|
|
|
= |
|
|
, где r =1,2,...,2t . |
|
|
B(r) (x) |
∆−r1 δr |
(1−δr ) x |
B(r −1) |
(x) |
|
|
|
|
|
|
|
|
δr
δr
=1, еслиодновременно ∆r ≠ 0
2Lr −1 ≤ r −1.
= 0 востальныхслучаях.
При выполнении таких условий полином σ(x) является многочленом наименьшей степени, коэффициенты которого удовлетворяют равенству:
n−1 |
(j2е Sr − j |
|
|
|
|
|
|
|
||
S j + ∑ σ |
= 0 , где |
r = L2t +1,...,2t |
|
(5.21) |
||||||
j=1 |
|
|
|
|
|
|
|
|
|
|
Граф-схема алгоритма Берлекемпа–Месси приведена на рис. 5.1. |
|
|||||||||
Пример. Рассмотрим БЧХ-код (15,5) над полем GF(24 ), |
f (x) = x4 + x +1, |
|||||||||
количество ошибок t = 3 , |
g(x) = x10 + x8 + x5 + x4 + x2 + x +1. |
|
|
|||||||
Пусть e(x) = x2 + x7 , |
S |
=α12, S |
2 |
=α9, S |
3 |
= 0, S |
4 |
=α3, S 5 =1, S |
6 |
= 0 . |
|
1 |
|
|
|
|
|
Необходимо вычислить полином σ(x) по алгоритму Берлекемпа–Месси.
1.Начальные условия: σ(x) =1, r = 0, L = 0, B(x) =1;
2.Первая итерация. Установка индекса r = 1.
71

Начальные значения
σ(x) =1 B(x) =1 L = 0 r = 0
Счётчик этапов |
|
r ← r +1 |
||||
|
|
|
|
|
||
Вычисление невязки |
||||||
n−1 |
−1) Sr − j |
|||||
∆r = ∑ σ (jr |
||||||
j=0 |
|
|
|
|
||
? |
|
Да |
||||
∆r = 0 |
|
Нет
Образуетсяновый полином связей, для которого ∆r = 0
T (x) =σ(x) − ∆r x B(x)
2L ?≤ r −1 Нет Да
Сохраняется прежний регистр сдвига,
но изменяется− длина
B(x) ← ∆r1σ(x) σ(x) ←T (x)
L ← r − L
σ(x) ←T (x)
B(x) ← x B(x)
Нет |
? |
|
|
|
r = 2t |
|
|
|
Да |
|
|
|
degσ(x) ?= L |
Да |
|
|
Процедура Ченя |
Нет
Стоп, произошло более, чем t ошибок
Рис. 5.1
72