2013-05-20 3 views
0

Я просто проверяю, где у меня получается упражнение по кодированию Хаффмана. В моем тестовом файле много низкочастотных символов (в основном частота 1) и небольшое количество высокочастотных символов. Я тестирую, что считывается с дерева кодирования; кажется, что char с частотой 19 имеет 6 бит, char с частотой 10 имеет 3 бита, а char с частотой 5 имеет 5 бит. Можно ли ожидать такого рода аномалии или всегда должны быть в правильном порядке?Должно ли сжатие Хаффмана быть в строгом порядке частоты?

+5

Не должны ли символы высокой частоты потреблять меньше бит, а не больше? – Jon

+0

Правильно - это действительно очень большая разница. 19 должно быть довольно много дальше по дереву, чем 10. Должно быть, это связано с тем, как создаются или оканчиваются нелистовые узлы. –

+0

Как правило, это правильно. Все низкочастотные символы имеют большее количество бит. Есть только пара этих типов аномолий в верхней части ... –

ответ

0

У вас есть ошибка в вашей реализации. Возможно иметь широкий диапазон частот с одинаковой длиной бита, но длины бит никогда не должны меняться по отношению к частотам.