Коды, исправляющие дефекты
Министерство образования и науки РФ
Федеральное государственное
бюджетное образовательное
Высшего профессионального образования
Математический факультет
Специальность «Компьютерная безопасность»
Курсовая работа на тему:
«Коды, исправляющие дефекты»
Автор:
Мойсеенко С. С.
Научный руководитель:
Семыкина Н. А.
Тверь 2013
Оглавление
Принципы помехоустойчивого
Декодирование помехоустойчивых кодов 4
Способ сравнения. 4
Синдромный способ 4
Мажоритарное декодирование 4
Классификация корректирующих кодов 5
Код с постоянным весом 5
Код с четным числом единиц 6
Код Хэмминга 6
Матричное представление систематических кодов 10
Декодирование циклических кодов 11
Список использованной литературы: 12
Принципы помехоустойчивого кодирования
Помехоустойчивым (корректирующим) кодированием называется кодирование при котором осуществляется обнаружение либо обнаружение и исправление ошибок в принятых кодовых комбинациях.
Возможность помехоустойчивого кодирования осуществляется на основании теоремы, сформулированной Шенноном, согласно ей:
если производительность источника меньше пропускной способности канала связи, то существует по крайней мере одна процедура кодирования и декодирования при которой вероятность ошибочного декодирования сколь угодно мала, если же производительность источника больше пропускной способности канала, то такой процедуры не существует.
Основным принципом
Рисунок 1 - Случаи приема закодированного сообщения
Прием сообщения без ошибок является оптимальным, но он возможен только если канал связи идеальный. В этом случае помехоустойчивое декодирование не требуется.
В реальном канале из-за воздействия
помех происходят ошибки в принимаемых
кодовых комбинациях. Если принимаемая
кодовая комбинация в результате
воздействия помех перешла (трансформировалась)
из одной разрешенной комбинации
в другую, то определить ошибку не возможно,
даже при использовании
Если же передаваемая разрешенная кодовая комбинация, в результате воздействия помех, трансформируется в запрещенную комбинация, то в этом случае существует возможность обнаружить ошибку и исправить ее.
Помехоустойчивое кодирование может осуществляться двумя способами: с обнаружением ошибок либо с исправлением ошибок. Возможность кода обнаруживать или исправлять ошибки определяется кодовым расстоянием.
Если осуществляется кодирование с обнаружением ошибок, то кодовое расстояние должно быть хотя бы на единицу больше чем кратность обнаруживаемых ошибок, если данное условие не выполняется, то одни из ошибок обнаруживаются, а другие нет.
Если осуществляется кодирование с исправлением ошибок, то кодовое расстояние должно быть хотя бы на единицу больше удвоенного значения кратности исправляемых ошибок, если данное условие не выполняется, то одни из ошибок исправляются, а другие нет.
Декодирование помехоустойчивых кодов
Декодирование - это процесс перехода от вторичного отображения сообщения к первичному алфавиту.
Декодирование помехоустойчивых кодов может осуществляться тремя способами: способом сравнения, синдромным и мажоритарным.
Способ сравнения.
Этот способ основан на том, что, принятая кодовая комбинация сравнивается со всеми разрешенными комбинациями, которые заранее известны на приеме. Если принятая комбинация не совпадает ни с одной из разрешенных, выносится решение о принятии запрещенной комбинации. Недостатком данного способа является громоздкость и необходимость большого времени для декодирования в случае применения многоразрядных кодов. Данный способ используется в кодах с обнаружением ошибок.
Синдромный способ
Данный способ основан на вычислении определенным образом контрольного числа —синдрома ошибки. Если синдром ошибки равен нулю, то кодовая комбинация принята верно, если синдром не равен нулю, то комбинация принята не верно. Данный способ может быть использован в кодах с исправлением ошибок, в этом случае синдром указывает не только на наличие ошибки в кодовой комбинации, но и на место положение этой ошибки в кодовой комбинации. Для двоичного кода знание местоположения ошибки достаточно для ее исправления. Это объясняется тем, что любой символ кодовой комбинации может принимать всего два значения и если символ ошибочный, то его необходимо инвертировать.
Мажоритарное декодирование
Этот способ основано на том, что каждый информационный символ кодовой комбинации определяется нескольким линейными выражениями через другие символы кодовой комбинации. Если принята комбинация без ошибок, то все соотношения остаются и все выражения дают одинаковые результаты (единицу или ноль). При ошибке в одном из разрядов эти соотношения нарушаются, в результате чего одни линейные выражения равны нулю, а другие единице. Решение о принятом символе определяется по большинству: если в результате вычислений выражений больше нулей, то принимается решение о принятии нуля, если больше единиц, то принимается решение о приеме единицы. Если, при декодировании, результаты вычисления выражений дают одинаковое число единиц и нулей, то при определении принятого символа приоритет имеет принятый символ, значение которого в данный момент определяется.
Классификация корректирующих кодов
Классификация корректирующих кодов представлена схемой (рисунок 2)
Блочные — это коды, в которых передаваемое сообщение разбивается на блоки и каждому блоку соответствует своя кодовая комбинация (например, в телеграфии каждой букве соответствует своя кодовая комбинация).
Рисунок 2 - Классификация корректирующих кодов
Непрерывные — коды, в которых сообщение не разбивается на блоки, а проверочные символы располагаются между информационными.
Неразделимые — это коды, в кодовых комбинациях которых нельзя выделить проверочные разряды.
Разделимые — это коды, в кодовых комбинациях которых можно указать положение проверочных разрядов, т. е. кодовые комбинации можно разделить на информационную и проверочную части.
Систематические (линейные) — это коды, в которых проверочные символы определяются как линейные комбинации информационных символов, в таких кодах суммирование по модулю два двух разрешенных кодовых комбинаций также дает разрешенную комбинацию. В несистематических кодах эти условия не выполняются.
Код с постоянным весом
Данный код относится к классу
блочных не разделимых кодов. В нем
все разрешенные кодовые
Код с четным числом единиц
Данный код относится к классу блочных, разделимых, систематических кодов. В нем все разрешенные кодовые комбинации имеют четное число единиц. Это достигается введением в кодовую комбинацию одного проверочного символа, который равен единице если количество единиц в информационной комбинации нечетное и нулю, если четное. Например:
При декодировании осуществляется поразрядное суммирование по модулю два всех элементов принятой кодовой комбинации и если результат равен единице, то принята комбинация с ошибкой, если результат равен нулю, то принята разрешенная комбинация. Например:
101101 = 1 + 0 + 1 + 1 + 0 + 1 = 0 — разрешенная комбинация
101111 = 1 + 0 + 1 + 1 + 1 + 1 = 1 — запрещенная комбинация.
Данный код способен обнаруживать как однократные ошибки, так и любые ошибки нечетной кратности, но не способен их исправлять. Данный код также используется в системах передачи информации с обратной связью.
Код Хэмминга
Код Хэмминга относится к классу блочных, разделимых, систематических кодов. Кодовое расстояние данного кода d0=3 или d0=4.
Блочные систематические коды характеризуются разрядностью кодовой комбинации n и количеством информационных разрядов в этой комбинации k остальные разряды являются проверочными (r):
r = n - k.
Данные коды обозначаются как (n,k).
Рассмотрим код Хэмминга (7,4). В данном коде каждая комбинация имеет 7 разрядов, из которых 4 являются информационными,
При кодировании формируется
а1 а2 а3 а4 b1 b2 b3
где аi — информационные символы;
bi — проверочные символы.
В данном коде проверочные элементы bi находятся через линейные комбинации информационных символов ai, причем, для каждого проверочного символа определяется свое правило. Для определения правил запишем таблицу синдромов кода (таблица 1), в которой записываются все возможные синдромы, причем, синдромы имеющие в своем составе одну единицу соответствуют ошибкам в проверочных символах:
- синдром 100 соответствует ошибке в проверочном символе b1;
- синдром 010 соответствует ошибке в проверочном символе b2;
- синдром 001 соответствует ошибке в проверочном символе b3.
Синдромы с числом единиц больше
2 соответствуют ошибкам в
Таблица 1 — Синдромы кода Хэмминга (7;4)
Число синдрома |
Элементы синдрома |
Элементы кодовой комбинации | |||
С1 |
С2 |
С3 | |||
|
1 |
0 |
0 |
1 |
b3 | |
|
2 |
0 |
1 |
0 |
b2 | |
|
3 |
0 |
1 |
1 |
a1 | |
|
4 |
1 |
0 |
0 |
b1 | |
|
5 |
1 |
0 |
1 |
a2 | |
|
6 |
1 |
1 |
0 |
a3 | |
|
7 |
1 |
1 |
1 |
a4 | |
Определим правило формирования элемента b3. Как следует из таблицы, ошибке в данном символе соответствует единица в младшем разряде синдрома С4. Поэтому, из таблицы, необходимо отобрать те элементы аi у которых, при возникновении ошибки, появляется единица в младшем разряде. Наличие единиц в младшем разряде, кроме b3,соответствует элементам a1, a2 и a4. Просуммировав эти информационные элементы получим правило формирования проверочного символа:
b3 = a1 + a2 + a4
Аналогично определяем правила для b2 и b1:
b2 = a1 + a3 + a4
b1 = a2 + a3 + a4
Пример 1: необходимо сформировать кодовую комбинацию кода Хэмминга (7,4) соответствующую информационным символам 1101.
В соответствии с проверочной матрицей определяем bi:
b1 = 1 + 0 + 1 = 0; b2 = 1 + 0 + 1=1; b3 = 1 + 1 + 1 = 1.
Добавляем проверочные символы к информационным и получаем кодовую комбинацию:
Biр = 1101001.
В теории циклических кодов все преобразования кодовых комбинаций производятся в виде математических операций над полиномами (степенными функциями). Поэтому двоичные комбинации преобразуют в полиномы согласно выражения:
Аi(х) = аn-1xn-1 + аn-2xn-2 +…+ а0x0
где an-1, … коэффициенты полинома принимающие значения 0 или 1. Например, комбинации 1001011 соответствует полином
Аi(х) = 1*x6 + 0*x5 + 0*x4 + 1*x3 + 0*x2 + 1*x+1*x0 = x6 + x3 + x+1.
При формировании кодовых комбинаций над полиномами производят операции сложения, вычитания, умножения и деления. Операции умножения и деления производят по арифметическим правилам, сложение заменяется суммированием по модулю два, а вычитание заменяется суммированием.
Разрешенные кодовые комбинации циклических кодов обладают тем свойством, что все они делятся без остатка на образующий или порождающий полином G(х). Порождающий полином вычисляется с применением ЭВМ. В приложении приведена таблица синдромов.
Этапы формирования разрешенной кодовой комбинации разделимого циклического кода Biр(х).
1. Информационная кодовая комбинация Ai преобразуется из двоичной формы в полиномиальную (Ai(x)).
2. Полином Ai(x) умножается на хr,
Ai(x)*xr
где r количество проверочных разрядов:
r = n — k.
3. Вычисляется остаток от деления R(x) полученного произведения на порождающий полином:
R(x) = Ai(x)*xr/G(x).
4. Остаток от деления (проверочные разряды) прибавляется к информационным разрядам:
Biр(x) = Ai(x)*xr + R(x).
5. Кодовая комбинация Bip(x) преобразуется из полиномиальной формы в двоичную (Bip).
Пример 2. Необходимо сформировать кодовую комбинацию циклического кода (7,4) с порождающим полиномом G(x)=х3+х+1, соответствующую информационной комбинации 0110.
1. Преобразуем комбинацию в
Ai = 0110 = х2 + х = Ai(x).
2. Находим количество
r = n – k = 7 – 4 =3
Ai(x)*xr = (х2 + х)* x3 = х5 + х4
3. Определяем остаток от деления
R(x) = Ai(x)*xr/G(x)
4. Прибавляем остаток от деления к информационным разрядам и переводим в двоичную систему счисления:
Biр(x) = Ai(x)*xr+ R(x) = х5 + х4 + 1= 0110001.
5. Преобразуем кодовую
Biр(x) = х5 + х4 + 1 = 0110001 = Biр
Как видно из комбинации четыре старших
разряда соответствуют
Формирование разрешенной кодовой комбинации неразделимого циклического кода.
Формирование данных комбинаций осуществляется умножением информационной комбинации на порождающий полином:
Biр(x) = Ai(x)*G(x).
Причем умножение можно
Пример 3: необходимо сформировать кодовую комбинацию неразделимого циклического кода используя данные примера 2, т. е. G(x) = х3+х+1, Ai(x) = 0110, код (7,4).
1. Переводим комбинацию из
Ai = 0110 = х2+х = Ai(x)
2. Осуществляем умножение Ai(x)*
3. Переводим кодовую комбинацию из полиномиальной форы в двоичную:
Bip(x) = х5+х4+х3+х = 0111010 = Bip
В этой комбинации невозможно выделить информационную и проверочную части.
Матричное представление систематических кодов
Систематические коды, рассмотренные выше (код Хэмминга и разделимый циклический код) удобно представить в виде матриц. Рассмотрим, как это осуществляется.
Поскольку систематические коды обладают тем свойством, что сумма двух разрешенных комбинаций по модулю два дают также разрешенную комбинацию, то для формирования комбинаций таких кодов используют производящую матрицу Gn,k. С помощью производящей матрицы можно получить любую кодовую комбинацию кода путем суммирования по модулю два строк матрицы в различных комбинациях. Для получения данной матрицы в нее заносятся исходные комбинации, которые полностью определяют систематический код. Исходные комбинации определяются исходя из условий:
1) все исходные комбинации должны быть различны;
2) нулевая комбинация не должна входить в число исходных комбинаций;
3) каждая исходная комбинация должна иметь вес не менее кодового расстояния;
4) между любыми двумя исходными комбинациями расстояние Хэмминга должно быть не меньше кодового расстояния.
Производящая матрица имеет вид:
Производящая подматрица имеет k строк и n столбцов. Она образована двумя подматрицами: информационной (включает элементы аij) и проверочной (включает элементы bij). Информационная матрица имеет размеры k x k, а проверочная — r x k.
В качестве информационной подматрицы удобно брать единичную матрицу Ekk:
Проверочная подматрица Gr,k строится путем подбора различных r-разрядных комбинаций, удовлетворяющих следующим правилам:
1) в каждой строке подматрицы количество единиц должно быть не менее d0-1;
2) сумма по модулю два двух любых строк должна иметь не менее d0-2 единицы;
Полученная таким образом
Декодирование циклических кодов
При декодировании таких кодов (разделимых и неразделимых) используется Синдромный способ. Вычисление синдрома осуществляется в три этапа:
1. принятая комбинация Bip’ преобразуется их двоичной формы в полиномиальную (Bip(x));
2. осуществляется деление Bip(x) на порождающий полином G(x) в результате чего определяется синдром ошибки C(x) (остаток от деления);
3. синдром ошибки преобразуется из полиномиальной формы в двоичную;
4. По проверочной матрице или
таблице синдромов
5. Ошибочный разряд в Bip’(x) инвертируется;
6. Исправленная комбинация
делением принятой кодовой комбинации Biр’(x) на порождающий полином G(x), который заранее известен на приеме. Остаток от деления и является синдромом ошибки С(х).
Список использованной литературы:
- Блейхут Р. «Теория и практика кодов, контролирующих ошибки». — М.: Мир, 1986.
- Мак-Вильямс Ф. Дж., Слоэн Н. Дж. А. «Теория кодов, исправляющих ошибки». М.: Радио и связь, 1979.
- Морелос-Сарагоса Р. «Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение»— М.: Техносфера, 2006.
- http://ru.wikibooks.org/wiki/%
D0%9F%D0%BE%D0%BC%D0%B5%D1%85% D0%BE%D1%83%D1%81%D1%82%D0%BE% D0%B9%D1%87%D0%B8%D0%B2%D0%BE% D0%B5_%D0%BA%D0%BE%D0%B4%D0% B8%D1%80%D0%BE%D0%B2%D0%B0%D0% BD%D0%B8%D0%B5 - http://www.studfiles.ru/dir/
cat32/subj1320/file13732/ view140202/page5.html - https://ru.wikipedia.org/wiki/
%D0%9E%D0%B1%D0%BD%D0%B0%D1% 80%D1%83%D0%B6%D0%B5%D0%BD%D0% B8%D0%B5_%D0%B8_%D0%B8%D1%81% D0%BF%D1%80%D0%B0%D0%B2%D0%BB% D0%B5%D0%BD%D0%B8%D0%B5_%D0% BE%D1%88%D0%B8%D0%B1%D0%BE%D0% BA

- Коекуренция: содержание, формы, механизм и результаты
- Кожа и ее производные
- Кожаная обувь
- Кожній редакційно-видавничій організації підібрати таку конфігурацію КВС
- Кожухотрубний теплообмінник
- Кожухотрубний теплообмінник
- Кожухотрубный одноходовой теплообменный аппарат с линзовым компенсатором на корпусе
- Кодификация современного Российского законодательства
- Кодификация Сперанского
- Кодификация Юстиниана
- Кодификация Юстиниана
- Кодовый замок на pic
- Кодовый замок на микроконтроллере
- Кодоимпульсный аналого-цифровой преобразователь