X КОДИРОВАНИЕ И ПЕРЕДАЧА ИНФОРМАЦИИ
УДК 519.725
ПРОСТОЙ АЛГОРИТМ ДЕКОДИРОВАНИЯ АЛГЕБРАИЧЕСКИХ КОДОВ
С. В. Федоренко,
канд. техн. наук, доцент
Санкт-Петербургский государственный университет аэрокосмического приборостроения
Рассматривается алгоритм декодирования, который представляется самым простым и естественным в классе алгоритмов декодирования алгебраических кодов до их корректирующей способности. Приводятся вывод, описание, анализ и доказательство корректности алгоритма. Асимптотическая сложность алгоритма совпадает со сложностью лучших алгоритмов декодирования, а описание является самым простым из описаний известных алгоритмов.
Введение
Корректирующие коды получили широкое применение в задачах передачи, хранения и защиты информации. Для кодов, имеющих алгебраическую структуру, существуют алгебраические алгоритмы декодирования. Под алгебраическим декодированием понимают методы декодирования, основанные на алгебраических свойствах кодов и состоящие в решении уравнений и/или систем уравнений с полиномиальной сложностью. Классические алгебраические алгоритмы декодирования обеспечивают исправление ошибок до конструктивной корректирующей способности кода, но имеют довольно сложное и громоздкое описание.
В работах [7, 8] предложен алгоритм декодирования, который представляется самым простым и естественным в классе алгоритмов декодирования алгебраических кодов до их корректирующей способности. Асимптотическая сложность алгоритма совпадает со сложностью лучших алгоритмов декодирования, а описание является самым простым из описаний известных алгоритмов.
В статье предлагается описание, оригинальный вывод и доказательство корректности алгоритма. Приводится пример алгоритма декодирования.
Основные понятия и определения
Описание алгоритма декодирования приведем для кодов Рида—Соломона, так как для других классов алгебраических кодов принципиальных отличий в описании алгоритма нет.
Рассмотрим код Рида—Соломона (п, Ъ, й) над конечным полем ОЕ(д) с длиной п = q - 1, числом информационных символов Ъ и конструктивным расстоянием й = п - Ъ + 1, где q — степень простого
числа. Корректирующая способность кода равна " * -11 г т
---- , где [а] — целая часть числа а.
2
Порождающий многочлен кода Рида—Соломона обозначим через
Ъ+*-2
ё(х) = П (х ~а1)’
і-Ъ
где Ъ — произвольное натуральное число; а — примитивный элемент ОЕ(д).
Далее для упрощения изложения будем рассматривать только случай Ъ = 1.
Принятый вектор представлен многочленом
П-1 п-1 п-1
Щх) = ^ ГХ = С(х) + Е(х) = ^ сіхі + ^ еіі І-0 І-0 і-0
где С(х) — кодовое слово; Е(х) — вектор ошибок.
Пусть Е(х) содержит і < *-1 ошибок, которые
2
имеют координаты і1, і2, ..., іг, причем 0 < і1 < і2 < < ... < іі < п - 1, и значения е^, еі2,..., еіі. Назовем величины ^ = аіх, = аі2,..., = а4 локаторами
ошибок, а У1 = еі1, У2 = еі2,..., = е^ — значениями
ошибок.
Многочлен локаторов ошибок обозначим через
W (х) = П (х - Яі),
і—1
где Zi — локатор ошибки в векторе ошибок Е(х). Положим по определению W(x) = 1, если ошибок нет.
Известно несколько методов кодирования для кодов Рида—Соломона. В настоящей работе при-
меняется спектральное кодирование в частотной области для несистематического кодирования. Заметим, что алгоритм декодирования не зависит от метода кодирования. Информационный многочлен кода Рида—Соломона обозначим как
k-1
m,x .
1=0
При спектральном кодировании компонента сь кодового слова С(х) вычисляется как
с1 = М(а1), ь е [0, п -1].
Вывод алгоритма декодирования
Вывод алгоритма декодирования, основанный на интерпретации работ [1-4], предложен в работах [5, 6].
Если гь = сЬ, то гЬ = М(аЬ). Если т1 Ф сь, то W(aь) = = 0. Следовательно:
W(аЬ )тЬ = W(аЬ)М(аЬ), Ь е [0, п -1].
Пусть Р(х) = W(x)M(x). Тогда ключевое уравнение имеет вид
W(аЬ)тЬ = Р(а!), Ь е [0, п -1].
Построим такой интерполяционный многочлен Т(х), что
Т(а1) = Ть, Ье [0, п-1],
где deg Т(х) < п.
Далее, из
W(aь )Т(аЬ) = Р(аь), ь е [0, п -1] имеем сравнение
W(x)T(x) = P(x) mod xn -1
degW(x) < d ~1 .
2
maximize deg W (x)
Учитывая, что deg Р(х) = deg М (х) + deg W (х) <
< (к -1) + * ~1 < п ^ ^ -1 < п ^ ^, переписываем усло-2 2 2
вие решения сравнения на эквивалентное
W(x)T(x) = P(x) mod xn -1
degP(x) < n k .
2
maximize deg P(x)
Решаем сравнение применением расширенного алгоритма Евклида к многочленам хп - 1 и Т(х), получая многочлены Р(х) и W(x). Информационный многочлен получается делением
M(x) =
P(x) W (x)'
Алгоритм декодирования
Приведем алгоритм из работы [7]. Заметим, что этот алгоритм ранее был введен в работе [8]. Для упрощения изложения будем рассматривать только классические коды Рида—Соломона с параметрами п = q - 1 и Ь = 1.
1. Интерполяция.
Построим такой интерполяционный многочлен Т(х), что
Т(а!) = т, ь е [0, п -1], где deg Т(х) < п.
2. Незаконченное вычисление наибольшего общего делителя.
Решаем сравнение
W (x)T(x) = P(x) mod xn
deg P(x) <
n + k 2
maximize deg P(x)
применением расширенного алгоритма Евклида к многочленам хп - 1 и Т(х), получая единственную пару многочленов Р(х) и W(x).
3. Деление.
Информационный многочлен есть
M(x) =
P(x) W (x)'
Асимптотическая сложность алгоритма 0(n(log п)2) совпадает со сложностью лучших классических алгоритмов декодирования кодов Рида— Соломона [9-11].
Первый шаг алгоритма может быть выполнен любым быстрым алгоритмом вычисления дискретного преобразования Фурье над конечным полем, например [12, 13], со сложностью 0(n(log п)2) операций. В случае, когда необходимо минимизировать число умножений, лучший алгоритм для малых длин (п < 511) предложен в работе [14].
Одна из лучших реализаций второго шага есть алгоритм Мёнка [15] со сложностью 0(n(log п)2) операций, который также воспроизведен в монографиях [16, 17]. Заметим, что при этом второй шаг полностью совпадает с алгоритмом решения ключевого уравнения Сугиямы и других [18].
Деление на третьем шаге алгоритма выполняется за 0(пlognloglogn) операций.
При приложении алгоритма декодирования к другим классам алгебраических кодов, таких как коды Боуза—Чоудхури—Хоквингема, коды Гоп-пы или альтернантные коды, необходимо добавить дополнительный шаг, восстанавливающий кодовое слово по информационному многочлену.
Корректность алгоритма декодирования
Для завершения вывода алгоритма декодирования необходимо доказать существование и единственность полученного решения.
Теорема. Алгоритм декодирования приводит к единственному решению при декодировании до корректирующей способности кода Рида—Соломона.
Доказательство. Пусть имеются два решения сравнения
W(x)T(x) = P(x) mod xn -1
degP(x) < n±k . (*)
2
maximize deg P(x)
Первое решение, полученное применением расширенного алгоритма Евклида к многочленам
xn - 1 и T(x) с правилом остановки deg P(x) < n * k,
2
дает пару многочленов P(x) и W(x). Если P(x) делит-
P(x)
ся на W(x) без остатка, то многочлен M(x) =---
W (x)
будет информационным многочленом кода Рида— Соломона.
Заметим, что расширенный алгоритм Евклида надо проводить с нулевого (фиктивного) шага, а не с первого, как обычно. Заканчивать расширенный алгоритм Евклида надо дополнительным (с нулевым остатком) шагом.
Другое решение (истинное) удовлетворяет сравнению
W(x)T(x) = P(x) mod xn -1 при декодировании до корректирующей способно"—' d— 1
сти кода Рида—Соломона deg W(x) < и при-
2
водит к другому информационному многочлену кода Рида—Соломона
. P (x)
М (x) = —---.
W (x)
Вначале рассмотрим вырожденный случай, когда решение сравнения (*) заканчивается на нулевом шаге расширенного алгоритма Евклида, и докажем, что информационные многочлены, полученные из обоих решений, M(x) = М(x), совпадают.
Пусть W (x) = 1. Тогда М (x) = М (x) = P(x) = T(x), так как из нулевого шага расширенного алгоритма Евклида следует, что degT(x) < k -1 < n*k.
2
Далее будем полагать, что W (x) Ф1.
Заметим, что degW(x) < n - n * k = d ~1 по свой-
2 2
ству степени линейных коэффициентов в расширенном алгоритме Евклида.
Выполним деление с остатком
P(x) = W (x)M(x) + U(x),
причем degU(x)<degW(x).
Если остаток от деления равен нулю: U(x) = О, то многочлен M(x) будет информационным многочленом кода Рида—Соломона.
Очевидно, что deg P (x) = deg M (x) + deg W(x) <
< (k -1) + < n±k _ 1 < n + k.
v ' 2 2 2 Покажем, что информационные многочлены, полученные из обоих решений, совпадают, т. е.
IM(x) = M (x)
[u(x) = О .
После преобразований
P(x)W (x) = (W (x)T(x)) W(x) =
= W(x)(T(x)W(x)) = W(x)P(x) mod xn -1
получаем сравнение
P(x)W(x) = W(x)P(x) mod xn -1.
Оценим степени произведения многочленов в каждой части сравнения. Из
deg W(x), W(x) < -d _1
deg P(x), P(x) <
2
n + k 2
следует
= n
т. е.
deg ^Р(х)Т^ (х)) deg (Ж (х)Р (х))< ^ ^
deg ^P(x)W (х)| < п
deg ^Ж (х)Р (х)|< п
Видно, что степени произведения многочленов в каждой части сравнения не превышают степень модуля хп - 1, т. е. сравнение справедливо как равенство для многочленов
Р(х^ (х) = W (х) Р (х).
Отсюда после деления имеем
Р(х) = W (х) = W (х)М (х).
W (х)
Из последнего равенства видно, что Р(х) делит-
Р(х)
ся на W(x) без остатка, т. е. и(х) = 0 и М(х) = ^ .
После еще одного деления имеем
Р(х^ = М (х)
W (х)
и
М(х) = М (х).
№ 3, 2008"Х.
25
Показано, что решение сравнения (*), полученное применением расширенного алгоритма Евклида, всегда существует и совпадает с истинным решением. Ч. т. д.
Пример
Рассмотрим процедуры кодирования и декодирования для кода Рида—Соломона (4, 2, 3). Коэффициенты многочлена будем записывать как вектор-строку и как вектор-столбец (без обозначения операции транспонирования).
Конечное поле. Вначале введем конечное поле ОЕ(5) = {0, 1, 2, 3, 4}mod5. Или в другом представлении: ОЕ(5) = {0, а0, а1, а2, а3}, где а = 2 — примитивный элемент:
0 1 2 3 4 і
а а а а а = 1
1 2 4 3 1
Код Рида—Соломона. Введем код Рида—Соломона (4, 2, 3) над ОЕ(5). Его порождающий многочлен имеет вид
g(x) = (х - а)(х - а2) =
= (х - 2)(х - 4) = х2 + 4х + 3, порождающая матрица
в =
' §0 §1 §2 0 3 4 1 0"
0 §0 §1 §2 0 3 4 1
и проверочная матрица
Н =
а0 а1 а2 а3 1 1-і 2 4 3 1
а0 а2 а0 а2 1 4 1 4
Спектральное кодирование. Кодовое слово вычисляется по формуле
C = VM,
где матрица Вандермонда есть
V =
Пусть информационный многочлен есть
М(х) = [т0 т 0 0] =
= [2 3 0 0] = 2 + 3х.
Тогда процедура кодирования имеет вид
а0 а0 а0 а0 1 1 1 1"
а0 а1 а2 а3 1 2 4 3
а0 а2 а0 а2 1 4 1 4
а0 а3 а2 а1 1 3 4 2
С0
С1
С2
. С3
а0 а0 а0 а0 т0
а0 а1 а2 а3 т1
а0 а2 а0 а2 0
а0 а3 а2 а1 0
О 1 1 1-і 1 1 1 1 2
3 12 4 3 3
4 14 14 0
1-і 4 3 1 0
С(х) = [С0 С1 С2 С3 ] =
= [0 3 4 1] = 3х + 4х2 + х3.
Обратное преобразование. Запишем матрицу, обратную к матрице Вандермонда:
V-1 = -
1111
13 4 2
14 14 12 4 3
Тогда обратное дискретное преобразование Фурье есть
M = V
С(х) = [со С1 С2 Сз ] =
= [0 3 4 1] = Зх + 4х2 + х3;
1 ГО і і 1-і 1 1 1 і 0
3 4 3 1 3
0 14 14 4
1 О і 1 1-і 2 4 3 1 1 1-і
М(х) = [т0 т1 0 0] =
= [2 3 0 0] = 2 + 3х.
Декодирование. Пусть из канала принят вектор Д(х) = С(х) + Е(х):
С(х) = (0 3 4 1)
Е(х) = (0 0 2 0)
Я(х) = (0 3 1 1)
Z а0 а1 а 2 а3
Z 1 2 4 3
Д(х) = /0 Г1 г2 г3 ] =
=[ 0 3 1 1] = 3 + х 2 + х3.
я: и ц я л о п р
"0" 1 1 1 1" "0"
0 1 3 4 2 3
3 1 4 1 4 1
2 1 2 4 3 1
T = V-1R = T0 T1 T2 T3 j = = Г0 0 З 2l = 3x2 + 2x3.
2. Незаконченное вычисление наибольшего общего делителя:
W(x)T(x) = P(x) mod xn -1 degP(x) < ntA ;
maximize deg P(x)
\w(x)^3x2 + 2x3 j = P(x)modx4 -1 [deg P(x) < 3
x4 -1 = (3x2 + 2x3 j(3x + 3) + (x2 -1);
(3x + 3)(3x2 + 2x3 ) = -(x2 -1) + x4 -1;
(3x + 3)^3x2 + 2x3 j = 4x2 + 1modx4 -1;
Jw (x) = 3x + 3 = 3(x - 4) = 3^x -a2 j
IP(x) = 4x +1
3. Деление:
M(x) =
P(x) 4x +1
— 3x + 2.
W (х) 3х + 3
Информационный многочлен есть
М(х) = [т0 т 0 0] = [2 3 0 0] = 2 + 3х.
Заключение
Рассмотренный метод декодирования предложен Гао [7] и Шиозаки [8], однако вывод и анализ алгоритма, доказательство его корректности и генетическая связь с алгоритмами [1-4, 9, 10, 18] являются оригинальным результатом автора [5, 6].
На текущий момент этот метод декодирования и его модификации представляются автору самыми простыми для кодов с ограниченной длиной при любых реализациях.
Автор выражает признательность фонду имени Александра фон Гумбольдта (Германия) за многолетнюю поддержку научных исследований.
Литература
1. Welch L., Berlekamp E. R. Error correction for algebraic block codes. U.S. Patent 4,633,470. Sep. 2Т, 19В3.
2. Morii M., Kasahara M. Generalized key-equation of remainder decoding algorithm for Reed—Solomon codes || IEEE Transactions on Information Theory. Nov. 1992. Vol. IT-38. N 6. P. 1801-1807.
3. Chambers W. G. Solution of Welch—Berlekamp key equation by Euclidean algorithm || Electronics Letters. 1993. Vol. 29. N 11. P. 1031.
4. Gemmell P., Sudan M. Highly resilient correctors for polynomials || Information Processing Letters. 1992. Vol. 43. N 4. P. 169-174.
5. Fedorenko S. V. A simple algorithm for decoding Reed— Solomon codes and its relation to the Welch—Berle-kamp algorithm || IEEE Transactions on Information Theory. Mar. 2005. Vol. IT-51. N 3. P. 1196-1198.
6. Fedorenko S. V. Correction to «A simple algorithm for decoding Reed—Solomon codes and its relation to the Welch—Berlekamp algorithm» || IEEE Transactions on Information Theory. Mar. 2006. Vol. IT-52. N 3. P. 1278.
7. Gao S. A new algorithm for decoding Reed—Solomon codes || Communications, Information and Network Security | V. Bhargava, H. V. Poor, V. Tarokh, and S. Yoon, Eds. Norwell, MA: Kluwer, 2003. Vol. 712. P. 55-68.
8. Shiozaki A. Decoding of redundant residue polynomial codes using Euclid’s algorithm || IEEE Transactions on Information Theory. Sep. і988. Vol. IT-34. N. 5. P. 1351-1354.
9. Мак-Вильямс Ф. Дж., Слоэн Н. Дж. А. Теория кодов, исправляющих ошибки. М.: Связь, 1979. 744 с.
10. Блейхут Р. Теория и практика кодов, контролирующих ошибки. М.: Мир, 1986. 576 с.
11. Justesen J. On the complexity of decoding Reed— Solomon codes // IEEE Transactions on Information Theory. Mar. 1976. Vol. IT-22. N 2. P. 237-238.
12. Wang Y., Zhu X. A fast algorithm for the Fourier transform over finite fields and its VLSI implementation // IEEE Journal on Selected Areas in Communications. Apr. 1988. Vol. 6. N 3. P. 572-577.
13. Afanasyev V. On complexity of FFT over finite field: Proc. of the Sixth Joint Swedish-Russian International Workshop on Information Theory. Molle, Sweden, August 1993. P.315-319.
14. Трифонов П. В., Федоренко С. В. Метод быстрого вычисления преобразования Фурье над конечным полем // Проблемы передачи информации. 2003. Т. 39. Вып. 3. С. 3-10.
15. Moenck R. T. Fast computation of GCDs: Proc. of the 5th Annual ACM Symposium on Theory of Computing. Austin, TX, 1973. P. 142-151.
16. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979. 535 с.
17. Блейхут Р. Быстрые алгоритмы цифровой обработки сигналов. М.: Мир, 1989. 448 с.
18. Sugiyama Y., Kasahara M., Hirasawa S., Namekawa T. A method for solving key equation for decoding Gop-pa codes // Information and Control. 1975. Vol. 27. P. 87-99.
№ 3, 2008
ИHФOPMАЦИOHHO-УПPАBЛЯЮШИE СИСТЕМЫ
27