Построение кода и кодового дерева по Фано на примере:
сообщения
вероятности
0,4
0,2
0,1
0,1
0,1
0,05
0,05
Построение кода по кодовому дереву методом Хаффмана на примере:
сообщения
вероятности
0,19
0,16
0,16
0,15
0,12
0,11
0,09
0,02
Дерево строится снизу. Выписываются концевые вершины дерева с их частотами:
Берутся две вершины с самыми маленькими значениями частот и над ними создается вершина с суммой этих частот:
Вершины с самыми маленькими частотами далее при построении дерева не принимаются во внимание, их заменила суммарная вершина, которая теперь становится одной из самых маленьких по частоте из оставшихся вершин. Соединяем эту вершину с другой вершиной с наименьшим значением частоты, строя над ними новую вершину с суммарной частотой.
Далее снова находим пары вершин с меньшими частотами и строим над ними вершины с суммарными частотами:
Ищем среди полученных новых и тех вершин, которые еще не участвовали в построении новых, пары с наименьшими значениями частот, и над ними строим суммарные вершины. При этом каждую левую ветку помечаем нулем, а каждую правую единицей:
Продолжая этот процесс в итоге получаем дерево:
Это кодовое дерево порождает следующий код для заданных сообщений:
сообщения
вероятности
0,19
0,16
0,16
0,15
0,12
0,11
0,09
0,02
Код
Рассмотрим следующий пример.
сообщения
вероятности
0,4
0,15
0,15
0,15
0,15
Построим коды по Фано и по Хаффману и сравним их цены и избыточности: