Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sabelnikov_RGR3_2_3_CodingTheory.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
779.45 Кб
Скачать
  1. Коды Хэмминга. Алгоритм декодирования

Алгоритм декодирования по Хэммингу абсолютно идентичен алгоритму кодирования. Матрица преобразования соответствующей размерности умножается на матрицу-столбец кодового слова и каждый элемент полученной матрицы-столбца берётся по модулю 2. Полученная матрица-столбец получила название «матрица синдромов». Легко проверить, что кодовое слово, сформированное в соответствии с алгоритмом, описанным в предыдущем разделе, всегда даёт нулевую матрицу синдромов.

Матрица синдромов становится ненулевой, если в результате ошибки (например, при передаче слова по линии связи с шумами) один из битов исходного слова изменил своё значение. Предположим для примера, что в кодовом слове, полученном в предыдущем разделе, шестой бит изменил своё значение с нуля на единицу (на рисунке обозначено красным цветом). Тогда получим следующую матрицу синдромов.

Заметим, что при однократной ошибке матрица синдромов всегда представляет собой двоичную запись (младший разряд в верхней строке) номера позиции, в которой произошла ошибка. В приведённом примере матрица синдромов (01100) соответствует двоичному числу 00110 или десятичному 6, откуда следует, что ошибка произошла в шестом бите.

  1. Разработанный проект

  1. Проект, разработанный на wpf

Рисунок 1 представляет работу программы в режиме кодирования всего алфавита. На рисунке 2 продемонстрирован режим работы с одним символом.

  1. Режим работы с одним символом

  1. Пример кодирования с исправлениями ошибок

Выберем английский алфавит от 'o' до 'z':

Теперь внесем в каждую строку одиночную ошибку (колонка Hamming Code (Editable)):

В две последние строки было внесено по две ошибки.

Как видим, код Хэмминга отлично справляется с одиночными ошибками. С двойными же есть проблема. Мы можем фиксировать наличие ошибки, но мы не знаем была ли она одиночная или двойная. Но алгоритм всегда пытается исправить одиночные ошибки. Поэтому мы и видим, что буква 'z' декодировалась как 'q'. Такое бывает не всегда. В последней строке при исправлении мы вообще попали на запрещенную комбинацию.

Делаем вывод, что код Хэмминга с определенной вероятностью может диагностировать множественные ошибки, и не умеет их исправлять.

  1. Пример кодирования сообщения

Возьмем алфавит английских символов от 'a' до 'n'. Получили следующие коды Хэмминга:

  1. Пример кодирования

Пусть нам нужно закодировать сообщение "galamaga". Тогда код будем следующим:

Символ

g

a

l

a

m

a

g

a

Код

1100110

0000000

0110011

0000000

0111100

0000000

1100110

0000000

В каждом из передаваемых блоков код Хэмминга допускает одну ошибку, которую он может исправить.

  1. Параметры кода

Для примера, изображенного на рисунке 3, найдем ряд параметров.

Контрольные биты находятся на позициях {1, 2, 4} (нумерация начинается с 1). Всего их 3.

Минимальное кодовое расстояние для полученного кода равняется трем.

Избыточность кода - это отношение числа контрольных битов к числу информационных. В нашем случае она равна 3/7 = 0.43.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]