- •Глава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. Распределение весов
- •Глоссарий
- •Литература
1.1.2. Хеммингово расстояние, Хемминговы сферы и корректирующая способность
Рассмотрим двоичный код С, исправляющий ошибки. Если не все из 2п возможных двоичных векторов длины п будут передаваться по каналу связи, то этот код может обладать свойством помехоустойчивости. В действительности, код С является подмножеством w-мерного двоичного векторного пространства V2 = {0, 1}n таким, что элементы этого подмножества максимально удалены друг от друга.
В двоичном пространстве V2 расстояние определяется как число позиций, на которых два вектора не совпадают. Пусть x1=(x1,0, x1,1, …,x1,n-1) и х2=(х2,0 , х2,1,..., x2,n-1) два вектора в V2. Тогда Хеммингово расстояние между векторами х1 и х2, обозначаемое как dH(x1, x2), равно
(1.3)
где через |А| обозначено число элементов в множестве А.
Для заданного кода С минимальное Хеммингово расстояние, dmin, определяется как минимум Хеммингова расстояния по всем возможным парам различных кодовых слов,
(1.4)
Повсюду в пособии обозначение (n, k, dmin) используется для параметров блокового кода длины n, который используется для кодирования сообщений длины k, и имеет минимальное Хеммингово расстояние dmin. Предполагается, что число кодовых слов этого кода равно |С|=2k.
Пример 1. Простейшим примером является код-повторение длины 3. Каждый информационный бит повторяется три раза. Таким образом, сообщение «0» кодируется вектором (000), а сообщение «1», вектором (111). Так как два вектора различаются в трех позициях, Хеммингово расстояние между ними равно 3. На Рисунке 3 показано графическое представление этого кода. Трехмерное двоичное векторное пространство соответствует 23=8 вершинам трехмерного единичного куба. Хеммингово расстояние между кодовыми словами (000) и (111) равно числу вершин, через которые проходит соединяющий их путь. Это эквивалентно числу координат, которые необходимо изменить, чтобы преобразовать (000) в (111) и наоборот. Таким образом, dH= ((000),(111)) = 3. Так как в этом коде только два кодовых слова, то dmin = 3.
Двоичное векторное пространство V2 обычно называют Хемминговым пространством. Пусть v кодовое слово кода С. Хемминговой сферой St(v) радиуса t с центром в точке v является
Рис. 3. (3,1,3) код-повторение в трехмерном векторном пространстве.
Рис. 4. Хемминговы сферы радиуса t=1, окружающие кодовые слова (3,1,3) двоичного кода-повторения.
множество векторов (точек) в V2 на расстоянии меньше или равном t от центра v,
(1.5)
Заметим, что число слов (число векторов) в St(v) равно
(1.6)
Пример 2. На Рисунке 4 показаны Хемминговы сферы радиуса t = 1, окружающие кодовые слова (3,1,3) двоичного кода-повторения.
Заметим, что Хемминговы сферы для этого кода не пересекаются, т.е. в пространстве V2 нет векторов (или вершин в единичном трехмерном кубе), принадлежащих одновременно и S1(000), и S1(111). В результате, если изменить любую одну позицию кодового слова v, то получится вектор, который, тем не менее, останется внутри Хемминговой сферы с центром в v. Эта идея является принципиальной для понимания и определения корректирующей способности кода С.
Корректирующей способностью (error correcting capability) t кода С называют наибольший радиус Хемминговой сферы St(v) для всех кодовых слов v C такой, что для любых различных пар vi, vj С соответствующие им Хемминговы сферы не пересекаются, т.е.
(1.7)
Это соответствует более распространенному определению
(1.8)
где [x] обозначена целая часть x, т.е. целое число меньше или равное x.
Заметим, что для определения минимального кодового расстояния произвольного блокового кода С в соответствии с (1.4), необходимо вычислить все 2k(2k — 1) расстояний между различными парами кодовых слов. Это практически невозможно даже для сравнительно коротких кодов, например, с к = 50. Одним из важных преимуществ линейных блоковых кодов является то, что для вычисления dmin достаточно знать только Хемминговы веса 2к — 1 ненулевых кодовых слов.