logo
discrete_math1

39. Коды с минимальной избыточностью (коды Хаффмана), метод построения.

Пусть р1, р2,…, рr– частоты (вероятности), с которыми буквы алфавитавстречаются в исходных сообщениях. Частоты неотрицательны и удовлетворяют равенству.

Определение. Избыточностью схемы алфавитного кодирования Σ с длинами кодовых словl1,l2,…,lr при заданных частотах р1, р2,…, рrназывается число.

Избыточность схемы согласно определению равна .

Пример 1. При заданных частотах р1= 0.4, р2= 0.25, р3= 0.2, р4= 0.15 сравнить избыточность двух схем Σ1и Σ2, где

Заметим, что Σ1– равномерная схема, а Σ2– префиксная, поэтому обе эти схемы однозначно декодируемы. В схеме Σ1длины кодовых словl1 =l2 =l3 =l4= 2, следовательно, её избыточность равна.

В схеме Σ2длины кодовых словl1 = 1,l2 = 2,l3 =l4= 3, поэтому её избыточность равна.

Пример 2. Для набора частот р= 0.4, р= 0.25, р= 0.2, р= 0.1, р= 0.05 требуется построить суффиксный код Хафмана с исходным алфавитоми кодирующим алфавитом.

0.4

0.4

0.4

0.6

0.25

0.25

0.35

0.4

0.2

0.2

0.25

0.1

0.15

0.05

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

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

Около каждой концевой вершины дерева указана частота, а в скобках - соответствующее ей кодовое слово кода Хафмана. В итоге получаем префиксную схему Σпкода Хафмана

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

Избыточность построенного кода равна