Опубликован: 11.04.2007 | Уровень: специалист | Доступ: платный
Лекция 9:

Математическая модель системы связи

< Лекция 8 || Лекция 9: 123 || Лекция 10 >
Аннотация: Рассматриваются такие классы кодов, как коды с исправлением и обнаружением ошибок. Хорошее математическое обоснование материала лекции. Описываются последовательные коды и их применение на практике. Матричное кодирование позволяет использовать меньший объем памяти при кодировании информации. Практические задания помогут лучше разобраться в сложном материале лекции

Коды делятся на два больших класса. Коды с исправлением ошибок имеют целью восстановить с вероятностью, близкой к единице, посланное сообщение. Коды с обнаружением ошибок имеют целью выявить с вероятностью, близкой к единице, наличие ошибок.

Простой код с обнаружением ошибок основан на схеме проверки четности, применимой к сообщениям a_1\ldots a_m любой фиксированной длины m. Схема кодирования определяется следующими формулами: E(a_1\ldots a_m)=a_1\ldots a_ma_{m+1},

a_{m+1}=\begin{cases}0,&\text{если $\sum^m_{i=1}a_i$ --- четная;}\\
1,&\text{если $\sum^m_{i=1}a_i$ --- нечетная.}
\end{cases}
Таким образом, \sum^{m+1}_{i=1}a_i должна быть четной.

Соответствующая схема декодирования тривиальна:

D(a_1\ldots a_ma_{m+1})=
\begin{cases}a_1\ldots a_m,&\text{если $\sum^{m+1}_{i=1}a_i$ --- четна;}\\
         \hbox{\it \<ошибка\>},&\text{если $\sum^{m+1}_{i=1}a_i$ --- нечетна.}
\end{cases}
Разумеется, что четность \sum^{m+1}_{i=1}a_i не гарантирует безошибочной передачи.

Пример. Проверка четности при m=2 реализуется следующим кодом (функцией E ): 00\rightarrow000, 01\rightarrow011, 10\rightarrow101, 11\rightarrow110. В двоичном симметричном канале доля неверно принятых сообщений для этого кода (хотя бы с одной ошибкой) равна q^3+3pq^2+3p^2q (три, две или одна ошибка соответственно). Из них незамеченными окажутся только ошибки точно в двух битах, не изменяющие четности. Вероятность таких ошибок 3pq^2. Вероятность ошибочной передачи сообщения из двух бит равна 2pq+q^2. При малых q верно, что 3pq^2\ll2pq+q^2.

Рассмотрим (m,3m) -код с тройным повторением. Коды с повторениями очень неэффективны, но полезны в качестве теоретического примера кодов, исправляющих ошибки. Любое сообщение разбивается на блоки длиной m каждое и каждый блок передается трижды - это определяет функцию E. Функция D определяется следующим образом. Принятая строка разбивается на блоки длиной 3m. Бит с номером i (1\le i\le m) в декодированном блоке получается из анализа битов с номерами i, i+m, i+2m в полученном блоке: берется тот бит из трех, который встречается не менее двух раз. Вероятность того, что бит в данной позиции будет принят трижды правильно равна p^3. Вероятность одной ошибки в тройке равна 3p^2q. Поэтому вероятность правильного приема одного бита равна p^3+3p^2q. Аналогичным образом получается, что вероятность приема ошибочного бита равна q^3+3pq^2.

Пример. Предположим q=0.1. Тогда вероятность ошибки при передачи одного бита - 0.028, те. этот код снижает вероятность ошибки с 10% до 2.8%. Подобным образом организованная передача с пятикратным повторением даст вероятность ошибки на бит q^5+5pq^4+10p^2q^3=0.00856=0.856%, т.е. менее 1%. В результате вероятность правильной передачи строки длиной 10 возрастет с 0.9^{10}\approx35% до 0.972^{10}\approx75\% при тройных повторениях и до 0.99144^{10}\approx92% при пятикратных повторениях.

Тройное повторение обеспечивает исправление одной ошибки в каждой позиции за счет трехкратного увеличения времени передачи.

Рассмотрим (2048,2313) -код, используемый при записи данных на магнитофонную ленту компьютерами Apple II. К каждому байту исходных данных прибавляется бит четности и, кроме того, после каждых таких расширенных битом четности 256 байт добавляется специальный байт, также расширенный битом четности. Этот специальный байт, который называют контрольной суммой (check sum), есть результат применения поразрядной логической операции "исключающее ИЛИ" (XOR) к 256 предшествующим расширенным байтам. Этот код способен как обнаруживать ошибки нечетной кратности в каждом из отдельных байт, так и исправлять до 8 ошибок в блоке длиной 256 байт. Исправление ошибок основано на том, что если в одном из бит одного из байт 256 байтового блока произойдет сбой, обнаруживаемый проверкой четности, то этот же сбой проявится и в том, что результат операции "исключающее ИЛИ" над всеми соответствующими битами блока не будет соответствовать соответствующему биту контрольной суммы. Сбойный бит однозначно определяется пересечением сбойных колонки байта и строки бита контрольной суммы. На рис. 8.1 изображена схема участка ленты, содержащего ровно 9 ошибок в позициях, обозначенных p_1, p_2, \ldots, p_9. Расширенный байт контрольной суммы обозначен CS, а бит паритета (в данном случае четности) - PB (parity bit). Ошибка в позиции p_1 может быть исправлена. Ошибки в позициях p_4, p_5, p_6, p_7 можно обнаружить, но не исправить. Ошибки в позициях p_2, p_3, p_8, p_9 невозможно даже обнаружить.


Рис. 8.1.

Приведенные ранее примеры простейших кодов принадлежат к классу блочных. По определению, блочный код заменяет каждый блок из m символов более длинным блоком из n символов. Следовательно, (m,n) -коды являются блочными. Существуют также древовидные или последовательные коды, в которых значение очередного контрольного символа зависит от всего предшествующего фрагмента сообщения. Работа с древовидным шумозащитным кодом имеет сходство с работой с арифметическим кодом для сжатия информации.

Расстоянием (Хэмминга) между двоичными словами длины n называется количество позиций, в которых эти слова различаются. Это одно из ключевых понятий теории кодирования. Если обозначить двоичные слова как a=a_1\ldots a_n и b=b_1\ldots b_n, то расстояние между ними обозначается d(a,b).

Весом двоичного слова a=a_1\ldots a_n называется количество единиц в нем. Обозначение w(a). Можно сказать, что w(a)=\sum^n_{i=1}a_i.

< Лекция 8 || Лекция 9: 123 || Лекция 10 >
Евгений Плескач
Евгений Плескач
Беларусь, Минск
Xxxx Xxxx
Xxxx Xxxx
Россия