Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите, пожалуйста, с информатикой! Не понимаю, как строить дерево Хаффмана

Fumant 1377 Ученик (39), закрыт 1 год назад
Постройте дерево Хаффмана для одной из следующих фраз: МАМА МЫЛА РАМУ
Лучший ответ
Владимир Втюрин Высший разум (104873) 1 год назад
Вот образец:В нашем случае:
M - 4
A - 4
Пробел - 3
Ы - 1
Л - 1
Р - 1
У - 1
Остальные ответы
Волокащук К. Знаток (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
Заметьте, что коды Хаффмана минимизируют среднюю длину битовой последовательности для данной фразы.
Волокащук К.Знаток (317) 1 год назад
Если я правильно понял
Елена Мудрец (18354) 1 год назад
Rama замечательный маргарин был несколько лет назад
Похожие вопросы