Код Хаффмана Этапы кодирования 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 бит