- •Глава3 4
- •Часть 1 введение 4
- •Часть 2 коды хемминга, голея и рида-маллера 39
- •Часть 3 двоичные циклические коды и коды бчх 54
- •Часть 4 недвоичные бчх коды -коды рида-соломона 105
- •Глава3 часть 1 введение
- •1.1. Кодирование для исправления ошибок: Основные положения
- •1.1.1. Блоковые и сверточные коды
- •1.1.2. Хеммингово расстояние, Хемминговы сферы и корректирующая способность
- •1.2. Линейные блоковые коды
- •1.2.1. Порождающая и проверочная матрицы
- •1.2.2. Вес как расстояние
- •1.3. Кодирование и декодирование линейных блоковых кодов
- •1.3.1. Кодирование с помощью матриц g и н
- •1.3.2. Декодирование по стандартной таблице
- •1.3.3. Хемминговы сферы, области декодирования и стандартная таблица
- •1.4. Распределение весов и вероятность ошибки
- •1.4.1. Распределение весов и вероятность необнаруженной ошибки в дск.
- •1.4.2. Границы вероятности ошибки в дск, каналах с абгш и с замираниями
- •1.5 Общая структура жесткого декодера для линейных кодов
- •Часть 2 коды хемминга, голея и рида-маллера
- •2.1. Коды Хемминга
- •2.1.1. Процедуры кодирования и декодирования
- •2.2. Двоичный код Голея
- •2.2.1 Кодирование
- •2.2.2. Декодирование
- •2.2.3. Арифметическое декодирование расширенного (24,12,8) кода Голея.
- •2.3. Двоичные коды Рида-Маллера
- •2.3.1. Булевы полиномы и рм коды
- •2.3.2. Конечные геометрии и мажоритарное декодирование.
- •Часть 3 двоичные циклические коды и коды бчх
- •3.1. Двоичные циклические коды.
- •3.1.1. Порождающий и проверочный полиномы.
- •3.1.2. Порождающий многочлен
- •3.1.3. Кодирование и декодирование двоичных циклических кодов.
- •3.1.4. Проверочный полином.
- •3.1.5. Укороченные циклические коды и crc коды
- •3.2. Общий алгоритм декодирования циклических кодов
- •3.1.5 Пакеты ошибок
- •3.2.1. Арифметика gf(q)
- •3.3. Двоичные коды бчх
- •3.4. Полиномиальные коды
- •3.5. Декодирование двоичных бчх кодов
- •2. Евклидов алгоритм (еа)
- •3.5.1. Общий метод декодирования для бчх кодов
- •3.5.2. Алгоритм Берлекемпа-Мэсси (вма)
- •3.5.3. Декодер pgz
- •3.5.4. Евклидов алгоритм (еа)
- •3.5.5. Метод Ченя и исправление ошибок
- •3.5.6. Исправление стираний и ошибок
- •3.6. Распределение весов и границы вероятности ошибки
- •3.6.1. Оценка вероятности ошибки
- •Часть 4 недвоичные бчх коды -коды рида-соломона
- •4.1. Коды pc как полиномиальные коды
- •4.2. От двоичных кодов бчх к pc кодам
- •4.3. Декодирование кодов pc
- •4.3.1. Комментарий к алгоритмам декодирования
- •4.3.2. Исправление ошибок и стираний
- •4.4. Распределение весов
- •Глоссарий
- •Литература
3.2.1. Арифметика gf(q)
Множество А образует поле, если для любых элементов ai, aj, ak А определены операции сложения «+» и умножения «» и выполняются следующие аксиомы:
Сложение «+»
(А1) Замкнутость ai + aj А
(А2) Ассоциативность (ai + aj) + ak = ai + (aj + ak)
(A3) Существование единственного нулевого элемента 0 А, такого, что 0 + ai = ai
(А4) Обратный элемент (-ai) А такой, что (-а) + ai = 0
(А5) Коммутативность ai + aj = aj + ai
Умножение «х»
(M1) Замкнутость ai aj А
(М2) Ассоциативность (ai aj) ak = ai (aj ak)
(М3) Существование единственного единичного элемента 1 А такого, что 1 ai = ai
(М4) Обратный элемент
(М5) Коммутативность ai aj = aj ai
Сложение и умножение
(D) Дистрибутивность ai (aj + ak) = ai aj + ai ak
Из перечисленных выше аксиом следуют важнейшие правила арифметики, справедливые в любом поле:
Для 0,1, а, b, с А имеет место
1. а + 0 = 0 а = 0
2. a, b 0 a b 0
3. a = 0 и a b = = b= 0
4. -(a b) = (-a) b = a -b)
5. a 0 и a b = a c/
Отметим также, что операции сложения и умножения имеют обратные операции: вычитания и деления, причем, вычитание определяется как а — b = а + (—b), а деление - как а b = а b-1.
Неподготовленного читателя может смутить и даже испугать столь громоздкое аксиоматическое построение алгебраической структуры, называемой полем. Однако, эти страхи должны довольно быстро исчезнуть после того, как мы убедимся, что множество рациональных чисел образует поле. Напомним, что множество рациональных чисел содержит все положительные и отрицательные целые числа (включая ноль), а также все числа вида п/т, где п, т - целые и т 0. Операциями сложения, вычитания, умножения и деления в поле рациональных чисел являются обычные арифметические операции, которые мы изучали еще в начальной школе. Нетрудно заметить, что эти операции удовлетворяют всем перечисленным выше аксиомам.
Расширениями поля рациональных чисел являются поля вещественных и комплексных чисел, они также содержат бесконечное множество элементов.
Так как в каналах связи множество передаваемых сигналов всегда конечно, основой теории кодирования являются поля, содержащие конечное число элементов (поля Галуа). Простейшим полем Галуа является двоичное поле GF(2), операции в котором (сложение и умножение) выполняются по правилам арифметики «по модулю 2». Нетрудно заметить, что правила арифметики по mod 2 удовлетворяют всем вышеперечисленным аксиомам (с учетом того, что обратным элементом к «1» по сложению и умножению является сама "1").
В высшей алгебре доказывается, что число элементов q конечного поля GF(q) всегда удовлетворяет условию
q = pm, (2.55)
где р – простое число, а т = 1,2, …
Другими словами, если число элементов q некоторого множества не удовлетворяет условию (2.55), то для этого множества невозможно определить операции сложения и умножения, удовлетворяющие аксиомам поля. Так, например, невозможно образовать поле с числом элементов, равным 6, 10, 12, 14 и т.д., но можно построить поле, с числом элементов, равным 2, 3, 4, 5, 7, 8, 9, 11 и т.д.
Таблица 2.4. Операции сложения и умножения в GF(5).
+ |
0 |
1 |
2 |
3 |
4 |
|
|
0 |
1 |
2 |
3 |
4 |
0 |
0 |
1 |
2 |
3 |
4 |
|
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
2 |
3 |
4 |
0 |
|
1 |
0 |
1 |
2 |
3 |
4 |
2 |
2 |
3 |
4 |
0 |
1 |
|
2 |
0 |
2 |
4 |
1 |
3 |
3 |
3 |
4 |
0 |
1 |
2 |
|
3 |
0 |
3 |
1 |
4 |
2 |
4 |
4 |
0 |
1 |
2 |
3 |
|
4 |
0 |
4 |
3 |
2 |
1 |
Наиболее просто операции сложения и умножения выполняются в поле с числом элементов, равным простому числу (т = 1). Здесь они определены как операции сложения и умножения по mod р, а сами элементы образуют последовательность чисел
{0,1,2,...,р-1}. (2.56)
Для примера, в таблице 2.4. приведены результаты сложения и умножения всех пар элементов ai, bj{0,1,2,3,4}, т.е сумма ai + bj ( mod 5) и произведение ai bj ( mod 5). Непосредственной проверкой можно убедиться в выполнении аксиом (Al) - (А5), (Ml) - (М5) и (D) для операций сложения и умножения. Таким образом, множество элементов a {0,1,2,3,4} с операциями сложения и умножения, заданными табл. 2.4, образуют поле GF(5).
В теории полей Галуа доказывается следующая, очень важная теорема.
Теорема 2.5.1. В поле Галуа GF(p1), содержащем q элементов, существует по крайней мере один примитивный элемент такой, что каждый ненулевой элемент из GF(p) может быть представлен как некоторая степень .
Так, в поле GF(5) существует два примитивных элемента = 2 и 2 = 3, так как 20 = 1, 21 = 2, 22 = 4, 23( mod 5) = 3 и 30 = 1, 31 = 3, 32( mod 5) = 4, 33( mod 5) = 2.
Сложнее обстоит дело с построением полей Галуа GF(pm), где т > 1 (простое число р называется характеристикой поля).
Так как теория кодирования имеет дело, в основном, с полями характеристики 2, рассмотрим основные методы построения полей GF(2m).
Прежде всего, заметим, что каждый элемент GF(2m) можно представить в виде слова длины m над GF(2) или многочлена с двоичными коэффициентами, степень которого меньше, чем m. Так, например, любой элемент a GF(23) можно записать как двоичное слово a2a1a0 или как многочлен a2X2 + a1X + a0, где {a2, a1, a0} {0,1}. В этом случае, сложение элементов из GF(2m) выполняется по правилу сложения представляющих их многочленов в поле GF(2). Если при этом умножение элементов мы определим как умножение представляющих эти элементы многочленов по модулю некоторого заданного неприводимого многочлена над GF(2) степени m, то тем самым мы построим поле Галуа GF(2m).
Неприводимым называется многочлен, неразложимый на произведение многочленов с коэффициентами из GF(2).
Проводя аналогию с полем GF(p), можно сказать, что роль элементов GF(p) в поле GF(2m) играют двоичные слова или многочлены степени, меньшей m, а роль простого числа р - неприводимый многочлен степени m.
Для реализации операций в поле GF(2m) в качестве неприводимого многочлена степени m удобнее выбирать примитивный многочлен.
Примитивным многочленом р(Х) над GF(2) называется неприводимый многочлен степени m, такой, что в поле GF(2m), построенного по его модулю, элемент поля X является примитивным.
В теории чисел и теории полей примитивный многочлен над конечным полем GF(p) —это минимальный многочлен примитивного элемента поля GF(pm) для положительного целого числа m.
Примитивный многочлен является неприводимым.
В теории полей Галуа доказывается следующая теорема.
Теорема 2.5.2. Для каждого поля Галуа существуют примитивные многочлены всех степеней.
Таблица 2.5. Представление поля GF(24) (Таблица антилогарифмов).
В качестве примера приведем поле Галуа GF(24) (табл. 2.5). Для его построения был выбран примитивный многочлен четвертой степени X4 + X + 1. Из таблицы видно, что степени примитивного элемента = X образуют все множество ненулевых элементов GF(24). В таком представлении операция умножения в поле GF(24) реализуется очень просто. Пусть, например, нам требуется найти произведение элементов (1011) (1010). Из таблицы 2.5 находим, что элемент (1011) можно представить в виде 7, а (1010) в виде 9. Из этого следует, что (1011) (1010) = 7 9 = (7+9) mod 15 = 1. Используя табл. 2.5 еще раз, определяем, что 1 соответствует элементу (0010). Окончательно получаем (1011) (1010) = (0010).
При программной реализации умножения в полях Галуа, как правило, используют так называемые таблицы логарифмов и антилогарифмов. Таблица антилогарифмов ноля GF(24) совпадает с табл. 2.5. Используя эту таблицу, очень легко определить двоичный эквивалент элемента i по заданному i, 0 i 14. Таблица логарифмов (табл. 2.6), наоборот, позволяет быстро найти степень примитивного элемента по его двоичному представлению.
Так как операция деления в полях Галуа эквивалентна умножению на обратный элемент, весьма полезной при вычислениях оказывается таблица обратных элементов (табл. 2.7), которая для поля GF(24) строится следующим образом. Пусть, например, нам нужно найти обратный элемент к (1010). По таблице логарифмов находим, что (1010) соответствует 9. Обратным элементом к 9 является 15-9 = 6. По таблице антилогарифмов находим, что двоичным эквивалентом 6 является (1100). Таким образом, окончательно получаем (1010)-1 = (1100).
Таблица 2.6. Таблица логарифмов элементов GF(24).
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
0 |
1 |
4 |
2 |
8 |
5 |
10 |
3 |
14 |
9 |
7 |
6 |
13 |
11 |
12 |
При небольших значениях т для ускорения умножения при программной реализации можно построить таблицу умножений элементов поля GF(2m) размерности 2т 2т. После того, как все необходимые арифметические таблицы построены, можно заменить двоичные обозначения на целочисленные.
Реализация операции сложения (и совпадающей с ней операции вычитания) элементов в поле GF(2m) не представляет проблем. Сложение элементов из GF(2m) сводится к покомпонентному сложению их двоичных представлений по модулю 2. Так, например, в поле GF(24) (0011) + (1101) = (1110).
Таблица 2.7. Таблица обратных элементов поля GF(24).
i |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
|
0001 |
1001 |
1110 |
1101 |
1011 |
0111 |
0110 |
1111 |
0010 |
1100 |
0101 |
1010 |
0100 |
0011 |
1000 |
С подробным обоснованием построения полей GF(2m) и исследованием их алгебраической структуры читатель может ознакомиться в [5].
В заключение отметим, что при всей кажущейся сложности, использование полей Галуа в теории помехоустойчивого кодирования имеет глубокий математический смысл. Свойства полей Галуа позволяют при построении кодов использовать законы линейной алгебры, справедливые для полей действительных и комплексных чисел. Отличие заключается лишь в том, что арифметические операции необходимо производить по правилам, определенным для данного конечного поля.
Используя методы абстрактной алгебры, можно показать, что в двоичном поле любой многочлен степени m раскладывается над GF(2m). Для данного пособия достаточно ознакомиться с основами вычислений в конечных полях. Серьезным читателям настоятельно рекомендуется изучение абстрактной алгебры по хорошему учебнику.
Использование арифметики GF(2m) в процедурах декодирования позволяет заменить сложные комбинационные схемы практичными процессорными архитектурами, пригодными для решения уравнения (3.8). Ниже приводятся инструменты, необходимые для решения систем уравнений, которые возникают при декодировании циклических кодов.
Важные свойства GF(2m)
Поле Галуа GF(2m) изоморфно (с точностью до знака «+») линейному пространству {0, 1}m. Другими словами, каждому элементу β GF(2m) соответствует единственный m-мерный вектор .
В конечном поле имеется примитивный элемент GF(2m), степени которого порождают все ненулевые элементы поля, т.еЭлемент является корнем неприводимого двоичного полинома р(х), р(α) = 0. Наименьшее положительное целое n, для которого αn = 1, равно 2m-1. Все элементы поля удовлетворяют уравнению βn = 1, n = 2m -1 (Другими словами, все ненулевые элементы поля совпадают с корнями степени n из единицы).
Наименьшее положительное целое z, для которого βz = 1, равно одному из делителей 2m-1. Это число z называют порядком элемента. Примитивными элементами поля являются все такие элементы β = αi, 0 ≤i≤ 2m- 2, для которых i взаимно просто с числом 2m-1.
Неприводимый многочлен называют примитивным, если его корни имеют максимальный порядок, т.е. 2m — 1. Все корни неприводимого многочлена имеют одинаковый порядок. Периодом многочлена называют наименьшее число z, при котором р(х) делит бином xz— 1, z|(2m - 1). Период неприводимого многочлена совпадает с порядком его корней.
Пример 27. Примитивный полином р(х) =х3 + х + 1 порождает поле GF(23). Примитивный элемент поля обозначим α, р(α) = α3+ α + 1 = α + 1+ α + 1 = 0. В таблице показаны три способа представления элементов поля GF(23).
Степень |
Полином |
Вектор |
Степень |
Полином |
Вектор |
- |
0 |
000 |
α 3 |
1+ α |
011 |
1 |
1 |
001 |
α 4 |
α + α 2 |
110 |
α |
α |
010 |
α 5 |
1+ α + α 2 |
111 |
α 2 |
α 2 |
100 |
α 6 |
1+ α 2 |
101 |
Для сложения элементов в GF(2m) наиболее удобно векторное представление. При этом используются поразрядное сложение по модулю два. Однако для умножения в поле наиболее удобно степенное представление. В этом случае умножение сводится к сложению показателей степени элементов по модулю 2m-1. Действительно, так как равенство αn= 1, n= 2m— 1, выполняется для всех элементов поля, то αn+1 = α, αn+2 = α2, и т.д. Таким же способом находим, что α-1= α-1+n= αn-1.
В Примере 27 α-1 = α6. В общем случае, обратный элемент β-1 = αb элемента β = αk определяется из сравнения b + k ≡ 0 mod(2m — 1). Таким образом, b = 2m - 1-k. Наконец, для реализации сложений в степенном представлении полезно использовать равенство р(α) = 0. Например, в Примере 27 имеем α3 = α3 + (α3 + α + 1) = α + 1.
Полиномиальное представление может быть удобным, когда требуется реализация вычислений по модулю некоторого полинома. Примером этого может служить декодирование циклических кодов, где требовалось вычисление xi mod g(x).
Примечание: На самом деле, наиболее естественным представлением элементов конечного поля являются вычеты, т.е. остатки от деления по модулю неприводимого многочлена. В этом случае арифметика поля определяется как сложение, умножение и деление многочленов по неприводимому модулю. Если р(х) примитивный многочлен, то примитивным элементом поля вычетов по модулю р(х) является многочлен х. Иначе, все ненулевые элементы поля могут быть записаны как вычеты xi mod p(x), где i=0,1,...,2m-2.
Дополнительного пояснения требует только операция деления, или точнее, вычисление обратного элемента по неприводимому модулю. Пусть f(x) некоторый (ненулевой) вычет, тогда его обратным элементом называется решение сравнения
Решение этого сравнения можно найти с помощью алгоритма Евклида для вычисления наибольшего общего делителя многочленов или вычисления подходящей дроби для отношения [р(х) /f(x)J.
Таблицы логарифмов и антилогарифмов (степеней)
Удобным способом реализации умножений и сложений в конечном поле является применение таблиц с различной интерпретацией их входного адреса. Эти таблицы позволяют легко переходить от полиномиального к степенному представлению элементов поля и наоборот.
Таблица антилогарифмов (точнее, степеней) A(i) удобна для реализации сложения. Выходом таблицы является двоичный вектор, записанный как целое число, A(i) , соответствующее элементу αi. Таблица логарифмов (или индексов) L(i) удобна для реализации умножения в конечном поле. Эта таблица выдает значение показателя степени примитивного элемента альфа, αL(i) соответствующего двоичному вектору, представленному целым числом i. Справедливо следующее равенство
Рассмотрим пример использования таблиц для реализации арифметики конечного поля.
Пример 28. Рассмотрим поле GF(23) с порождающим многочленом р(α)= α3 + α + 1 и α7 = 1. Таблицы логарифмов и антилогарифмов имеют вид:
Адрес входа i |
Анти - логарифм A(i) |
Логарифм L(i) |
0 |
1 |
-1 |
1 |
2 |
0 |
2 |
4 |
1 |
3 |
3 |
3 |
4 |
6 |
2 |
5 |
7 |
6 |
6 |
5 |
4 |
7 |
0 |
5 |
Примечание. В приведенной таблице имеются две особых точки. Нулевой элемент конечного поля не может быть представлен степенью примитивного элемента. Так что в столбце «Антилогарифм» не должно быть нулевого элемента поля, а в столбце «Логарифм» нулевому элементу поля не должно быть сопоставлено какое-либо число. Таким образом, при работе с этими таблицами требуется специальная проверка на нулевой элемент поля в результате вычислений или в исходных данных.
Рассмотрим вычисление элемента γ = α (α3 + α5)3 в векторной форме. Учитывая свойства поля GF(23), находим последовательно:
С использованием таблиц эти вычисления выглядят следующим образом:
Таблицы логарифмов и степеней (антилогарифмов) используются для реализации арифметики конечного поля и GF(2m). Соответствующие компьютерные программы доступны на ЕСС веб сайте для моделирования алгоритмов кодирования и декодирования кодов БЧХ и PC с арифметикой в GF(2m). Сами алгоритмы рассматриваются в следующих ниже разделах.
Дополнительные свойства GF(2m)
Минимальным многочленом фi(х) элемента αi называется многочлен минимальной степени, корнем которого является данный элемент поля. Следующие свойства минимальных многочленов легко могут быть доказаны. Минимальный многочлен фi(х) элемента αi имеет двоичные коэффициенты и является неприводимым над GF(2) = {0,1}. Более того, корнями этого многочлена являются αi, α2i, α4i, ..., ατ, где τ = 2к и k делит m. Эти элементы называются сопряженными с αi элементами поля. Степени сопряженных элементов поля образуют циклотомический смежный класс
Очевидно, что степень минимального многочлена равна числу элементов (мощности) соответствующего циклотомического смежного класса, т.е.
Циклотомические смежные классы (называемые также циклическими множествами ) обладают свойством расщепления множества вычетов целых чисел Zn по модулю п = 2т - 1. Таким образом, циклотомические смежные классы не пересекаются. Иначе, их пересечение , является пустым множеством, а их объединение равно всему множеству, т.е..
Пример 29. Циклотомическими множествами по модулю 7 являются:
Примитивный элемент α поля GF(2m) (как и все другие) удовлетворяет уравнению αп = 1. Все ненулевые элементы поля являются некоторой степенью примитивного элемента. Таким образом, бином степени п = 2т - 1 имеет следующее разложение на неприводимые двоичные сомножители в двоичном поле:
где М число циклотомических классов, и следующее полное разложение на сомножители первой степени в поле GF(2m)
(3.9)
Важно отметить, что степень минимального многочлена фi(x) равна мощности (т.е. числу элементов множества) циклотомического класса Сi. Отсюда следует способ нахождения всех неприводимых делителей бинома (хп + 1):
Найти все циклотомические классы по модулю 2т - 1.
Для каждого циклотомического класса Cs вычислить минимальный многочлен
(3.10)
Этот способ может быть использован для построения порождающих многочленов циклических кодов.
Пример 30. Рассмотрим поле GF(23), порождаемое примитивным многочленом р(х) = х3 + х + 1. Корни каждого из делителей бинома х7 + 1 = (х+1)() показаны в таблице.
Так (x+α)(x+ α2)(x+ α4) = x3+x+1, а (x+α3)(x+ α6)(x+ α5) = x3+x2 +1 с учётом того, что α6 =1+α2 , α3 =1+α и т.д. (смотри таблицу в примере 27).
Покажите, что
имеет следующие циклотомические классы С0={0}; С1= {1,2,4,8}; C3={3,6,12,9}; C5={5,10}; C7={7,14,13,11}
Примитивные многочлены до степени
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|