русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Коды Хемминга


Дата добавления: 2015-07-23; просмотров: 646; Нарушение авторских прав


Начнем с нескольких определений и конструкций общего характера.

Если функция кодирования блочного кода E:{0,1}n→{0,1}m линейна, то код называется линейным. В дальнейшем мы рассматриваем только линейные коды. Назовем проверочным такое линейное отображение S:{0,1}m→{0,1}k, что S(β)=0 тогда и только тогда, когда β является кодовым словом. Для произвольного β∈{0,1}m вектор S(β) называется синдромом. Нулевой синдром имеют кодовые слова, и только они.

Предположим, что в зашумленном канале передаваемое кодовое слово E(α) исказилось, к нему добавился вектор ошибок δ, так что на выходе принято слово β=δ⊕E(α). Тогда

S(β)=S(δ⊕E(α))=S(δ)⊕S(E(α))=S(δ).

Для того чтобы правильно декодировать передаваемое сообщение, нужно уметь определять вектор ошибок по его синдрому. Если вектор ошибок определен, то исправить их несложно: E(α)=δ⊕β. Ограничившись случаем одиночных ошибок, можно привести сравнительно несложное построение кода, исправляющего ошибки.

Вектор одиночной ошибки имеет всего одну ненулевую координату, то есть является одним из векторов канонического базиса пространства {0,1}m. Линейный код позволяет исправлять все одиночные ошибки тогда и только тогда, когда синдромы всех векторов из канонического базиса пространства {0,1}m отличны от нуля и друг от друга. Поскольку пространство {0,1}k содержит всего 2k−1 ненулевых векторов, используя проверочное отображение S:{0,1}m→{0,1}k, можно исправлять одиночные ошибки лишь в том случае, когда длины кодовых слов ограничены числом 2k−1, то есть m≤2k−1. Оказывается, что можно построить коды с исправлением ошибок, в которых m=2k−1. В таких кодах их «исправляющие» возможности используются с максимальной эффективностью. К их числу относятся рассматриваемые ниже коды Хемминга.



Перейдем к описанию кода Хемминга. Пусть m=2k−1. Среди m позиций кодового слова k позиций являются контрольными, а n = 2k−k–1 – информационными. Матрица H (размерности k×(2k−1)), задающая проверочное отображение, содержит в качестве столбцов все ненулевые векторы пространства {0,1}k. Порядок столбцов не важен, но технически удобнее считать, что в каждом столбце записан его номер в двоичном формате. Строки матрицы H определяют коэффициенты системы из k однородных линейных уравнений c 2k−1 неизвестными. Множество кодовых слов совпадает с множеством решений этой системы. Выражая последние k неизвестных через первые 2k−k–1, мы получаем уравнения для вычисления контрольных битов. Вектор с нулевым синдромом является кодовым и его декодирование сводится просто к отбрасыванию контрольных битов. Если синдром отличен от нуля, он представляет собой двоичную запись номера позиции, в которой произошла ошибка. В этом случае при декодировании ошибка исправляется. Доля информационных позиций в коде Хемминга составляет

1211212−−=−−−kkkkk

и стремится к 1 с ростом k.

Пример.Рассмотрим случай k=3, m=7, n=4. Проверочное отображение S задается следующей матрицей:

=101010111001101111000H.

Столбцы матрицы представляют собой образы векторов канонического базиса пространства {0,1}7 относительно S. Для произвольного вектора β=(β1234567) синдром S(β)=(σ123) определяется уравнениями

σ14⊕β5⊕β6⊕β7;

σ22⊕β3⊕β6⊕β7;

σ31⊕β3⊕β5⊕β7.

Кодовое слово S(α)=(α1234567) должно удовлетворять системе уравнений

α4⊕α5⊕α6⊕α7=0;

α2⊕α3⊕α6⊕α7=0;

α1⊕α3⊕α5⊕α7=0.

Решив эту систему относительно α5, α6, α7, можно найти уравнения, задающие контрольные биты. Сложив первые два уравнения, получаем

α2⊕α3⊕α4⊕α5=0,

откуда

α52⊕α3⊕α4.

Подставив выражение для α5 в третье уравнение системы, получаем

α71⊕α2⊕α4.

Теперь подставляем выражение для α7 во второе уравнение системы и находим

α61⊕α3⊕α4.􀀀



<== предыдущая лекция | следующая лекция ==>
Блочные двоичные коды | Понятие функции выбора


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.081 сек.