Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2Diskretnaya_matematika_-_2_semestr.doc
Скачиваний:
48
Добавлен:
26.09.2019
Размер:
5.82 Mб
Скачать

19(36). Оптимальное кодирование Хаффмана. Решение задачи о построении кодов с минимальной избыточностью для двоичного кодирования.

Def: коды, определяемые схемой , наз кодами с минимальной избыточностью или оптимальными кодами Хаффмана.

Очевидно, что коды с минимальной избыточностью дают в среднем минимальное увеличение длины слов при соответственном кодировании. Поэтому интересна задача о построении кодов с минимальной избыточностью Решим эту задачу для двоичного кодирования, когда алфавит В содержит 2 символа. В силу следствия из теоремы Макмиллана существует алфавитное кодирование со свойством префикса, дающее коды с минимальной избыточностью. При построении кодов с минимальной избыточностью можно ограничиться рассмотрением префиксных кодов. Префиксный код удобно задавать с помощью занумерованного ориентированного дерева с корнем. В котором из каждой вершины выходит не более, чем 2 дуги. В каждую вершину, кроме корня, входит по 1 дуге. Каждой дуге дерева приписывается 0 или 1. Дугам, выходящим из одной вершины, приписываются разные символы (0, 1). Такие деревья будем называть кодовыми. Каждой вершине V сопоставляют слово из символов, приписан дугам, составляющим путь Р(V). Если вершинам V1 и V2 приписаны двоичные слова и и является префиксом слова , то путь из корня дерева в V2 проходит через вершину V1. Значит слова приписан концевыми вершинам кодового дерева образуют префиксный код. И наоборот, всякому префиксному коду соответствует множество концевых вершин некоторого кодового дерева.

Свойства оптимальных префиксных кодов.

Будем считать, что символы a1,a2,…,ar алфавита сообщений А занумерованы в порядке убывания вероятности их появления. Таким образом

  1. В оптимальном коде длины li элементарных кодов не убывают.

  2. Существует оптимальный код, в котором двум наименее вероятн символам ar-1 и ar соответствуют элементарные коды одинаковой длины, различающихся лишь в последнем разряде.

Предположим, что источник сообщений S выдает сообщения в алфавите А = {a1,a2,…,ar} и для вероятностей р12,…,рr появление символов a1,a2,…,ar в сообщениях справедливо соотношение .

Рассмотрим источник S1, полученный из S отождествлением символов ar-1 и ar . Он выдает символы a1,a2,…,ar-2 с прежними вероятностями р12,…,рr-2 , а новый символ а’ (склеенный) с вероятностью р’= рr-1 + рr , такой источник будем называть редуцированным. Предположим, что для редуцированного источника имеется некоторый код { ,…, , } по нему построим код для источника S следующим образом: для символов a1,a2,…,ar-2 сохраним прежние коды ,…, . А в качестве и возьмем соответственно слова 0 и 1. Очевидно, что если код для редуцированного источника S1 – префиксный, то построен код и для исходного источника, тоже префиксный.

(36)Теорема о редукции.

Если префиксный код { ,…, , } для редуцированного источника S1 является оптимальным, то и префиксный код { ,…, , 0, 1} для исходного источника S, построенный указанным способом, также является оптимальным.

Алгоритм построения оптимальных кодов.

Сначала производится свертывание искомого кода в соответствии с правилами перехода от источника S к редуцированному источнику S1. В процессе свертывания один за другим, получаются все более простые (короткие) коды. И в конце концов код из однобуквенных элементарных кодов. Это означает преобразование набора вероятностей до тех пор, пока не получится набор вероятностей (из 2 чисел), для которого оптимальный код находится тривиально. Затем найденный код развертывается в соответствии с теоремой о редукции. В последовательность оптимальных кодов, которой заканчивается искомый код. Этот алгоритм реализуется с помощью процедуры Хаффмана.

Пусть вероятности в распределении р= р12,…,рr расположены в порядке убывания, т.е . Исключим из р вероятности рr-1 и рr , а их сумму р= рr-1 + рr вставим в оставшийся набор так, чтобы в получившемся новом наборе вероятности не возрастали. Повторяем эту процедуру пока не получим набор из 2 вероятностей. Для этого набора оптимальным является код, в котором букве алфавита А ставится в соответствие 0 или 1. Из полученного на некотором шаге оптимального кода S1 , в соответствии с теоремой о редукции, можно перейти к расширенному оптимальному коду S с мощностью на единицу больше мощности кода S1 и т.д. Получим искомый оптимальный код.