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

Помогите с методом Хафмана

Lenchik Профи (510), на голосовании 3 недели назад
Лезут козы в грозу в лозу.
Голосование за лучший ответ
** Эгоист ** Знаток (486) 1 месяц назад
Чтобы сжать фразу "Лезут козы в грозу в лозу" с помощью метода Хафмана, следуем нескольким шагам:

Подсчет частоты символов:

Л: 2
е: 1
з: 4
у: 4
т: 1
к: 1
о: 2
ы: 2
в: 2
г: 1
р: 1
с: 1
а: 0
и: 0
й: 0
м: 0
н: 0
п: 0
х: 0
ш: 0
ч: 0
ю: 0
я: 0
(пробел): 5
Создание кодового дерева:

Сначала мы берем два символа с наименьшей частотой и соединяем их, формируя узел дерева.
Процесс повторяется до тех пор, пока не останется один узел, представляющий все символы.
Присвоение кодов:

При прохождении по дереву, левое направление соответствует 0, а правое — 1.
Примерные шаги:
Создаем список частот и сортируем его.
Соединяем два наименьших узла, добавляем их частоту и продолжаем, пока не получится одно дерево.
В результате у нас получится набор бинарных кодов для каждого символа.

Кодирование:
Допустим, после построения дерева, у нас получились такие коды:

Л: 000
е: 11110
з: 01
у: 10
т: 11111
к: 11100
о: 110
ы: 101
в: 100
г: 11101
р: 11100
с: 11111
(пробел): 110
Собираем строку, заменяя каждый символ его кодом.

Декодирование:
Для декодирования мы просто используем полученные коды, чтобы восстановить исходную строку.
LenchikПрофи (510) 1 месяц назад
Спасибо огромное вам
Lenchik, посочувствую тебе, когда ты попытаешься сдать этот высер нейросети. Буквы к и р имеют одинаковый код. Буквы с и т - тоже. И о букве о с пробелом тебе уже написали.
Терр ОнталМудрец (12747) 1 месяц назад
Почему буква о и пробел одинаковый код имеют?
Терр Онтал, патаму что это нейросеть выс рала
Терр Онтал Мудрец (12747) 1 месяц назад
У тебя буква о и пробел одинаковый код имеют
Похожие вопросы