- •Введение
- •Элементы теории чисел
- •Модулярная арифметика
- •Алгоритм Евклида для нахождения наибольшего общего делителя
- •Вычисление обратных величин
- •Основные способы нахождения обратных величин
- •Расширенный алгоритм Евклида
- •Китайская теорема об остатках
- •Квадратичные вычеты
- •Вычисления в конечных полях
- •Свойства многочленов в двоичном поле gf(2)
- •Достоинства вычислений в поле Галуа gf(2 n)
- •Кодирование
- •Оптимальное кодирование
- •Обнаружение и исправление ошибок
- •Общие понятия
- •Линейные групповые коды
- •Код Хэмминга
- •Циклические коды
- •Построение и декодирование конкретных циклических кодов
- •Циклические коды, исправляющие две и большее количество ошибок, d0 5
- •Сжатие информации
- •Исключение повторения строк в последующих строках
- •Алгоритм lzw
- •Задания для самостоятельного выполнения
- •Расчетно-графическая работа №1
- •Расчетно-графическая работа №2
- •Список рекомендуемой литературы
- •Рекомендованная литература
-
Циклические коды, исправляющие две и большее количество ошибок, d0 5
Методика построения циклических кодов с d0 5 отличается от методики построения циклических кодов с d0 < 5 только в выборе образующего многочлена. В литературе эти коды известны как БЧХ (первые буквы фамилий Боуз, Чоудхури, Хоквинхем ‑ авторов методики построения циклических кодов с d0 5).
Построение образующего многочлена зависит, в основном, от двух параметров: от длины кодового слова n и от числа исправляемых ошибок . Остальные параметры, участвующие в построении образующего многочлена, в зависимости от заданных n и могут быть определены при помощи таблиц и вспомогательных соотношений, о которых будет сказано ниже.
Для исправления числа ошибок 2 еще не достаточно условия, чтобы между комбинациями кода минимальное кодовое расстояние d0 = 2 + 1, необходимо также чтобы длина кода n удовлетворяла условию
n = 2h 1,
при этом n всегда будет нечетным числом. Величина h определяет выбор числа контрольных символов и связана с и следующим соотношением:
h • = [ log2 (n + 1)]
С другой стороны, число контрольных символов определяется образующим многочленом и равно его степени (к этому вопросу мы еще вернемся). При больших значениях h длина кода n становится очень большой, что вызывает вполне определенные трудности при технической реализации кодирующих и декодирующих устройств. При этом часть информационных разрядов порой остается неиспользованной. В таких случаях для определения h удобно пользоваться выражением
2h - 1 = n • C
где С является одном из сомножителей, на которые разлагается число n.
Соотношения между n, C и h могут быть сведены в следующую таблицу:
Таблица 3.5.2.1 – Соотношения между h, n, C
-
№ п/п
h
n = 2h - 1
C
1
3
7
1
2
4
15
5; 3
3
5
31
1
4
6
63
7; 3; 3
5
7
127
1
6
8
255
17; 5; 3
7
9
511
7; 3; 7
8
10
1023
31; 11; 3
9
11
2047
89; 23
10
12
4095
3; 3 ;5 ; 7; 13
Например при h = 10 длина кодовой комбинации может быть равна и 1023 (С = 1), и 341 (С = 3), и 33 (С = 31), 31 (С = 33), понятно что n не может быть меньше h •. Величина С влияет на выбор порядковых номеров минимальных многочленов, так как индексы первоначально выдранных многочленов умножаются на С.
Построение образующего многочлена P(x) производится при помощи так называемых минимальных многочленов M(x), которые являются простыми неприводимыми многочленами.
Таблица 3.5.2.2 – Минимальные неприводимые многочлены в поле Галуа GF (2)
Степень |
2 |
3 |
4 |
5 |
6 |
7 |
1 3 5 7 9 11 13 15 17 19 21 |
111 |
1011 1101 |
10011 1111 111 11001 |
100101 111101 110111 101111 110111 111011 |
1000011 1010111* 1100111 1001001* 1101 1101101
|
10001001 10001111 10011101 11110111 10111111 11010101 10000011
11001011 11100101 |
Степень |
8 |
9 |
10 |
1 3 5 7 9 11 13 15 17 19 21 23 25 27 |
100011101 101110111* 111110011* 101101001 110111101* 111100111 100101011 111010111* 010011 101100101 110001011* 101100011 100011011* 100111111* |
1000010001 1001011001 1100110001 1010011001* 1100010011 1000101101 1001110111 1101100001 1011011011 1110000101 1000010111* 1111101001 1111100011 1110001111 |
10000001001 10000001111* 10100001101 11111111001 10010101111* 10000110101* 10001101111 10110101011* 11101001101 10111111011 11111101011* 10000011011 10100100011 11101111011* |
Примечание:
Неприводимый многочлен степени m над полем GF (q) называется примитивным, если:
-
его корнем является примитивный элемент поля GF (qm);
-
когда принадлежит показателю qm – 1;
-
когда он не является делителем многочлена xn – 1 при n, меньших, чем qm – 1.
Звездочкой обозначены все непримитивные многочлены.
Образующий многочлен представляет собой произведение нечетных минимальных многочленов и является их наименьшим общим кратным (НОК). Максимальный порядок r определяет номер последнего из выбираемых табличных минимальных многочленов
= 2 - 1.
Порядок многочлена используется при определении числа сомножителей P(x). Например, если = 6, то r = 2 - 1 = 11. Так как для построения P(x) используются только нечетные многочлены, то ими будут: M1(x), M3(x), M5(x), M7(x), M9(x), M11(x), старший из них имеет порядок r. Как видим, число сомножителей P(x) равно 6, т. е. числу исправляемых ошибок. Таким образом, число минимальных многочленов, участвующих в построении образующего многочлена
L = ,
а старшая степень
l = h
(l указывает колонку в столбце минимальных многочленов, из которой обычно выбирается многочлен для построения P(x)).
Степень образующего многочлена, полученного в результате перемножения выбранных минимальных многочленов,
= l • = h •.
В общем виде
P(x) = НОК [M1(x) • M3(x) • . . . • Mr(x)].
Декодирование кодов БЧХ производится по той же методике, что и декодирование циклических кодов с d0 < 5. Однако в связи с тем, что практически все коды БЧХ представлены комбинациями с n 15, могут возникнуть весьма сложные варианты, когда для обнаружения и исправления ошибок необходимо производить большое число циклических сдвигов. В этом случае для облегчения можно комбинацию, полученную после k - кратного сдвига и суммирования с остатком, сдвигать не вправо, а влево на n – k циклических сдвигов. Это целесообразно делать только при k > n/2.