Циклические коды Хемминга
Циклические коды Хемминга образуют подмножество циклических (n, k) – кодов. Они обладают всеми свойствами кодов Хемминга и еще дополнительными полезными свойствами.
При определении методов построения циклических кодов используются понятия неприводимых и примитивных многочленов.
Определение. Многочлен g(х) степени m называется неприводимым в поле GF(2)={0, 1}, если он не делится ни на какой многочлен с коэффициентами из GF(2) степени меньшей m, но большей нуля.
Определение. Неприводимый многочлен g(х) степени m называется примитивным, если наименьшая степень n, при которой многочлен хn+ 1 делится на g(х) без остатка, равна n=2m-1.
Другими словами, многочлен g(х), степени m называется примитивным, если
делится на g(х) без остатка,
а не делится наg(х) ни для какого значения .
Например, многочлен 1 + х2 + х3 примитивен:
он делит х7 + 1, но не делит xj+1 при j < 7.
Примитивен также многочлен 1 + х3 + х4 :
он делит х15 + 1, но не делит xj+1 при j < 15.
С помощью порождающих многочленов g(х) можно строить порождающие и проверочные матрицы и таблицы синдромов для декодирования.
Утверждение. Для любого целого положительного числа m существует совершенный (n,k)-код Хэмминга, в котором n=2m-1 или k =2m-m-1.
Расширенные коды Хэмминга. Полезное расширение кодов Хэмминга заключается в дополнении кодовых векторов дополнительным двоичным разрядов так, чтобы число единиц в каждом кодовом слове было четным. Такие коды обладают двумя полеными свойствами:
Длины кодов увеличиваются с 2n-1 до 2n, что удобно с точки зрения хранения и передачи информации,
Минимальное расстояние для расширенных кодов Хэмминга равно четырем, а не трем, что позволяет обнаруживать трехкратные ошибки.
Критерии оценки помехоустойчивости.
В качестве численных характеристик помехоустойчивости кода используются:
Помехоустойчивость кода
- собственное количество информации в факте необнаружения ошибки.
Коэффициент обнаружения
,
где M – ожидаемое общее число искаженных кодовых слов,
L - ожидаемое число исправленных кодовых слов,
N – число всех кодовых слов,
рош. – число вероятность появления ошибки,
робн.ош. – вероятность обнаружения и исправления ошибки.
Если R - ожидаемое число неисправленных искаженных кодовых слов, то R=M-L и .
Пусть вероятность искажения одного символа кода равна р.Найдем вероятности передачи без ошибки р(0) и однократной ошибки р(1) при которых гарантируется правильная передача простым кодом Хемминга.
.
(Для расширенного кода Хемминга выявляется и двухкратная ошибка с вероятностью ).
Вероятность ошибочной передачи – все остальное. С учетом того, что при больших n: (по разложению (1-р)n в ряд Тейлора):
Если исправляется одна ошибка, то по теоремам Хемминга можно одновременно обнаружить 2 ошибки. Расширенный код Хемминга позволяет дополнительно обнаружить еще одну ошибку. Вероятность появления необнаруживаемых 3-х и 4-х кратных ошибок
и , где.
При малых значениях вероятности р при вычислении рнеобн.ош. ошибки большей кратности можно не учитывать в силу их малой вероятности.
Определение значности кода.
Первым шагом при построении кода являеся определение значности кода, то есть количества символов n в блоке помехоустойчивого кода и количества символов k исходного файла (информационных символов). Они определяют корректирующие способности кода. При этом каждый блок содержит m проверочных символов.
Для заданного образующего полинома степени m количество добавляемых при кодировании проверочных символов равно m. Коды Хемминга исправляют одиночную ошибку в блоке. Это коды с . Соотношения для параметров кодаn, k и m для них имеют вид:
и .
Отсюда длина блока выбирается из неравенства
n ≤ 2m – 1,
а количество информационных символов в блоке k = n - m.
Коды, удовлетворяющие этому условию являются квазисовершенными. Решить это уравнение относительно n здесь сложно, поэтому определим из него m=n-k:
(*).
Таблица. Соотношения между параметрами помехоустойчивых кодов.
n |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
… |
15 |
16 |
… |
30 |
31 |
32 |
… |
63 |
64 |
… |
127 |
128 |
m |
2 |
2 |
3 |
3 |
3 |
3 |
4 |
4 |
… |
4 |
5 |
… |
5 |
5 |
6 |
… |
6 |
7 |
… |
7 |
8 |
k |
0 |
1 |
1 |
2 |
3 |
4 |
4 |
5 |
… |
11 |
11 |
… |
25 |
26 |
26 |
… |
57 |
57 |
… |
120 |
120 |
Для того чтобы количество информационных символов было максимальным при заданном количестве проверочных символов желательно выбирать общую длину блока n таким образом, чтобы неравенство (*) превратилось в строгое равенство. Коды, удовлетворяющие этому условию являются совершенными.