Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник 310.docx
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
1.08 Mб
Скачать

Эффективное кодирование

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

Код Шеннона-Фано строится следующим образом:

1) буквы алфавита вписываются в таблицу в порядке убывания вероятностей;

2) разделяются на две группы, чтобы суммы вероятностей в каждой были одинаковы;

3) у всех букв верхней половины первым символом пишется 1, у всех букв нижней – 0;

4) процесс повторяется до тех пор, пока в каждой подгруппе останется по одной букве.

В качестве примера рассмотрим алфавит из 8 букв (табл. 1).

Вычислим энтропию:

.

Среднее число символов на букву

.

При обычном кодировании без учета статистических связей требуется три разряда.

Если равенства вероятностей при определении границы нет, то однозначность в построении кода нарушается.

Методика Хаффмена ликвидирует эту неопределенность.

Таблица 1

Буквы

Вероятность

Кодовые

комбинации

Ступень разбиения

Z1

1/2

1

Z2

1/4

0

1

I

Z3

1/8

0

0

1

II

Z4

1/16

0

0

0

1

III

Z5

1/32

0

0

0

0

1

IV

Z6

1/64

0

0

0

0

0

1

V

Z7

1/128

0

0

0

0

0

0

1

VI

Z8

1/128

0

0

0

0

0

0

0

VII

Помехоустойчивое кодирование

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

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

Всего может быть 2k различных входных последовательностей и 2n выходных. 2n-2k последовательностей определяют запрещенные кодовые комбинации.

Рассмотрим, например, обнаруживающую способность кода, каждая комбинация которого содержит всего один избыточный символ (n=k+1). Общее число выходных последовательностей 2к+1, то есть вдвое больше входных.

При кодировании каждой последовательности из k символов добавляется один символ (0 или 1) такой, чтобы число единиц в кодовой комбинации было четным.

Примером кода не только обнаруживающего, но и исправляющего одиночные ошибки является код Хэмминга. Пусть имеется код, содержащий m информационных и k контрольных разрядов. Запись на k позиций определяется при проверке на четность каждой из проверяемых k групп информационных символов. Пусть проведено k проверок. Если результат свидетельствует об отсутствии ошибки, запишем 0, если есть ошибки, то запишем 1. Запись полученной последовательности ‑ двоичное, кодированное число, указывающее номер позиции, где произошла ошибка, т.е. при m=4 и k=3 может быть определена ошибка в каждом из (m+k) разрядов, т.е. в семи передаваемых разрядах. Позиции 1, 2, 4, 8 удобно использовать в качестве контрольных. Первое проверочное уравнение включает позиции, номера которых содержат 1 в младшем разряде, т.е. ( -содержимое 1-го разряда чисел 1, 3, 5, 7, 9...).

Второе уравнение включает позиции, которые имеют 1 во втором разряде, т.е. .

Третье уравнение по аналогии можно представить в виде

Аналогично можно составить и последующие уравнения. При m=4, k=3 пример кодирования 16 чисел приведен в табл. 2.

Таблица 2

Разряды двоичного числа

1

k1

х1

2

k2

х2

3

m1

х3

4

k3

х4

5

m2

х5

6

m3

х6

7

m4

х7

Число

0

0

0

0

0

0

0

0

1

1

0

1

0

0

1

1

0

1

0

1

0

1

0

2

1

0

0

0

0

1

1

3

1

0

0

1

1

0

0

4

0

1

0

0

1

0

1

5

1

1

0

0

1

1

0

6

0

0

0

1

1

1

1

7

1

1

1

0

0

0

0

8

0

0

1

1

0

0

1

9

1

0

1

1

0

1

0

10

0

1

1

0

0

1

1

11

0

1

1

1

1

0

0

12

1

0

1

0

1

0

1

13

0

0

1

0

1

1

0

14

1

1

1

1

1

1

1

15

Используя уравнения

,

,

,

определим значения для ячеек . Число в десятичной форме записи определяет номер разряда, где произошла ошибка.

Пример. Пусть при передаче 12 (0111100) произошло искажение информации в разряде 5, т.е. получено 0111000. Найдем разряд, в котором произошла ошибка с помощью метода Хэмминга. Из формулы имеем . Аналогично для имеем , и для имеем . Контрольное число 101 в десятичном виде определяет разряд 5, в котором произошел сбой.

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