Информация, язык, общество. Измерение информации. Энтропия и её свойства. Определение информационных потерь в каналах связи. Передача информации по дискретным каналам связи. Код Хэминга, страница 8

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

Методика построения кодов следующая:

Пусть есть алфавит А, содержащий буквы а1, а2, …, аn, вероятности появления которых р1, р2,…, рn. Буквы алфавита располагаем в порядке убывания их вероятностей  . Берем две последние буквы     и объединяем их в одну букву b. Получаем новый алфавит А1

а1, а2, …, аn-2   b

p1, р2,…, рn-2    pn-1 + pn

Алфавит А1 называют сжатым, полученным из алфавита А путем однократного сжатия.

Буквы алфавита А1 располагаем в порядке убывания их вероятностей. Затем проводим процедуру сжатия, получаем алфавит А2. Продолжаем процедуру сжатия до тех пор, пока у нас не останется 2 буквы.

Буква

а1

а2

а3

а4

а5

а6

А

Вероятность

0,4     0

0,2     10

0,2     111

0,1     1101

0,05   11001

0,05   11000

Сжатые алфавиты

А1

0,4   0

0,2   10

0,2   111

0,1   1101

0,1   1100

А2

0,4   0

0,2   10

0,2   111

0,2   110

А3

0,4   0

0,4   11

0,2   10

А4

0,6   (1)

0,4   (0)

Процедура кодирования

Две буквы последнего алфавита кодируем 1 и 0. Затем кодируется предыдущий алфавит. Процесс кодирования закончен. Чтобы определить эффективность, надо посчитать среднее число символов на алфавит.

Кодирование алфавита по методу Хафмана не является однозначно определенной процедурой. Можно получать разные коды Хафмана.

Чтобы посмотреть изменение кода Хафмана, рассмотрим пример другой кодировки:

Буква

а1

а2

а3

а4

а5

а6

А

Вероятность

0,4     11

0,2     01

0,2     00

0,1     100

0,05   101

0,05   1010

Сжатые алфавиты

А1

0,4   11

0,2   01

0,2   00

0,1   101

0,1   100

А2

0,4   11

0,2   10

0,2   01

0,2   00

А3

0,4   0

0,4   11

0,2   10

А4

0,6   (1)

0,4   (0)

Если посчитать , то оно не изменилось ,т.е. каким образом кодировать роли не играет.

Процедура декодирования кодов Хафмана является однозначной.

Используя методику Хафмана, можно строить оптимальные коды, если для кодирования используется m элементарных сигналов. При построении таких кодов используется процедура сжатия, при которой сливаются каждый раз m букв алфавита. Последовательность сжатия приводит к алфавиту из m букв.

Число букв исходного алфавита n должно быть представляемо  n = m + k *(m -1), k – целое число. Этого условия всегда можно достичь, если ввести в исходный алфавит фиктивные буквы, вероятность которых равна нулю.

Дан алфавит из 6 букв с вероятностями. Построить троичный код Хафмана 0, 1, 2.

Требуемое число букв:

n = 3 + k * (3 - 1),

k = 1     n = 5

k = 2     n = 7

не хватает одной буквы а7 с вероятностью равной нулю

Буква

а1

а2

а3

а4

а5

а6

а7

А

Вероятность

0       0,4

2       0,2

10     0,2

11     0,1

120   0,05

121   0,05

122   0

С ж а т и е

А1

0      0,4

2      0,2

10    0,2

11    0,1

12    0,1

А2

0,4   (0)

0,4   (1)

0,2   (2)

Подсчитаем энтропию

m – количество символов

Существует еще одна методика


(7)

 

1

 

1

0

 
Схема получения кода Хафмана с помощью кодового дерева


1

0

 
Дан алфавит. Располагаем буквы в порядке убывания вероятностей

1

0

 
 


0,28

 
а1         0,5