- •Основные параметры помехоустойчивых кодов.
- •Коды с общей проверкой на чётность и коды с повторениями: их корректирующие способности, описание с помощью матриц, алгоритмы кодирования и декодирования.
- •Итеративные прямоугольные и треугольные коды: их корректирующие способности, описание с помощью матриц, алгоритмы кодирования и декодирования.
- •Группы и их основные свойства. Смежные классы.
- •Поле Галуа. Свойства конечных полей.
- •Расширенное поле Галуа. Вычисления в конечных полях.
- •Неравномерные эффективные коды. Проблема декодирования. Вектор Крафта.
- •Основные информационные характеристики источника сообщений. Коды Шеннона—Фано.
- •Сжатие информации кодами Хаффмана.
- •Алгоритм арифметического кодирования информации, пример.
- •Алгоритм арифметического декодирования информации, пример.
- •Словарные методы кодирования. Метод Зива—Лемпела.
- •17) Общие сведения о линейных кодах.
- •18) Описание линейных блоковых кодов при помощи матриц: формирование проверочной матрицы и порождающей матрицы.
- •19) Декодирование линейных кодов: декодирование методом максимального правдоподобия.
- •20) Декодирование кодов Хэмминга. Понятие синдрома
- •21) Декодирование линейных кодов: мажоритарное декодирование.
- •22) Коды Хэмминга, модификации кодов, формирование.
- •23) Декодирование кодов Хэмминга, области применения данных кодов.
- •24) Описание циклических кодов с помощью матриц.
- •25) Декодирование циклических кодов.
- •26) Описание циклических кодов с помощью полиномов.
- •27) Кодирование информации циклическими кодами.
- •28) Параметры и построение кодов Рида–Маллера.
23) Декодирование кодов Хэмминга, области применения данных кодов.
Пусть u = ( u0 , u1 ,… un ) является кодовым словом, переданным по каналу с
помехами, а r = ( r0 , r1 , ... rn ) - принятой последовательностью, возможно,
отличающейся от переданного кодового слова u. Отличие r от u состоит в том, что
некоторые символы ri принятой последовательности могут отличаться от
соответствующих символов ui переданного кодового слова. Например, u= ( 0 0 0 1 0 0 0
) , а r = ( 0 0 0 0 0 0 0 ) , то есть произошла ошибка в четвертом символе кодового слова,
1 перешла в 0.
Для описания возникающих в канале ошибок используют вектор ошибки, обычно
обозначаемый как e и представляющий собой двоичную последовательность длиной n с
единицами в тех позициях, в которых произошли ошибки.
Так, вектор ошибки e = ( 0 0 0 1 0 0 0 ) означает однократную ошибку в
четвертой позиции (четвертом бите), вектор ошибки e = ( 1 1 0 0 0 0 0 ) - двойную
ошибку в первом и втором битах и т.д.
Тогда при передаче кодового слова u по каналу с ошибками принятая
последовательность r будет иметь вид
r = u + e ,
например: u = ( 0 0 0 1 0 0 0 ),
e = ( 0 0 0 1 0 0 0 ),
r = ( 0 0 0 0 0 0 0 ) .
Приняв вектор r , декодер сначала должен определить, имеются ли в принятой
последовательности ошибки. Если ошибки есть, то он должен выполнить действия по их
исправлению.
Чтобы проверить, является ли принятый вектор кодовым словом, декодер
вычисляет (n-k)-последовательность, определяемую следующим образом :
S = ( S0 , S1 , … , Sn-k-1 ) = r×HT.
При этом r является кодовым словом тогда, и только тогда, когда S = (00..0), и
не является кодовым словом данного кода, если S ≠ 0. Следовательно, S используется для
обнаружения ошибок, ненулевое значение S служит признаком наличия ошибок в
принятой последовательности. Поэтому вектор S называется синдромом принятого
вектора r.
Рассмотрим случай, когда вектор r не является кодовым. Тогда этот вектор
обязательно содержит ошибочные символы. Вектор ошибок e =(e1, e2, .... ,en) содержит
ненулевые символы в тех позициях, в которых вектор u содержит искаженные символы.
Код Хемминга применяется при необходимости исправлять данные на лету. В частности в некоторых прикладных программах в области хранения данных.
24) Описание циклических кодов с помощью матриц.
Циклический код задается порождающим (генераторным) полиномом g(x) степени
r=n-k. Для того чтобы полином был генераторным полиномом циклического
кода, необходимо, чтобы он был делителем полинома вида Xn+1, где n – длина кода.
Напомню, что при делении полиномов действия производятся по правилам арифметики
по модулю два, в которой вычитание равносильно сложению.
Для построения циклического кода необходимо знать разложение полинома Xn+1 на множители.
Если n = 2m-1 , то многочлен Xn+1 представляется как произведение
неприводимых многочленов степени не выше m. Каждый из этих многочленов, а также
их произведения могут быть использованы как порождающие полиномы циклического
кода.