Готовлюсь к информатике, дерево и коды постоянно путаю, особенно когда частоты одинаковые, подскажите с чего начать разбор
Главное частоты сначала посчитать и отсортировать
Я сначала руками на бумаге несколько раз строил от самых редких, потом уже смотрел как программа шаги показывает, так быстрее запоминается порядок объединения
Если в слове много одинаковых букв, то самые частые получают короткие коды и сразу видно экономию, а редкие уходят в длинные ветки, проверяй итоговую длину бит после кодирования
Если в слове много одинаковых букв, то самые частые получают короткие коды и сразу видно экономию, а редкие уходят в длинные ветки, проверяй итоговую длину бит после кодирования
На практике удобно брать простое слово типа абракадабра и проходить все четыре этапа: частоты, склейку узлов, таблицу кодов и поток бит. Когда доходишь до сравнения с исходной длиной в битах, сразу ясно зачем всё это нужно. Потом можно взять любое другое и проверить декодирование обратно
Ещё полезно параллельно смотреть чем отличается от Шеннона-Фано. Там делят сверху вниз пополам, а здесь снизу вверх от редких. Из-за этого Хаффман почти всегда короче получается. Если готовишься к заданию с условием Фано, то префиксность как раз отсюда и идёт, ни один код не начало другого, поэтому поток читается однозначно без разделителей
сам разбирался перед экзаменом, долго тупил с построением дерева и сравнением кодов. Нашёл тренажёр где всё по шагам рисуется прямо в браузере, вводишь строку и смотришь частоты, склейку узлов кнопками вперёд-назад, таблицу кодов и сколько бит выходит после сжатия. Потом ещё декодирование проверяешь. Особенно помогло когда сравнил с Шенноном-Фано и посмотрел готовый код на питоне. Пользуюсь до сих пор если нужно быстро проверить свой разбор https://delenienanol.ru/encoding/huffman.html же разобраны типовые задания и все нюансы с порядком при равных частотах, так что руками уже увереннее стал строить
Спасибо мужики, теперь понятно с чего начинать и на что смотреть







