- •Формальное описание[править | править вики-текст]
- •Построение[править | править вики-текст]
- •Примеры кодов[править | править вики-текст] Примитивный двоичный (15,7,5) код[править | править вики-текст]
- •Кодирование[править | править вики-текст]
- •Методы декодирования[править | править вики-текст]
- •Алгоритм Берлекемпа-Мэсси[править | править вики-текст]
- •Евклидов алгоритм[править | править вики-текст]
- •Прямое решение (алгоритм Питерсона — Горенстейна — Цирлера, пгц)[править | править вики-текст]
- •Поиск Ченя[править | править вики-текст]
Евклидов алгоритм[править | править вики-текст]
В
основе этого метода лежит широко
известный алгоритм
Евклида по
нахождению наибольшего общего делителя
двух чисел (НОД), только в данном случае
ищем НОК не двух чисел, а двух полиномов.
Обозначим полином
значений ошибок как
,
где синдромный полином равен
.
Из системы уравнений (*) следует что
.
Задача по сути сводится к тому чтобы
определить
удовлетворяющего
(2) и при этом степени не выше
.
По сути такое решение и будет давать
расширенный алгоритм Евклида, примененный
к многочленам
и
,
где
.
Если на j-ом шаге расширенный алгоритм
Евклида выдает решение
,
такое что
,
то
и
.
При этом найденный полином
дальше
не принимает участия в декодировании(он
ищется только как вспомогательный).
Таким образом будет найден полином
локаторов ошибок
.
Прямое решение (алгоритм Питерсона — Горенстейна — Цирлера, пгц)[править | править вики-текст]
Пусть
БЧХ код над полем
длины
и
с конструктивным расстоянием
задается
порождающим полиномом
,
который имеет среди своих корней
элементы
,
—
целое число (например 0 или 1). Тогда
каждое кодовое слово обладает тем
свойством, что
.
Принятое слово
можно
записать как
,
где
—
полином ошибок. Пусть произошло
ошибок
на позициях
(
максимальное
число исправляемых ошибок), значит
,
а
—
величины ошибок.
Можно
составить
-ый синдром
принятого
слова
:
.
Задача
состоит в нахождений числа ошибок
,
их позиций
и
их значений
при
известных синдромах
.
Предположим,
для начала, что
в
точности равно
.
Запишем
в
виде системы
нелинейных(!) уравнений в
явном виде:
Обозначим
через
локатор
-ой
ошибки, а через
величину ошибки,
.
При этом все
различны,
так как порядок элемента
равен
,
и поэтому при известном
можно
определить
как
.
Составим полином локаторов ошибок:
Корнями
этого полинома являются элементы,
обратные локаторам ошибок. Помножим
обе части этого полинома на
.
Полученное равенство будет справедливо
для
:
Положим
и
подставим в
.
Получится равенство, справедливое для
каждого
и
при всех
:
Таким
образом для каждого
можно
записать свое равенство. Если их
просуммировать по
,
то получится равенство, справедливое
для каждого
:
.
.
Учитывая
и
то, что
(то
есть
меняется
в тех же пределах, что и ранее)
получаем систему
линейных уравнений:
.
Или в матричной форме
,
где
Если
число ошибок и в самом деле равно
,
то система
разрешима,
и можно найти значения коэффициентов
.
Если же число
,
то определительматрицы
системы
будет
равен
.
Это есть признак того, что количество
ошибок меньше
.
Поэтому необходимо составить систему
,
предполагая число ошибок равным
.
Высчитать определитель новой
матрицы
и т. д.,
до тех пор, пока не установим истинное
число ошибок.
Поиск Ченя[править | править вики-текст]
После
того как ключевая
система уравнений
решена,
получаются коэффициенты полинома
локаторов ошибок. Его корни (элементы,
обратные локаторам ошибок) можно найти
простым перебором по всем элементам
поля
.
К ним найти элементы, обратные по
умножению, — это локаторы ошибок
.
Этот процесс легко реализовать аппаратно.
