Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Понятие о кодировании.doc
Скачиваний:
1
Добавлен:
20.11.2019
Размер:
218.62 Кб
Скачать

Формирование оптимальных кодов

№ сообщения

Вероятность

Группы

Подгруппы

Оптимальные коды

1-го уровня

2-го уровня

1

0,3

I

I

11

2

0,2

II

10

3

0,15

II

I

I

011

4

0,15

II

010

5

0,1

II

I

001

6

0,1

II

000

Во втором столбце даны вероятности появления символов, в третьем, четвертом, пятом — разбиение па группы и подгруппы, в шестом – кодовые комбинации, которые строятся так: все символы разбиваются на две группы, чтобы суммарные вероятности в каждой группе были примерно равны.

В нашем примере в первую группу попали два первых символа, во вторую – все остальные. Первой группе присваивается символ 1 в первом слева разряде, второй – 0. Далее процесс повторяется: первая группа разбивается на две подгруппы примерно с одинаковыми суммарными вероятностями и т. д. То же самое делается со второй группой. Процесс деления заканчивается, когда в каждой подгруппе остается по одному символу. Графически этот процесс можно изобразить в виде ветвящегося дерева (графа), представленного на рисунке.

Рисунок 4.1 Дерево построения оптимального кода

4.4 Корректирующие коды

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

В простейшем случае такой код получается добавлением к кодовой комбинации единицы или нуля с тем, чтобы сумма всех единиц была четной. Нечетность суммы будет обозначать наличие ошибки. Поясним этот прием на примере кода Бодо в таблице 4.3. Такой код позволяет обнаружить одиночную ошибку, но не в состоянии ее локализовать и исправить.

Таблица 4.3

Примеры кодов Бодо и дополнительного кода Бодо

А

Б

В

Г

Д

Код Бодо

10000

00110

01101

01010

11110

Дополнительный код Бодо

100001

001100

011011

010100

111100

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

Пусть для передачи информации требуется двоичных знаков, тогда общее число комбинаций . Каждый из таких кодов отличается один от другого хотя бы одним знаком. Дополним код еще одним знаком, а число полезных кодовых комбинаций оставим неизменным, тогда , и можно так подобрать кодовые комбинации, что они будут отличаться двумя знаками. При этом будет использована только половина всех возможных комбинаций от , вторая половина образует запрещенные комбинации: любое появление одиночной ошибки превращает комбинацию в запрещенную, и тем самым ошибка обнаруживается. Дополним теперь код таким количеством знаков, которое даст возможность двум кодовым комбинациям отличаться тремя знаками при неизменном числе . Такой код позволит не только обнаружить, но и исправить одиночную ошибку. Действительно, если случи-лась одиночная ошибка в какой-то комбинации, то эта комбинация от других будет отличаться на два знака, а от своей – на один, и ее легко исправить.

Определим общее число дополнительных знаков, необходимых для обнаружения и исправления одиночных ошибок. Пусть из общего числа позиций сигнала для передачи полезной информации используется , которое будем считать фиксированным. Остальные используются в качестве проверочных. Символы, которые ставятся на проверочных позициях, определяются при кодировании проверкой на четность каждой из групп информационных символов. При этом на каждой проверочной позиции при кодировании ставится 0 или 1, смотря по тому, какая сумма единиц – четная или нечетная получается при каждой из проверок на четность. Сигнал кодируется так, чтобы в результате каждой из проверок получалось четное число.

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

Пусть принята кодовая комбинация с ошибкой или без нее. Произведем последовательно проверок. После каждой проверки запишем 0, если на проверяемых позициях не обнаружено ошибки (сумма единиц четная). Запись справа налево полученной последовательности единиц и нулей дает двоичное число, называемое проверочным. Потребуем, чтобы это число давало номер позиции, на которой произошла ошибка. Отсутствию ошибки будет соответствовать проверочное число, составленное их нулей. Проверочное число должно описывать событий. Следовательно, число определяется на основе неравенства , и поскольку , то . Это соотношение позволяет определить минимальное при заданном числе знаков передаваемой полезной информации . Например, при общее число разрядов в сообщении составит , то есть потребуется число дополнительных разрядов

Для некоторых значений и значения приведены в таблице 4.4.

Таблица 4.4