Научная статья DOI: 10.18287/2541-7525-2021-27-1-44-61
УДК 512.531; 519.7 Дата: поступления статьи: 10.01.2021
после рецензирования: 17.02.2021 принятия статьи: 28.02.2021
С.М. Рацеев
Ульяновский государственный университет, г. Ульяновск, Российская Федерация E-mail: [email protected]. ORCID: https://orcid.org/0000-0003-4995-9418
А.Д. Лавриненко Ульяновский государственный университет, г. Ульяновск, Российская Федерация E-mail: [email protected]. ORCID: https://orcid.org/0000-0003-3652-1097
Е.А. Степанова Ульяновский государственный университет, г. Ульяновск, Российская Федерация E-mail: [email protected]. ORCID: https://orcid.org/0000-0003-0276-1615
ОБ АЛГОРИТМЕ БЕРЛЕКЭМПА — МЕССИ И ЕГО ПРИМЕНЕНИИ В АЛГОРИТМАХ ДЕКОДИРОВАНИЯ
АННОТАЦИЯ
В работе содержатся описание алгоритма Берлекэмпа — Месси и его эквивалентный вариант на основе обобщенного алгоритма Евклида. Также приводится оптимизированный алгоритм Берлекэмпа — Месси для случая поля характеристики два. Алгоритм Берлекэмпа — Месси имеет квадратичную сложность и применяется, например, для решения систем линейных уравнений, у которых матрица системы является матрицей Тёплица. В частности, такие системы уравнений появляются в алгоритмах синдромного декодирования кодов БЧХ, кодов Рида — Соломона, обобщенных кодов Рида — Соломона, кодов Гоппы. Приводятся алгоритмы декодирования перечисленных кодов на основе алгоритма Берлекэмпа — Месси.
Ключевые слова: алгоритм Берлекэмпа — Месси; обобщенный алгоритм Евклида; код Рида — Соломона; декодирование кода.
Цитирование. Рацеев С.М., Лавриненко А.Д., Степанова Е.А. Об алгоритме Берлекэмпа — Месси и его применении в алгоритмах декодирования // Вестник Самарского университета. Естественнонаучная серия. 2021. Т. 27, № 1. С. 44-61. DOI: http://doi.org/10.18287/2541-7525-2021-27-1-44-61.
Информация о конфликте интересов: авторы и рецензенты заявляют об отсутствии конфликта интересов.
© Рацеев С.М., 2021
Сергей Михайлович Рацеев — доктор физико-математических наук, доцент, профессор кафедры информационной безопасности и теории управления, Ульяновский государственный университет, 432017, Российская Федерация, г. Ульяновск, ул. Льва Толстого, 42. ©©Лавриненко А.Д., 2021
Анна Дмитриевна Лавриненко — студент кафедры информационной безопасности и теории управления, Ульяновский государственный университет, 432017, Российская Федерация, г. Ульяновск, ул. Льва Толстого, 42.
© Степанова Е.А., 2021
Екатерина Алексеевна Степанова — студент кафедры информационной безопасности и теории управления, Ульяновский государственный университет, 432017, Российская Федерация, г. Ульяновск, ул. Льва Толстого, 42.
Введение
В технике один из наиболее распространенных методов генерации битовых последовательностей реализуется с помощью регистров сдвига с обратной линейной связью (Linear Feedback Shift Register -LFSR). Регистр сдвига с обратной связью (LFSR) — это регистр, который можно рассматривать как множество ячеек памяти, в каждой из которых записан один бит информации. На каждом шаге содержимое нескольких заранее определенных ячеек (отводов) пропускается через функцию обратной связи. Значение функции записывается в самую левую ячейку регистра, сдвигая все остальные его биты на одну позицию вправо. Выходом регистра на текущем шаге является «вытолкнутый» справа бит (рис. 1).
an an-i a,2 ai
fi
f2
fn-1
an+i — f1an + f2 an-1 + ■ ■ ■ + fn-1a2 + fna1
n
Рис. 1. Регистр сдвига с обратной связью Fig. 1. Feedback shift register
Рассмотрим систему линейных уравнений над некоторым полем F относительно неизвестных
f1, ■ ■ ■ , fn :
/ an a-n+i
\ a,2n-i
У матрицы данной системы все диагонали, параллельные главной, имеют одинаковые элементы. Матрица такого вида называется диагонально-постоянной матрицей, или матрицей Тёплица. Решение данной системы уравнений методом Гаусса имеет сложность вычислений порядка n3. Такие системы практичнее решать с помощью алгоритма Берлекэмпа — Месси, который дает сложность вычислений порядка n2.
Алгебраические алгоритмы декодирования кодов БЧХ (в частности, кодов Рида — Соломона) можно разделить на два класса: синдромные и бессиндромные. Хорошо известные алгоритмы синдромного декодирования построены на основе алгоритма Питерсона — Горенстейна — Цирлера, алгоритма Берлекэмпа — Месси, алгоритма Сугиямы [1; 2]. К алгоритмам безсиндромного декодирования относится, например, алгоритм Гао [3]. Процесс синдромного декодирования можно разбить на четыре шага: 1) вычисление компонентов синдромного вектора на основе полученного вектора; 2) нахождение многочлена локаторов ошибок <r(x), который содержит информацию о позициях ошибок; 3) нахождение корней многочлена a(x), по которым определяются позиции ошибок; 4) нахождение значений ошибок (для недвоичных кодов).
Второй этап декодирования является самым сложным. Многочлен локаторов ошибок a(x) можно найти несколькими способами. Один из первых способов нахождения a(x) — алгоритм Питерсона для двоичных кодов (на основе тождеств Ньютона) и Горенстейна — Цирлера для недвоичных кодов, который сводит данную задачу к решению системы из t линейных уравнений (например, с помощью метода Гаусса), где t — максимальное число ошибок, исправляемое кодом. Сложность такого декодирования пропорциональна t3. Берлекэмп, используя особенности матрицы коэффициентов системы уравнений, уменьшил сложность нахождения многочлена a(x) до величины порядка t2. Месси сумел интерпретировать алгоритм Берлекэмпа как алгоритм построения рекуррентного фильтра, тем самым упростив и понимание алгоритма, и его реализацию. В окончательном виде этот алгоритм получил название алгоритма Берлекэмпа — Месси.
Приведенные в данной работе алгоритмы декодирования позволяют исправлять не только ошибки, но и ошибки и стирания одновременно, поэтому они являются обобщением случая только ошибок. Поскольку авторы данной работы не нашли аналогов алгоритмов в других работах, то, вероятно, некоторые из них являются новыми. Все эти алгоритмы снабжены строгими математическими доказательствами.
a«n-1
a2n 2
a2
a3
ai
\
a2
an+1 an /
(fi \
f2
fn
( -
an+i
an+2
(1)
a2n
a
n
1. Алгоритм Берлекэмпа — Месси
Лучшим подходом к алгоритму Берлекэмпа — Месси является интерпретация матричного уравнения (1) как описания рекурсивного фильтра. Предположим, что вектор f = (fi,..., fn) известен. Последовательность ai,a2,... в этом случае называется линейной рекуррентной последовательностью, члены которой вычисляются с помощью уравнения
n
^ fi aj-i, j = n + l,n + 2,...
/ ¿Ji^j-i
i=l
Изначально на элементы последовательности a\,a2,... каких-либо ограничений не накладывается. Произвольный LFSR можно задать многочленом f(x) обратных связей f(x) = 1 + fix + ... + fnxn и длиной L регистра. Заметим, что длина регистра может быть больше степени многочлена f (x), так как самые правые ячейки могут не включаться в обратную связь.
Для построения регистра сдвига нужно определить две величины: длину L регистра и многочлен f (x) обратных связей при условии deg f (x) ^ L. Обозначим эту пару через (L, f (x)). Данный LFSR должен порождать заданную последовательность ai,a2,... ,a2n и иметь минимальную длину L.
Основная идея алгоритма Берлекэмпа — Месси состоит в следующем. Алгоритм построения LFSR минимальной длины является рекурсивным. Для каждого r = 2, 3,..., 2n он строит LFSR, порождающий последовательность ai,...,ar. LFSR минимальной длины, порождающий последовательность ai,...,ar, обозначим через (Lr,f(r)(x)). Такой регистр не обязательно должен определяться однозначно, так как возможно существование нескольких LFSR минимальной длины. К началу r-го шага имеется совокупность LFSR:
(Li,f (i)(x)), (L2, f (2)(x)),..., (Lr-i ,f(r-i) (x)).
Алгоритм Берлекэмпа — Месси вычисляет новый LFSR (Lr ,f (r)(x)) минимальной длины, генерирующий последовательность ai,...,ar. Для этого используется самый последний из вычисленных LFSR, в котором, при необходимости, модифицируются длина и весовые множители в отводах. На r-м шаге алгоритма вычисляется элемент с номером r на выходе (r — 1)-го регистра сдвига:
Lr
1
аг ^ ^ ат—г.
г=1
Если Аг = 0, то полагаем (ЬгI(г)(х)) = (Ьг-1I(г-1)(х)) и завершаем этим самым г-й шаг алгоритма. Если Аг = 0, то изменим весовые множители в ЬЕВИ, по правилу
(г-1)(х) + I — хг-т{(т-1)(х),
f(r)(x) = f(r-l)(x) + (— ^ xr-mf(
(х) + | - — | х '(X)
где число т удовлетворяет условию Ьг—1 = Ьг—2 = ... = Ьт > Ьт—1.
Теорема 1 [4]. Пусть {(Ьг(г)(х)}}" — последовательность ЬЕВИ, минимальной длины, таких, что (Ьг, I(г)(х)) генерирует последовательность а1,... ,аг. Если для некоторого г, 2 ^ г ^ п, выполнено
I(г—1)(х) = I(г)(х), то
Ьг = шах[Ьг—1, г — Ьг—1}.
Замечание 1. Пусть для некоторого г выполнено неравенство I(г—1)(х) = I(г)(х). Тогда возможны два случая.
1. Ьг > Ьг—1. Тогда из теоремы 1 следует, что Ьг = г — Ьг—1 > Ьг—1. Поэтому 2Ьг—1 < г.
2. Ьг = Ьг—1. Тогда Ьг—1 ^ г — Ьг—1. Поэтому 2Ьг—1 ^ г.
Учтем данное замечание при описании алгоритма Берлекэмпа — Месси. В следующем алгоритме многочлен I(х) отвечает за многочлен ЬЕВИ, (Ьг,1(г)(х)), а многочлен Ь(х) — за многочлен ЬЕВИ, (Ьт—1,1 (т—1)(х)).
Алгоритм 1. (алгоритм Берлекэмпа — Месси).
Вход: последовательность а1,...,ап над некоторым полем Ь.
Выход: ЬЕВИ, (Ь, I(х)) минимальной длины Ь, для которого
ь
—а3 =^з—г, 3 = Ь + 1,Ь + 2,...,п. (2)
г=1
1. Определить г := 0, I(х) := 1, Ь(х) := 1, Ь := 0.
2. Цикл r := 1,... ,n :
L
2.1. Определить А := ar + Y1 fiar-i;
i=i
2.2. Если А = 0, то b(x) := x ■ b(x);
2.3. Если А = 0:
2.3.1 buf (x) := f (x) - А ■ x ■ b(x);
2.3.2. Если 2L < r: b(x) := А-1 ■ f (x), f(x) := buf(x),
L := r - L;
2.3.3. Иначе (т. е. выполнено 2L ^ r): f(x) := buf(x),
b(x) := x ■ b(x) .
Заметим, что в алгоритме 1 можно минимизировать число вычислений обратных элементов в поле F, т. е. вычислений вида А-1. Для этого стоит лишь заметить, что если для некоторого унитарного
L
многочлена f (x) выполнено равенство ar + fiar-i = 0, то для любого 5 £ F выполнено равенство
i=1
L
fiar-i =0, где f(x) = 5 ■ f (x). Поэтому алгоритм 1 можно записать в следующем виде.
i=0
Алгоритм 1' (алгоритм Берлекэмпа — Месси).
Вход: последовательность a\,...,an над некоторым полем.
Выход: LFSR (L, f (x)) минимальной длины L, для которого
L
-aj = fiaj-i, j = L + 1, L + 2,
1. Определить г := 0, /(х) := 1, Ь(х) := 1, Ь := 0, 6 := 1.
2. Цикл г := 1,..., п :
ь
2.1. Определить А := ^ !гаг-г',
г=0
2.2. Если А = 0, то Ь(х) := х ■ Ь(х);
2.3. Если А = 0:
2.3.1 Ьи/(х) := 6 ■ /(х) - А ■ х ■ Ь(х) ;
2.3.2. Если 2Ь < г: Ь(х) := /(х),
/(х) := Ьи/(х), Ь := г - Ь, 6 := А;
2.3.3. Иначе (т. е. выполнено 2Ь ^ г):
/(х) := Ьи/(х), Ь( х) := х ■ Ь(х)
3. /(х) := /-1 ■ /(х).
2. Взаимосвязь алгоритма Берлекэмпа — Месси и обобщенного алгоритма Евклида
Приведенный алгоритм Берлекэмпа — Месси при определенном ограничении можно заменить на эквивалентный алгоритм на основе обобщенного алгоритма Евклида. Этот факт отражен в нескольких работах, например в [5 ; 6]. В данной работе приведем другое доказательство данной эквивалентности.
Алгоритм 2 (нахождение решения системы (1) с помощью обобщенного алгоритма Евклида).
Вход: последовательность ai,a,2,... ,a,2n над некоторым полем F, для которой система (1) имеет решение.
Выход: многочлен f (x) степени ^ n, для которого f (0) = 1 и
n
-aj fiaj-i, j = n + 1, n + 2, .. ., 2n.
i=i
1. Определить т-1(х) = х2п, то(х) = ^ агхг 1, у-1(х) = 0, Уо(х) = 1.
г=1
2. Производится последовательность вычислений обобщенного алгоритма Евклида:
тг-2(х) = тг-1(х)дг-1 (х) + тг(х), Уг(х) = Уг-2(х) — Уг-1(х)дг-1(х), г = 1, 2,...,
до тех пор, пока для некоторого ту (х) не будет выполнено условие
deg ту-1(х) ^ п, deg ту (х) ^ п — 1.
3. Определить I(х) = Луу(х), где константа Л € Е задается так, чтобы удовлетворялось условие
I (0) = 1.
Теорема 2. Если для последовательности а,1 ,а2,...,а2п над некоторым полем Е система (1) имеет решение, то алгоритм 2 всегда возвращает решение системы (1). Более того, если 11,..., 1п — некоторое решение системы (1), I(х) = 1 + Ilx +... + 1пхп — соответствующий многочлен, 1(х) — результат работы алгоритма 2, то 1(х) делит I(х), т. е. из всех решений системы (1) многочлен 1(х) имеет минимальную степень.
Доказательство. Пусть 11,..., 1п — некоторое решение системы (1). Определим 1о = 1 и обозначим:
go = aifo, gi = a2fo + aifi,
gn-i = anfo + an-ifi + ... + aifn-i.
Тогда на основе системы (1) получаем такую систему:
(3)
/ ai 0 . .. 0 0 \ go
a2 ai . .. 0 0 gi
/ fo \
an an-i . . . ai 0 fi gn-i
an+i an . . . a2 ai 0
an+2 an+i . . a3 a2 \ fn / 0
\ a2n a2n-i . . . an+i an / 0
(4)
в которой система их последних п уравнений полностью совпадает с системой (1). Пусть
2n
i
i(x) = J2i
„i-i
f (x)
i=i
E
i=o
fiXi, g(x) = ^2 giXi.
i=o
Система (4) эквивалентна сравнению
a(x)f (x) = g(x) (mod x )
(5)
с условиями
I(0) = 1, deg I(х) < п, deg д(х) < п — 1. (6)
Действительно, пусть выполнено сравнение (5) с условиями (6). Так как выполнено неравенство deg д(х) ^ п—1, то коэффициенты многочлена a(x)I(х) при степенях хп, хп+1,..., х2п-1 равны нулю. Это значит, что должны выполняться последние п уравнений системы (4). При этом первые п уравнений системы (4) напрямую следуют из сравнения (5). Обратно, из системы (4) очевидным образом следует сравнение (5) с условиями (6).
Применим к многочленам т-1(х) = х2п, то(х) = а(х), и-1 (х) = 1, ио(х) = 0, у-1(х) = 0, Уо(х) = 1 обобщенный алгоритм Евклида:
тг-2(х) = тг-1(х)дг-1(х) + т (х), иг (х) = иг-2(х) — щ-1(х)дг-1(х), Уг(х) = Уг-2(х) — Уг-1(х)дг-1(х),
г = 1, 2,...
Тогда на каждом шаге алгоритма будем получать равенства
иг(х)х2п + юг(х)а(х) = тг(х),
из которых следуют сравнения vi(x)a(x) = (x) (mod x2n). Так как
2n = degr^i(x) > degr0(x) > degr\(x) > ...,
то для некоторого j будут выполнены неравенства
degrj_i(x) ^ n, degrj(x) ^ n — 1.
Поэтому индекс j определен однозначно. При этом
degVj(x) = degx2n — degrj^i(x) ^ 2n — n = n.
Следовательно, мы получили сравнение Vj (x)a(x) = rj (x) (mod x2n), где deg rj (x) ^ n — 1, deg Vj (x) ^ n.
Покажем, что Vj(0) = 0. Для многочленов Vj(x) и rj(x), а также для многочленов f(x), g(x) и некоторого многочлена t(x) выполнены равенства
Uj (x)x2n + Vj (x)a(x) = rj (x), (7)
t(x)x2n + f (x)a(x) = g(x). (8)
Домножив обе части первого равенства на f (x), а второго — на Vj(x), получим
f (x)uj (x)x2n + f (x)Vj (x)a(x) = f (x)rj (x), Vj (x)t(x)x2n + Vj (x)f (x)a(x) = Vj (x)g(x).
Из данных равенств следует сравнение
(9)
f(x)rj(x) = Vj(x)g(x) (mod x2n). Учитывая степени многочленов в данном сравнении, получаем равенство
f (x)rj (x) = Vj (x)g(x). Поэтому из (9) с учетом последнего равенства следует такое равенство:
f (x)uj (x) = Vj (x)t(x).
Из свойства взаимной простоты многочленов Uj(x) и Vj(x) следует, что Vj(x) | f (x), поэтому для некоторого многочлена ¡(x) выполнено f (x) = ¡(x)Vj (x). Подставим это равенство в (8):
t(x)x2n + ¡(x)Vj (x)a(x) = g(x).
Теперь домножим равенство (7) на ¡(x):
¡(x)uj (x)x2n + ¡(x)Vj (x)a(x) = ¡(x)rj (x).
Учитывая степени многочленов g(x), ¡(x) и rj(x), из последних двух равенств следует равенство g(x) = = ¡(x)rj (x).
Таким образом, f(x) = ¡(x)Vj(x), g(x) = ¡(x)rj(x). Так как f(0) = 1, то выполнено Vj(0) = 0. Определим f(x) = ÁVj(x), где константа Л G F задается так, чтобы удовлетворялось условие f(0) = 1. Тогда из Лvj(x)a(x) = Лrj(x) (mod x2n), degЛvj(x) ^ n получаем, что fi,...,fn — решение системы (1). При этом f(x) I f (x). □
Предложение 1. Пусть (L, f (x)) — результат работы алгоритма 1, которому на вход подавалась последовательность ai,...,an. Пусть
go = aifo,
gi = a2fo + aifi, (10)
gL-i = aLfo + aL-ifi + ... + aifL-i,
где fo = 1. Тогда L = max{deg f (x), deg g(x) + 1}, где g(x) = go + gix + ... + gL-ixL-i.
Доказательство. Очевидно, что L ^ max{deg f(x), degg(x) + 1}. Предположим, что L > > max{deg f (x), degg(x) + 1}. В этом случае fL = 0 = gL-i. Из равенств (2) и fL =0 следуют равенства
L-1
fiaj-i, j = L +1,L + 2,...,n.
i=i
Из равенства gL-i = 0, учитывая (10), получаем такое равенство:
aL + aL-ifi + ... + ai fL-i = 0.
aj
Поэтому будут выполнены такие равенства:
L-1
aj = fiaj-i, j = L,L + 1,...,n.
i=i
Это значит, что алгоритм 1 возвратил LFSR (L,f (x)) не минимальной длины, что противоречит тому, что алгоритм Берлекэмпа — Месси возвращает LFSR минимальной длины. □
Следующая теорема показывает, что в случае совместности системы (1) алгоритмы 1 и 2 эквивалентны.
Теорема 3. Пусть для последовательности ai,a^,... над некоторым полем F система (1) имеет решение. Пусть (L, f (x)) — результат работы алгоритма 1, которому на вход подается данная последовательность, f(x) — результат работы алгоритма 2. Тогда f (x) = f(x).
Доказательство. Пусть (L,f (x)) — результат работы алгоритма 1, g(x) — многочлен, вычисленный с помощью формул (10), f(x) = Xvj (x), g(x) = Xrj (x) — результат работы алгоритма 2. По предложению 1 выполнено равенство L = max{deg f (x), degg(x) + 1}. По теореме 2 для некоторого многочлена n(x) € F[x] выполнены равенства f (x) = fj,(x)f(x), g(x) = fj,(x)g(x). Обозначим L = = max{deg f(x), degg(x) + 1}. Тогда
L
-aj = E fiaj-i, j = L + 1,L + 2, . . . , 2n.
i=i
Предположим, что deg p(x) ^ 1. Тогда из неравенств deg f (x) > deg f(x), deg g(x) > deg g(x) следует, что L < L, т. е. LFSR (L, f (x)) имеет не минимальную длину. Противоречие со свойством минимальности длины LFSR алгоритма Берлекэмпа — Месси.
Таким образом, fj,(x) является многочленом нулевой степени. Так как f (0) = 1 = f(0), то n(x) = 1.
□
Следствие 1. Алгоритм 2 возвращает LFSR (L, f (x)) минимальной длины L = = max{deg vj (x), deg rj (x) + 1}.
3. Алгоритм Берлекэмпа — Месси в случае поля характеристики два
Хорошо известно следующее утверждение (см., напр., [1]).
Теорема 4. Пусть F — поле характеристики два, ai, a^,..., a2n € F, a2i = a2 для любого i = 1,..., n— 1. Пусть (L,f (x)) — LFSR, построенный для последовательности ai,a2,... ,a2n-i, причем L ^ n — 1.
Тогда следующие условия эквивалентны: L
1) a2n =^2 fia2n-i, т. е. элемент a,2n можно получить с помощью LFSR (L, f (x));
i=i
2) a2n = a^.
Следствие 2. Пусть F — поле характеристики два, ai,a2,... ,a2n € F, для которой система (1) имеет решение, причем a2i = a2 для любого i = 1,... ,n. Если к данной последовательности применить алгоритм Берлекэмпа — Месси, то A2i = 0 для любого i = 1,... ,n.
Следствие 2 показывает, что для указанной последовательности ai,a2,... ,a2n в алгоритме Берлекэмпа — Месси достаточно рассматривать только итерации с нечетными номерами, что ускоряет алгоритм 1. Этот момент отражен в следующем алгоритме.
Алгоритм 3 (алгоритм Берлекэмпа — Месси для случая char F = 2).
Вход: последовательность ai,a2,... ,a2n € F, char F = 2, для которой система (1) имеет решение, причем a2i = ai2 для любого i = 1, . . . , n.
Выход: LFSR (L, f(x)) минимальной длины L, для которого
L
aj = ^2 fiaj-i, j = L + 1, L + 2,..., 2n. (11)
i=i
1. Определить г := 0, /(х) := 1, Ь(х) := 1, Ь := 0.
2. Если о,1 = 0, то Ь(х) := х.
3. Иначе (т. е. если а1 =0) :
/(х) := 1 + а\ • х, Ь(х) := а-1, Ь := 1.
4. Цикл г := 2,... ,п :
4.1. Определить г :=21 — 1;
ь
4.2. Определить Д := аг + /гаг-г';
г=1
4.3. Если Д = 0, то Ь(х) := х2 • Ь(х);
4.4. Если Д = 0 :
4.4.1. Если 2Ь < г:
Ьи/(х) := /(х) + Д • х2 • Ь(х), Ь(х) := Д-1 • /(х), /(х) := Ьи/(х), Ь := г — Ь;
4.4.2. Иначе (т. е. выполнено 2Ь ^ г): /(х) := /(х) + Д • х2 • Ь(х),
Ь(х) := х2 • Ь(х).
4. Декодирование кодов БЧХ и кодов Рида — Соломона с использованием алгоритма Берлекэмпа — Месси
Кодом Боуза — Чоудхури — Хоквингема (БЧХ) над полем ОЬ(д) называется такой циклический код длины п, порождающий многочлен д(х) наименьшей степени которого имеет своими корнями последовательность идущих подряд степеней некоторого произвольного элемента а € ОЬ(дт) : : аь, аь+1,... ,аь+6-2, где Ь — некоторое неотрицательное целое число, 3 ^ 2, причем
= { огЛ(а), 3> 2, п = { оМ(аь), 3 = 2,
где оМ — порядок элемента. Из данного определения следует, что длина кода п делит число дт — 1 (порядок мультипликативной группы поля ОЬ(дт)).
Кодом Рида — Соломона (РС) называется код БЧХ над полем ОЬ(д), д > 2, который имеет длину д — 1. Из данного определения следует, что при 3 > 2 выполнены такие условия: а € ОЬ(д) и а является примитивным элементом поля ОЬ(д). Также из этого определения следует, что порождающий многочлен кода РС имеет вид
д(х) = (х — аь)(х — аь+1) ... (х — аь+Й-2),
т. е. коэффициенты данного многочлена принадлежат полю ОЬ(д). Хорошо известно, что коды РС являются МДР-кодами, т. е. кодами с максимально достижимым расстоянием (с! = п — к + 1).
Рассмотрим случай, когда в канале связи действуют ошибки и стирания. Заметим, что в полученных ниже алгоритмах достаточно положить в = 0 (число стираний), чтобы рассматривать случай только ошибок.
Пусть А — [п,к,! — п — к +1]-код РС над полем ОЬ(д), ! — кодовое расстояние, и € А — переданный вектор. Пусть V — полученный на приемной стороне вектор (после отправки и), в котором могут быть ошибки и стирания. Пусть £ — максимальное число возможных ошибок при фиксированном числе стираний в в векторе V, ! ^ 2Ь + в + 1, £ = [(! — в — 1)/2], т — реальное число ошибок, т ^ Так как позиции стертых символов известны, то при в > 0 заменим эти символы в векторе V на нули и будем обращаться с полученным вектором V как с вектором, содержащим только ошибки. Пусть ошибки произошли на позициях ;ч,... ,гт, а стирания — на позициях гт+1,..., гт+8. При этом известны только позиции гт+1,..., гт+8. После того как на данные позиции поместили нули, с какими-то позициями могли угадать (если в кодовом векторе там действительно стояли нули). Поэтому V = и + е, где е — вектор ошибок веса не более т + в.
Пусть Х1 = а11,..., Хт = а%т — неизвестные локаторы ошибок, Хт+1 = а%т+1,..., Хт+8 = агт+3 — известные локаторы стираний, У = е^1,..., Ут+8 = егт+в — значения ошибок в векторе V. Найдем компоненты синдромного вектора:
Бо = у(а) = У1X1 + ... + УтХ
т + ^Ут+1Хт+1 + ... + Ут+8Хт+8,
Б1 = у(а2) = У1Х2 + ... + УтХт + Ут+1Х'+1 + ... + Ут+8Х'+8,
Б2+8-1 = "о(а2+8) = У1Х2+8 + ... + УтХ'+8 + Ут+1Х'+8 + ... + Ут+8Х'+;.
Запишем синдромный многочлен в виде
2t+s-1 2t+s-1 I m+s
s(x) — J2 sx — E IE v X i=0 i=0 \j=1
j I X
m+s /2t+s-1 \
E Y XilH Xj xy
j=1 V i=0 J
m+s 1 t v ^,\2t+s m+s V V m+s Y X2t+s + 1
ST-v Y - (Xjx) — У^ Yj Xj - x2t+sSr Yj Xj
Y Yj 1 - X,x ^ 1 - X, x x 1 - X. x .
j=1 j=1 j=1
Полагая
cr(x) — (1 — Xix) — crixi, <Jo — 1,
i=1
m+ s
x) 'aix"
i=0
m+s
x), V(x) —
1
a(x)—J2 YiXi П (1 - Xj x), Ф (x)—£ YiX2t+s+1 JJ (1 - Xj x)
1=1
3 =
после приведения всех дробей к общему знаменателю получим
Б(х) = Ш - М
a(x)
a(x)
Тогда
S (x)&(x) = S(x) — x2t+s Ф (x). Данное выражение называют ключевым уравнением, которому можно придать иной вид:
&(x)S(x) = S(x) (mod x2t+s).
(12)
Заметим, что а(х) = а(х)и(х), где а(х) — это многочлен неизвестных локаторов ошибок, V(х) многочлен известных локаторов стираний:
т в
°(х) = Ц(1 - Хгх)^(1 - Хт+%х) = а(х^ (х).
i=1
i=1
Введем в рассмотрение многочлен Б(х) = Б(х^(х) — модифицированный синдромный многочлен. Тогда ключевое уравнение (12) примет вид
где
a(x)S(x) = s(x) (mod x2t+s), deg a(x) ^ m, deg ¡S(x) ^ m + s - 1, <r(0) — 1.
(13)
(14)
Пусть
S(x) = So + Six + ... + S2t+2s-ix2t+2s-i- = = S(x)v (x) = ( So + Six + ... + S2t+s-ix2t+s-i)(vo + vix + ... + Vsxs), где vo = 1, vi = ( — 1)iai(Xm+i,...,Xm+s) — элементарный симметрический многочлен от
Xm+1, . . . , Xm+s , i = 1,...,S.
Так как в сравнении (13) deg cS(x) ^ m + s — 1, deg S(x) ^ 2t + 2s — 1, deg &(x) ^ m, то необходимым условием выполнения данного сравнения является тот факт, что коэффициенты многочлена &(x)S(x) при степенях j = m + s,m + s + 1,..., 2t + s — 1 равны нулю. Поэтому получаем такую систему линейных уравнений:
&0Ss+m + & iSs+m-i + . . . + &mSs = ° &0Ss+m+i + & iS s+m + ... + &mSs + i = °
a0Ss+2t-1 + a1Ss+2t-2 + ... + amS!
>ms s + 2t-m-1
0.
Так как а о = 1, то данная система в матричной форме примет такой вид:
/ 5я+т-1 ... \ ( а1 \ ( -38+т \
SS
s + m S Ss + m - 1
SS
s+1
°2
SS
s+m+1
V Ss + 2t-2 Ss+2t-3 . . . Ss + 2t-m-1 J V °m J V -Ss+2t-1 J
Будем искать решение данной системы с помощью алгоритма Берлекэмпа — Месси.
m+s
Теорема 5. Пусть ! ^ 2Ь + в + 1, т ^ Ь. Если на вход алгоритма 1 подать последовательность 8Я, 88+1,..., то на выходе алгоритма будет верное значение многочлена локаторов ошибок а(х).
Доказательство. Пусть а(х) — многочлен, полученный после применения алгоритма 1. Так как коэффициенты многочлена локаторов ошибок а(х) являются решением системы (15), то в теореме 1 будет выполнено неравенство Ь ^ т. Удалив в системе (15) 2Ь — 2т последних уравнений, получим новую систему с квадратной матрицей системы порядка т. Из теоремы 5 работы [7] следует, что данная матрица невырождена, поэтому полученная новая система имеет единственное решение. Это значит, что а(х) = а(х) и Ь = т. □
Учитывая теорему 5, получаем следующий алгоритм декодирования кодов РС (кодов БЧХ).
Алгоритм 4 (декодирование кода РС на основе алгоритма Берлекэмпа — Месси на случай ошибок и стираний).
Вход: принятый вектор V, в котором в стираний и не более Ь ошибок.
Выход: исходный кодовый вектор и, если ! ^ 2Ь + в + 1.
1. Определяется Ь = [(! — в — 1)/2]. В векторе V все стирания заменяют нулями, получая тем самым вектор V. Находятся компоненты 80,81,... ,82г+з-1 синдромного вектора: 8\ = ■и(аг+1), I = = 0,1,..., 2Ь + в — 1. Если они все равны нулю, то возвращается вектор V и процедура окончена.
Вычисляются значения локаторов стираний Х^1 = аг*+1 ,...,Х(+3 = а1г+в на основе известных позиций стираний гг+1,... ,ч+з. Вычисляются коэффициенты модифицированного синдромного многочлена 8(х) (если в = 0, то 8(х) = 8(х)).
2. На вход алгоритма 1 подается последовательность 83, 8я+1,..., 83+2г-1. На выходе данного алгоритма получается многочлен а(х). Пусть I = degа(х).
3. Отыскиваются I корней многочлена а(х) последовательной подстановкой в него ненулевых элементов поля Ь. При этом локаторы ошибок — это величины, обратные корням многочлена а(х).
4. Определяется множество M = {1,... ,l} U {t + 1,... ,t + sj. По формулам Форни
КХ-1)
Y =
Х-1
П (1 - XiX-1)
\еы\{j}
j е M,
(16)
где v(x) = a(x)S(x) (mod x2t+s), находятся значения ошибок Yj, j е M. У вектора v из j-го символа, Xj = aij, вычитается значение Yj, j е M. При этом получается кодовый вектор и.
Пример 1. Рассмотрим расширение поля СЬ(2) С СЬ(24). Пусть поле СЬ(24) строится на основе примитивного многочлена р(х) = х4 + х + 1, а — примитивный элемент поля СЬ(24):
а0 = а2 = а4 =
= 1 +а
а а10
а12
14
+а +а
= 1000, а1 = а = 0100,
а2 = 0010, а3 = а3 = 0001,
= 1100, а5 = а +а2 = 0110,
а2 +а3 = 0011, а7 = 1 +а +а3 = 1101,
+а2 = 1010, а9 = а +а3 = 0101,
+а2 = 1110, а11 = а +а2 +а3 = 0111,
+а2 +а3 = 1111, а13 = 1 +а2 +а3 = 1011,
+а3 = 1001, а15 = 1 = 1000.
Рассмотрим код Рида — Соломона с параметрами п =15, к = 7, ! =9. В этом случае код может исправить четыре и менее ошибок, либо три и менее ошибок и два и менее стираний, либо две и менее ошибок и четыре и менее стираний, либо одну ошибку и шесть и менее стираний, либо восемь и менее стираний.
Рассмотрим случай возможности исправления до двух ошибок и до четырех стираний. Пусть на приемном конце получен вектор
V = ( а7, а10, а, 1, а12, а12, а5, *, а2, *, *, а6, *, а3, 1 ) ,
в котором не более двух ошибок и четыре стирания. Применим алгоритм декодирования 4. 1. Полагаем в = 4, Ь = [(! — в — 1)/2] = 2. В данном случае нам известно, что
Х3 = а , Х4 = а , Х5
10
Хб
12
1
6
а
Поэтому
v(x) = (1 - а x)(1 - o9x)(1 - а10x)(1 - а12x) = = 1 + а14x + x2 + o3x3 + o8x4.
Заменим в векторе v * на 0:
=
10
1,
а12, а12, а
5, 0, а2, 0, 0, а6, 0, а3, 1 ) .
Вычислим компоненты синдрома для вектора V:
8о = ■у(а) = а®, 81 = у(а2) = а5, 82 = у(а3) = а4, 83 = т](а4) = а7, 84 = у(а5) = а4, 85 = -и(а6) = а11, 8б = у(аг) = аа , 87 = у(а8) = а9.
Поэтому синдромный многочлен имеет такой вид:
S(x) = а + ox + ox2 + ox + ox + o x + ox + ox.
Тогда
S(x) = S(x)v (x) = So + Sv1x + ... + Snx
11
а8 + o13x + o8x2 + o7x3 + o7x4 + o7x5 + o10x6 + ox7 + o3x8 + o11x9 + o11x10 + o2x11.
2. На вход алгоритма 1 подаем последовательность S4 = а7, S5 = а7, Sv6 вычислений
а10, SS7 = а. После
r А a(x) b(x) L
0 1 1 0
1 а7 1 + а7 x а8 1
2 а 1 + x o8x 1
3 а6 1 + x + o14x2 99 а9 + а9 x 2
4 а14 1 + o2x + o6x2 9 9 2 o9x + ox2 2
а14, x2 = а10, поэтому Х1
получаем а(х) = 1 + а2х + а6х2.
3. Корнями многочлена локаторов ошибок а(х) являются х1 Х2 = а5.
4. После того как все локаторы ошибок известны, можно воспользоваться формулой Форни для кодов
РС
' КХ-1)
Yi =
Х -1v(v-1
П (1 - XjХ- у
l^j^t+s,
i = 1, 2,...,t + s,
где
v (x) = a(x)S(x) =
= а8 + o9x + o13x2 + o12x3 + o3x4 + o6x5 (mod x8).
v6 y = o y =0 y = o6 y = o10, Y6 = а11. Таким образом:
Находим значения ошибок: Y1 = а6, Y2 = а, Y3 = 0, Y4 = а6, Y5
0,
и = v — e
6
0,0,0,а,0,0,0,
7 а, 1, а12, а13, а5, 0, а2,
а
6
а10, 0, а11, 0, 0
10
а11, а3
, 1 ).
7
а
а
e=
(
7
6
6
а
а
а
5. Декодирование двоичных кодов БЧХ с использованием алгоритма Берлекэмпа — Месси
В данном параграфе рассмотрим случай только ошибок для возможности применения алгоритма 3.
На основе алгоритмов 3 и 4 получаем следующий алгоритм декодирования.
Алгоритм 5 (декодирование двоичного кода БЧХ на основе алгоритма Берлекэмпа — Месси).
Вход: полученный вектор V.
Выход: исходный кодовый вектор и, если произошло не более [(! — 1)/2] ошибок.
1. Определяется Ь = [(! — 1)/2]. Находятся компоненты 80, 81,..., 821-1 синдромного вектора: 81 = = v(аг+1), % = 0,1,..., 2Ь — 1. Если синдромный вектор нулевой, то алгоритм завершается и возвращается и = V.
2. Для последовательности 80, 81,..., 821-1 с помощью алгоритма 3 находится многочлен локаторов ошибок а(х). Пусть I = degа(х).
3. Отыскиваются I корней многочлена а(х). При этом локаторы ошибок — это величины, обратные корням многочлена а(х).
У вектора V из символа с номером гу, Ху = а, вычитается 1, ] = 1,... ,1. Тем самым получается вектор и.
Пример 2. Пусть поле ОЕ(24) порождается примитивным многочленом р(х) = х4 + х +1 (см. пример 1), код БЧХ длины п =15 порождается многочленом:
д(х) = 1 + х + х2 + х4 + х5 + х8 + х10.
В данном случае к =15 — 10 = 5. Подряд идущици корнями многочлена д(х) будут:
а, а2, а3, а4, а5, а6.
Поэтому конструктивное расстояние данного кода равно с! = 7, т. е. код гарантированно может исправлять до трех ошибок.
Пусть на приемном конце получен вектор
V = ( 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0 ) ,
в котором не более трех ошибок. Данный вектор соответствует многочлену
V (х) = 1 + х + х4 + х7 + х8 + х10 + х12 + х13.
Вычисляем
S0 = v(а) = 1 + а + а4 + а7 + а8 + а10 + а12 + а13 = а7, Б2 = у(а3) = 1 + а3 + а12 + а6 + а9 + 1 + а6 + а9 = а10, Б4 = у(а ) = 1 + а5 + а5 + а5 + а10 + а5 + 1 + а5 = 1, Б1 = Б?, = а14, Б3 = = а13, 85 = Б22 = а5. Применим к этой последовательности алгоритм 3
r А а(х) b(x) L
0 1 1 0
1 а7 1 + а7х а8 1
3 а7 1 + а7х + х2 а8 + х 2
5 0 1 + а7х + х2 а8х2 + х3 2
Поэтому многочлен локаторов ошибок имеет вид
а(х) = 1 + а7 х + х2. Находим корни многочлена а(х): х1 = а14, х2 = а. Поэтому
Х1 = х-1 = а, Х2 = х-1 = а14, е = ( 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ) , и = V — е = ( 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1 ) .
6. Декодирование обобщенных кодов Рида — Соломона с использованием алгоритма Берлекэмпа — Месси
Рассматриваемая в данном параграфе теория частично отражена в работе [8], являющейся продолжением работы [7]. Эти две работы посвящены описанию различных алгоритмов декодирования обобщенных кодов Рида — Соломона на случай ошибок и стираний. Так как данная работа посвящена алгоритмам декодирования на основе алгоритма Берлекэмпа — Месси, то для удобства читателя приведем алгоритм декодирования и здесь.
Пусть а = (а0, а1,..., ап—1), где а — различные элементы поля Е = ОЕ(д), у = (у0, У1,..., Уп—1) — ненулевые (не обязательно различные) элементы из Е. Тогда обобщенный код Рида — Соломона (ОРС), обозначаемый ОКБь(а,у), состоит из всех кодовых векторов вида
и = (у0Ь(а0), У1Ъ(а{),..., Уп—Мап—1)), (17)
где Ъ(х) — информационные многочлены над полем Е степени не выше к — 1. Кодовое расстояние кода ОКБь (а, у) равно с! = п — к + 1. Если п = д — 1, вектор у состоит из единиц и а^ = а1, г = 0,1,... ,п — 1, где а — примитивный элемент поля Е, то в этом случае получаем код Рида — Соломона.
Заметим, что, в отличие от кодов РС, в обобщенных кодах РС одна из компонент вектора а может быть нулевой, что нужно учитывать в алгоритмах декодирования.
Пусть V — полученный на приемной стороне вектор, в котором могут быть ошибки и стирания. Пусть Ь — максимальное число возможных ошибок при фиксированном числе стираний в в векторе V, ! ^ 2Ь + в +1, Ь = [(! — в — 1)/2], т — реальное число ошибок, т ^ Ь. Как и ранее, заменим стертые символы в векторе V, например, на нули и будем обращаться с полученным вектором V как с вектором, содержащим только ошибки. Пусть ошибки произошли на позициях %1,..., %т, а стирания — на позициях
%т+1,... ,%т+в. При этом известны только позиции %т+1, ошибок веса не более т + в.
Вычисляя синдромный вектор, получаем
im+s. Получаем v = и + e, где e — вектор
S = SHT = eHT
(
1
а0
1
а1
ап-1
n—k —1 n — k —1 n—k —1
W а0 а1 ... on-1
/ wo 0
0 W1
J \ 0 0 ... Wn-1 J J
oi , _ —
8j = %1Х1 + ... + %тХт + ^т+1Х°т +1 + ... + %т+в Z^jn+в, 3 =0,1,..., 2Ь + в — 1,
где Х1 = а^1,..., Хт = а4т — неизвестные локаторы ошибок, Хт+1 = а^т+1,..., Хт+8 известные локаторы стираний, 11 = е¿1,... ,Ут+8 = вгт+в — значения ошибок в векторе V, Zj = YjгЮ16, 3 = 1,..., т+в. Пусть &(х) — это многочлен неизвестных локаторов ошибок, V(х) — многочлен известных локаторов стираний. Полагая
2Ь+в-1 т в
8 (х) = 8^х1, 8(х) = 8 (хУ (х), &(х) = ]^[(1 — Х^х)^(1 — Хт+х) = a(x)v (х),
г=0 г=1 г=1
т+в т+в
*(х)=Т, % П (1 — Xjх), Ф(х)=£ ^Х?+в П (1 — Xjх),
1=1 + г=1 +
3 = 3 =
получим ключевое уравнение
где
Пусть
a(x)S(x) = v(x) (mod x2t+s),
deg a(x) ^ m, deg v(x) ^ m + s - 1, <r(0) = 1.
S(x) = So + S1x + ... + S2t+2s-1x2t+2s-1 = S(x)v (x) = ( So + S1x + ... + S2t+s-1x2t+s-1)(vo + V1x + ... + Vsxs),
(18) (19)
элементарный симметрический многочлен от
где V0 = 1, VI = ( — 1)гаг(Хт+1,...,Хт+в)
Xm+1, . . . ,Хт+в , % = 1,...,в.
Так как в сравнении (18) deg ¡8(х) ^ т + в — 1, deg 8(х) ^ 2Ь + 2в — 1, deg &(х) ^ т, то необходимым условием выполнения данного сравнения является тот факт, что коэффициенты многочлена &(х)8(х) при степенях 3 = т + в,т + в + 1,..., 2Ь + в — 1 равны нулю. Поэтому получаем такую систему линейных уравнений:
&08в+т + & 18в+т-1 + ... + &т8в = ° &0 8в+т+1 + & 18в+т + ... + &т 8в + 1 = °
Ss+2t-1 + a1 Ss+2t-2 + ... + am S!
~'s + 2t-m-1
0.
Так как &0 = 1, то данная система в матричной форме примет такой вид:
S
s+m-1
-1 S.'
S
s+m
S
s+m-2 s+m-1
Ss
\ (
S
s+1
\
- S S
s+m
s+m+1
(20)
V Ss + 2t-2 Ss+2t-3 . . . Ss + 2t-m-1 J \ am / \ -Ss+2t-1 J
)
X
e
e
il
1
X
Теорема 6. Пусть ! ^ 2Ь + в + 1, т ^ Ь. Если на вход алгоритма 1 подать последовательность 8в, 8в+1,..., 8в+2—1, то на выходе алгоритма будет верное значение многочлена локаторов ошибок &(х). Доказательство аналогично доказательству теоремы 5. □
Алгоритм 6 (декодирование обобщенного кода РС на основе алгоритма Берлекэмпа — Месси на случай ошибок и стираний).
Вход: принятый вектор V, в котором в стираний и не более £ ошибок. Выход: исходный кодовый вектор и, если ! ^ 21 + в + 1.
1. Определяется £ = [(! — в — 1)/2]. В векторе V все стирания заменяют нулями, получая тем самым вектор Б. Находятся компоненты Б0, Б1,..., Б2г+8—1 синдромного вектора г)НТ. Если они все равны нулю, то возвращается вектор Б и процедура окончена.
Вычисляются значения локаторов стираний Х^1 = а^+1 ,...,Хг+8 = аit+s на основе известных позиций стираний гг+1,... ,гг+з. Вычисляются коэффициенты модифицированного синдромного многочлена Б(х) (если в = 0, то Б(х) = Б(х)).
2. На вход алгоритма 1 подается последовательность Я8, Бя+1,..., Б3+2(—1. На выходе данного алгоритма получается многочлен а(х). Пусть I = degа(х).
3. Если I > 0, то отыскиваются I корней многочлена а(х) последовательной подстановкой в него ненулевых элементов поля Е. При этом локаторы ошибок — это величины, обратные корням многочлена а(х).
4. При вычислении значений ошибок выполняется один из следующих пунктов.
4.1. Если среди локаторов стираний Х^1,..., имеется нулевое значение (в противном случае переходим в пункт 4.2), скажем, Хр = 0, то пусть:
М = {1,...,1}и{г + 1,...,г + в|\|р|.
Находятся Zj, о € М, например, с помощью формул Форни для ОРС кодов:
<Б (Х—1)
Zj =--^, о € М. (21)
3 п (1 — Х Х—1У ' у '
геы
После этого находятся значения ошибок у = Zj/т^., 0 € М. У вектора Б из г у-го символа, Ху = а, вычитается значение У у, 0 € М. При этом получается вектор Б. Пусть для некоторого г выполнено аг =0. Вычисляется значение Zp, равное скалярному произведению вектора и на первую строку матрицы Н. Вычисляется значение ошибки Ур = Zp/w^. Осталось в векторе и из г-го символа вычесть Ур.
4.2. Если условие 4.1 не выполнено, то пусть:
М = {1,...,1}и{г +1,...,г + в}.
По формуле (21) находятся значения Zj, затем значения ошибок у = Zj, 0 € М. У вектора Б из г у-го символа, Х у = аг., вычитается значение у, о € М. При этом получается вектор Б.
Если аг =0 для некоторого г и deg а(х) < Ь, то вычисляется значение Zo, равное скалярному произведению вектора иБ на первую строку матрицы Н, а затем вычисляется значение ошибки У0 = Zo/w^. Осталось в векторе и из г-го символа вычесть У0.
7. Декодирование кодов Гоппы с использованием алгоритма Берлекэмпа — Месси
Определение кода Гоппы опирается на два объекта: многочлен О(х) с коэффициентами из поля GF(qm), который называется многочленом Гоппы; подмножество L = {ао,а\,... ,ап-\] элементов поля GF(qm), таких, что G^i) = 0 для всех а £ L. Код Гоппы r(L,G) состоит из всех векторов u = = (uo,u\,...,un-i) с компонентами из GF(q), для которых
п-1
Ru = J2 —iа = 0 (modG(х)).
i=o х — (Xi
Если G(х) неприводим, то код r(L, G) называется неприводимым кодом Гоппы. Множество L называется множеством нумераторов позиций кодового слова. Имеют место следующие оценки параметров для кодов Гоппы (см., напр., [9]).
Теорема 7. Параметры [n, k, dj-кода r(L,G) над полем GF(q), где L С GF(qm), связаны соотношением
n = \L\, k ^ n — mr, r = deg G(x), d ^ r + 1. Нам понадобится следующее утверждение (см., напр., [1]).
Теорема 8. Код r(L,G) представляет собой ограничение кода GRSn—r(L,y) на подполе F = GF(q): r(L, G) = GRSn-r(L,y) П Fn, где r = deg G(x), y = (y0,yu ... ,yn—i),
Vi = G(ai) П-1-, г = 0,1,...,n — 1. (22)
x x ai — aj
Следствие 3. Проверочная матрица кода GRSn-r(L,y), который задает код r(L,G), имеет вид
\ ( G(a0)—1 0 ... 0 \
о Ga)-1 ... о
( 1 1. . . 1
ao a1 . . an—1
\ r — 1 r-1 r-1
a0 a1 . . an—1
/V 0 0 ... О(ап—1)—1 )
т. е. совпадает с проверочной матрицей кода Г(Ь,О).
Таким образом, код Г(Ь, О) можно задать с помощью обобщенного кода Рида — Соломона.
Пусть код Г(Ь, О) является двоичным. Если О(х) не имеет кратных корней, то код Г(Ь, О) называется сепарабельным кодом Гоппы. Пусть О(х) — полный квадрат некоторого многочлена над ОЕ(2т) наименьшей степени, делящийся на О(х). В случае сепарабельного кода О(х) = О2(х). Для минимального расстояния сепарабельного кода Г(Ь, О) верна оценка ! ^ 2г + 1 и выполнено равенство Г(Ь,О) = Г(Ь,О) (см., напр., [9]). Эти факты позволяют строить сепарабельный код Г(Ь,О) = Г(Ь,О), а некоторые алгоритмы декодирования кодов Гоппы применять относительно кода ОКБп—2Т(а, у), г = = deg О(х).
Пусть [п,к,!]-код Г(Ь,О) задается на основе ОРС кода: Г(Ь,О) = ОЯБп—г(Ь,у) П Еп, Е = ОЕ(д), г = degО(х), к = п — г — размерность кода ОКБп—г(Ь,у) длины п, Н — проверочная матрица кода ОКБп—г(Ь,у). Пусть !,! — кодовые расстояния кодов Г(Ь,О) и ОКБп—г(Ь,у) соответственно. Так как ! ^ г +1, Б = п — Б + 1= г + 1, то если в кодовом векторе и € Г(Ь,О) произошло £ ошибок и в стираний, причем г ^ 21 + в, то для его декодирования можно применять алгоритмы декодирования для ОРС-кодов.
Если же код Г(Ь,О) двоичный и сепарабельный, то Г(Ь,О) = ОКБп—2г(Ь,у) П Еп, Е = ОЕ(2), Б = = п — 2г — размерность кода ОКБп—2Г(Ь,у), Н — проверочная матрица кода ОКБп—2Г(Ь,у). Также ! ^ 2г + 1, Г(Ь,О2) С ОКБп—2г(Ь,у), Б =2г + 1, поэтому в этом случае алгоритмы декодирования для ОРС-кодов можно применять для декодирования вектора и, в котором £ ошибок и в стираний, причем 2г > 2Ь + в.
Алгоритм 7. (декодирование кода Гоппы на основе алгоритма Берлекэмпа — Месси на случай ошибок и стираний)
Вход: принятый вектор V.
Выход: исходный кодовый вектор и, в котором произошло в стираний и не более £ ошибок, если г ^ '2Ь + в, г = degО(х), и € Г(Ь,О) С ОЕБп—г(Ь,у) (для двоичного сепарабельного кода 2г ^ '2Ь + в, и € Г(Ь, О) С ОЕБп—2г(Ь, у)).
1. Определяется £ = [(г — в)/2] (£ = [(2г — в)/2] в случае двоичного сепарабельного кода Гоппы).
В векторе V все стирания заменяют нулями, получая тем самым вектор Б. Находятся компоненты
~—т
Б0, Б1,..., Б2г+а—1 синдромного вектора бН . Если они все равны нулю, то возвращается вектор V и процедура окончена.
Вычисляются значения локаторов стираний Х^1 = аг+1 ,...,Х(+3 = аit+s на основе известных позиций стираний %1+1,... ,%1+а. Вычисляются коэффициенты модифицированного синдромного многочлена Б(х) (если в = 0, то Б(х) = Б(х)).
2. На вход алгоритма 1 подается последовательность Ба, Бя+1,..., Ба+2(—1. На выходе данного алгоритма получается многочлен а(х). Пусть I = degа(х).
3. Отыскиваются I корней многочлена а(х) последовательной подстановкой в него ненулевых элементов поля ОЕ(дт). При этом локаторы ошибок — это величины, обратные корням многочлена а(х).
4. При вычислении значений ошибок выполняется один из следующих пунктов.
4.1. Если среди локаторов стираний Х^!,..., имеется нулевое значение (в противном случае переходим в пункт 4.2), скажем, Хр = 0, то пусть
м = {1,...,1}и{г + 1,...,г + в}\{р}
— множество индексов локаторов ошибок и стираний без учета индекса р. Находятся Zj, 3 € М, например, с помощью алгоритма Форни (21) для обобщенных кодов РС. После этого находятся значения ошибок Yj = ZjG(Xj), 3 € М. У вектора V из ^-го символа, Xj = = а^., вычитается значение Yj, 3 € М. При этом получается вектор и. Пусть для некоторого г выполнено а = 0 (в противном случае все локаторы стираний были бы ненулевые). Вычисляется значение Zp, равное скалярному произведению вектора и на первую строку матрицы Н. Вычисляется значение ошибки Yp = ZpG(аi). Осталось в векторе и из г-го символа вычесть Yp.
4.2. Если условие 4.1 не выполнено, то пусть М = {1,...,/}и{£ + 1,...,Ь + в}. По формуле (21) находятся значения Zj, затем — значения ошибок Yj = ZjG(Xj), 3 € М. У вектора V из ^-го символа, Xj = щ., вычитается значение Yj, 3 € М. При этом получается вектор и.
Если а =0 для некоторого г и deg а(х) строго меньше длины ЬЕВИ, (полученного на выходе алгоритма 1), то вычисляется значение Zo, равное скалярному произведению вектора и на первую строку матрицы Н, а затем вычисляется значение ошибки Yo = ZoG(аi). Осталось в векторе V из г-го символа вычесть Yo.
Пример 3. Рассмотрим расширение поля GF(2) С GF(24), где поле GF(24) строится на основе примитивного многочлена р(х) = х4 + х +1 и рассматривалось в примере 1. Пусть Ь = GF(24) = = {0,1, а, а2,..., а14}, G(x) = х2 + х + а3. Так как след элемента а3 в поле GF(24) не равен нулю, то многочлен G(x) в этом поле не имеет корней. Поэтому из неприводимости G(x) над GF(24) следует, что код Г(Ь, G) является сепарабельным, поэтому он может исправлять до двух ошибок, либо одну ошибку и до двух стираний, либо до четырех стираний. Проверочная матрица Н кода Г(Ь, G) примет такой вид:
( G(0)-1 G(1)-1 G(а)-1 ... С^(а14)-1 ^ V 0G(0)-1 Ш(1)-1 аП(а.)-1 . 4
H
„12
0
*12 „12
а а а5 а5
I 1
1 1 1 0 0 0
Л4\-1
12
„8
„14
„13
11
a14G(a14) 6 ~22
а 11
аа 13 14
0
11 1 1 0 100 101 100 111 111 100
0 0 1 11 0 0 0 1 1 1 0 0 0 1 110 11 10000 11101 10 111
0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0
аа
0 \
1
01110 00001 01101 1 0 0 0 0 110 11 1 1 1 1 0 J
Так как все строки матрицы Н линейно независимы, то п — к = 8, к = 8. Выписав построчно фундаментальную систему решений системы однородных линейных уравнений HX = О, находим порождающую матрицу кода Г(Ь^):
G
1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0
1 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0
1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0
0 1 0 1 1 1 0 0 1 0 0 1 0 0 0 0
0 0 1 0 1 1 1 0 1 0 0 0 1 0 0 0
0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0
1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0
1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1
G) С GR S12(L,y), при этом проверочная матрица
учитывая следствие 3, имеет вид
H
( а9 а9 а8 а6 а3 а8 а2 а а12 а6 а12 а2 а4 а4 а а3
0 а9 а9 а8 а6 а12 а7 а7 а4 а14 а6 а12 1 а а14 а2
0 а9 а10 а10 а9 а а12 а13 а11 а7 1 а7 а11 а13 а12 а
\ 0 а9 а11 а12 а12 а5 а2 а4 а3 1 а9 а2 а7 а10 а10 1
9
8
6
3
8
9
а
а
а
а
а
а
6
8
а
а
а
Пусть на приемном конце получен вектор:
v = (1, 0, 0,0,0,1, 0,1,1,1,1, 0,1,0,0,1),
в котором до двух ошибок (как видно, стирающих символов в принятом векторе нет). Для декодирования принятого вектора применим алгоритм 7.
_t
1. Определяем s = 0, t = deg G(x) = 2. Находим синдромный вектор S = vH = = ( а9, а9, а10, а6 ) .
2. Применяя к данной последовательности алгоритм Берлекэмпа — Месси 1, получаем а(х') = 1 +
2 9 2
+ а2х + ах2.
3. Корнями многочлена а(х) являются xi = а12, Х2 = а9, поэтому Xi = х-1 = а3 = а4, X2 = х-1 = = а6 = а^. Следовательно, ошибки произошли на 4-й и 7-й позициях.
4. Так как код двоичный, то исходный кодовый вектор равен:
u = (1, 0, 0,0,1,1, 0, 0,1,1,1, 0,1,0,0,1), при этом длина LFSR совпадает с degа(х), поэтому на позиции с номером 0 ошибок нет.
Литература
[1] Блейхут Р. Теория и практика кодов, контролирующих ошибки. Пер. с англ. Москва: Мир, 1986. 576 с. URL: http://publ.lib.ru/ARCHIVES/B/BLEYHUT_Richard_E/_Bleyhut_R.E..html
[2] Huffman W. Cary. Fundamentals of Error-Correcting Codes. Cambridge: Cambridge University Press, 2003. 646 p. DOI: https://doi.org/10.1017/CBO9780511807077.
[3] Gao S. A new algorithm for decoding Reed-Solomon codes // In: Bhargava V.K., Poor H.V., Tarokh V., Yoon S. (eds.) Communications, Information and Network Security. The Springer International Series in Engineering and Computer Science (Communications and Information Theory), vol 712, pp. 55-68. Springer, Boston, MA. DOI: https://doi.org/10.1007/978-1-4757-3789-9_5.
[4] Massey J.L. Shift-register synthesis and BCH decoding // IEEE Transactions on Information Theory. 1969. Vol. IT. 15, № 1. P. 122-127. DOI: https://doi.org/10.1109/TIT.1969.1054260.
[5] Sugiyama Y. et al. A method for solving key equation for decoding Goppa codes // Information and Control. 1975. Vol. 27. Issue 1. P. 87-99. DOI: https://doi.org/10.1016/S0019-9958(75)90090-X
[6] Dornstetter J.L. On the equivalence Between Berlekamp's and Euclid's Algorithm // IEEE Trans. Inform. Theory. 1987. Vol. IT-33, № 3. P. 428-431.
[7] Рацеев С.М., Череватенко О.И. Об алгоритмах декодирования обобщенных кодов Рида — Соломона на случай ошибок и стираний // Вестник Самарского университета. Естественнонаучная серия. 2020. Т. 26, № 3. С. 17-29. DOI: https://doi.org/10.18287/2541-7525-2020-26-3-17-29.
[8] Рацеев С.М., Череватенко О.И. Об алгоритмах декодирования обобщенных кодов Рида — Соломона на случай ошибок и стираний. II // Вестник Самарского университета. Естественнонаучная серия. 2021. Т. 27, № 2 (в печати).
[9] Мак-Вильямc Ф.Дж., Слоэн Н.Дж.А. Теория кодов, исправляющих ошибки: пер. с англ. Москва: Связь, 1979. 744 с. URL: https://ru.djvu.online/file/jZGJCUDSUc4AZ.
DOI: 10.18287/2541-7525-2021-27-1-44-61 Submited: 10.01.2021
Revised: 17.02.2021 Accepted: 28.02.2021
S.M. Ratseev
Ulyanovsk State University, Ulyanovsk, Russian Federation E-mail: [email protected]. ORCID: https://orcid.org/0000-0003-4995-9418
A.D. Lavrinenko
Ulyanovsk State University, Ulyanovsk, Russian Federation E-mail: [email protected]. ORCID: https://orcid.org/0000-0003-3652-1097
E.A. Stepanova
Ulyanovsk State University, Ulyanovsk, Russian Federation E-mail: [email protected]. ORCID: https://orcid.org/0000-0003-0276-1615
ON THE BERLEKAMP — MASSEY ALGORITHM AND ITS APPLICATION FOR DECODING ALGORITHMS
ABSTRACT
The paper is devoted to the Berlekamp — Masssey algorithm and its equivalent version based on the extended Euclidean algorithm. An optimized Berlekamp — Massey algorithm is also given for the case of a field of characteristic 2. The Berlekamp — Massey algorithm has a quadratic complexity and is used, for example, to solve systems of linear equations in which the matrix of the system is the Toeplitz matrix. In particular, such systems of equations appear in algorithms for the syndrome decoding of BCH codes, Reed — Solomon codes, generalized Reed — Solomon codes, and Goppa codes. Algorithms for decoding the listed codes based on the Berlekamp — Massey algorithm are given.
Key words: Berlekamp — Massey algorithm; extended Euclidean algorithm; Reed — Solomon codes; code decoding.
Citation. Ratseev S.M., Lavrinenko A.D., Stepanova E.A. On the Berlekamp — Massey algorithm and its application for decoding algorithms. Vestnik Samarskogo universiteta. Estestvennonauchnaia seriia = Vestnik of Samara University. Natural Science Series, 2021, vol. 27, no. 1, pp. 44-61. DOI: http://doi.org/10.18287/2541-7525-2021-27-l-44-61. (In Russ.)
Information about the conflict of interests: authors and reviewers declare no conflict of interests.
© Ratseev S.M., 2021
Sergey Mihaylovich Ratseev — Doctor of Physical and Mathematical Sciences, associate professor, Department of Information Security and Control Theory, Ulyanovsk State University, 42, Leo Tolstoy Street, Ulyanovsk, 432017, Russian Federation. ©c Lavrinenko A.D., 2021
Anna Dmitrievna Lavrinenko — student of the Department of Information Security and Control Theory, Ulyanovsk State University, 42, Leo Tolstoy Street, Ulyanovsk, 432017, Russian Federation. ©c Stepanova E.A., 2021
Ekaterina Alekseevna Stepanova — student of the Department of Information Security and Control Theory, Ulyanovsk State University, 42, Leo Tolstoy Street, Ulyanovsk, 432017, Russian Federation.
References
[1] Blahut Richard E. Theory and practice of error control codes. Translation from English. Moscow: Mir, 1986, 576 p. Available at: https://scask.ru/h_book_tpc.php. (In Russ.)
[2] Huffman W. Cary. Fundamentals of Error-Correcting Codes. Cambridge: Cambridge University Press, 2003, 646 p. DOI: https://doi.org/10.1017/CBO9780511807077.
[3] Gao S. A new algorithm for decoding Reed—Solomon codes. In: Bhargava V.K., Poor H.V., Tarokh V., Yoon S. (eds.) Communications, Information and Network Security. The Springer International Series in Engineering and Computer Science (Communications and Information Theory), vol. 712, pp. 55-68. Springer, Boston, MA. DOI: https://doi.org/10.1007/978-1-4757-3789-9_5.
[4] Massey J.L. Shift-register synthesis and BCH decoding. IEEE Transactions on Information Theory, 1969, vol. IT. 15, issue 1, pp. 122-127. DOI: https://doi.org/10.1109/TIT.1969.1054260.
[5] Sugiyama Y. et al. A method for solving key equation for decoding Goppa codes. Information and Control, 1975, vol. 27, issue 1, pp. 87-99. DOI: https://doi.org/10.1016/S0019-9958(75)90090-X.
[6] Dornstetter J.L. On the equivalence Between Berlekamp's and Euclid's Algorithm. IEEE Transactions on Information Theory, 1987, vol. IT-33, issue 3, pp. 428-431. DOI: https://doi.org/10.1109/TIT.1987.1057299.
[7] Ratseev S.M., Cherevatenko O.I. On decoding algorithms for generalized Reed-Solomon codes with errors and erasures. Vestnik Samarskogo universiteta. Estestvennonauchnaia seriia = Vestnik of Samara University. Natural Science Series, 2020, vol. 26, no. 3, pp. 17-29. DOI: https://doi.org/10.18287/2541-7525-2020-26-3-17-29. (In Russ.)
[8] Ratseev S.M., Cherevatenko O.I. On decoding algorithms for generalized Reed-Solomon codes with errors and erasures. II. Vestnik Samarskogo universiteta. Estestvennonauchnaia seriia = Vestnik of Samara University. Natural Science Series. 2021, vol. 27, no. 2. (Print, in Russ.)
[9] Mac Williams F.J., Sloane N.J.A. The theory of error correcting codes. Moscow: Svyaz', 1979, 744 p. Available at: https://ru.djvu.online/file/jZGJCUDSUc4AZ. (In Russ.)