Код Хаффмана

advertisement
Код Хаффмана
Этапы кодирования
1. Символы входного алфавита образуют список свободных
узлов. Каждый лист имеет вес, который может быть равен
количеству вхождений символа в сжимаемое сообщение.
2. Выбираются два свободных узла дерева с наименьшими
весами.
3. Создается их родитель с весом, равным их суммарному весу.
4. Родитель добавляется в список свободных узлов, а два его
потомка удаляются из этого списка.
5. Одной дуге, выходящей из родителя, ставится в соответствие
бит 1, другой — бит 0.
6. Шаги, начиная со второго, повторяются до тех пор, пока в
списке свободных узлов не останется только один свободный
узел. Он и будет считаться корнем дерева.
Закодируем сообщение:
Запишем в порядке
убывания частоты:
4
4
2
1
4
4
2
2
1
1
1
1
1
4
Повторяем шаги:
2
4
2
4
4
2
4
2
2
Финальное дерево:
14
Правая ветвь – «1»
Левая ветвь – «0»
0
0
0
0
1
1
1
1
0
1
0
1
Вычисляем элементы:
14
Начиная с корня дерева,
вычисляем код
элемента:
Ы – 0000
Л – 0001
_ – 001
М – 01
А – 10
Р – 110
У – 111
0
0
0
0
1
1
1
1
0
1
0
1
Вычисляем элементы:
Информационный объем закодированного сообщения:
Ы – 0000
Л – 0001
_ – 001
М – 01
А – 10
Р – 110
У – 111
4 бита * 1 шт. = 4 бита
4 бита * 1 шт. = 4 бита
3 бита * 2 шт. = 6 бит
2 бита * 4 шт. = 8 бит
2 бита * 4 шт. = 8 бит
3 бита * 1 шт. = 3 бита
3 бита * 1 шт. = 3 бита
Сумма: 36 бит
Download