Программа/апплет для создания дерева Хаффмана с заданными частотами

Мне дали алфавит с его частотами, например:

e: 17,4

n: 9,78

j: 0,27

и так далее. На каждую букву алфавита. Мой вопрос:

Есть ли какая-нибудь программа/апплет, который генерирует дерево Хаффмана с этими заданными частотами? Единственные генераторы, которые я нашел, используют текст в качестве входных данных.

Может быть, у кого-то из вас есть идея! Большое спасибо!


person Cortex    schedule 08.01.2015    source источник
comment
Что означает 17,4?   -  person Mark Adler    schedule 09.01.2015
comment
Эти значения являются относительными частотами букв. Если у вас есть текст из 1000 слов, буква е будет встречаться в этом тексте 174 раза. Моя проблема в том, что есть только программы, которые сканируют текст и потом делают подсчет частоты письма. Но мне уже дали эти значения...   -  person Cortex    schedule 09.01.2015
comment
Ах, так запятая должна быть десятичной точкой здесь. Запятая поначалу сбивала меня с толку, заставляя задуматься, что означают числа 17 и 4.   -  person Mark Adler    schedule 09.01.2015


Ответы (1)


Если у вас есть исходный код, который берет буквы, вычисляет их частоту, а затем применяет алгоритм Хаффмана, то вы можете просто удалить часть, которая вычисляет частоту, и использовать алгоритм Хаффмана непосредственно на частотах.

В противном случае вы можете написать алгоритм Хаффмана самостоятельно. Это один из самых простых и элегантных алгоритмов, поэтому каждый должен реализовать его самостоятельно хотя бы раз. Вы сортируете частоты и выбираете две самые низкие. Эти два символа соединяются как первая ветвь дерева. Повторно вставьте сумму частот в отсортированный список. Повторяйте, пока все символы не станут частью дерева.

person Mark Adler    schedule 09.01.2015