Волокащук К.
Знаток
(317)
1 год назад
Для построения дерева Хаффмана сначала нужно определить частоту каждой буквы в фразе "МАМА МЫЛА РАМУ". Затем мы будем объединять буквы с наименьшей частотой, постепенно строя дерево. В конечном итоге, каждая буква будет представлена уникальным кодом, а дерево Хаффмана будет готово.
Давайте начнем с подсчета частот:
A: 5 раз
М: 4 раза
Л: 1 раз
У: 1 раз
Ы: 1 раз
Теперь давайте построим дерево Хаффмана:
Создаем узлы для каждой буквы и их частот:
Узел (У, 1)
Узел (Л, 1)
Узел (Ы, 1)
Узел (М, 4)
Узел (А, 5)
Сливаем узлы с наименьшими частотами:
Сливаем (У, 1) и (Л, 1) -> (УЛ, 2)
Сливаем (Ы, 1) и (М, 4) -> (ЫМ, 5)
Сливаем (А, 5) и (УЛ, 2) -> (АУЛ, 7)
Теперь у нас есть следующие узлы:
АУЛ (7)
ЫМ (5)
Сливаем оставшиеся узлы:
Сливаем (АУЛ, 7) и (ЫМ, 5) -> (АУЛЫМ, 12)
Дерево Хаффмана готово:
scss
Copy code
АУЛЫМ (12)
/ \
АУЛ (7) ЫМ (5)
/ \
А (5) УЛ (2)
/ \
У (1) Л (1)
Теперь каждая буква имеет свой уникальный код в дереве Хаффмана:
А: 0
У: 10
Л: 110
Ы: 1110
М: 1111
Это дерево Хаффмана позволяет нам закодировать фразу "МАМА МЫЛА РАМУ" следующим образом:
yaml
Copy code
11110 0 11110 1111 110 0 1111 10 0
Заметьте, что коды Хаффмана минимизируют среднюю длину битовой последовательности для данной фразы.