2012-02-08 2 views
1

Im пытается лучше понять, как работает декодер huffman. У меня есть таблица кодов, но им трудно усердно пытаться понять, как будет работать декодер из-за двусмысленности в двоичной строке.Бедные мужчины Huffman Compression

(им обучение это в стадии подготовки для моего последнего года в универ)

моего стол:

Data Hcode 
0,  0 
1,  1 
2,  10 
3,  11 
17, 100 
18, 101 
19, 110 
29, 111 

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

Я понимаю логику хаффмана в представлении BST и вы следуете пути к данному листу, который путь напоминает код для данного значения между (0-255 (ascii)), но я до сих пор не знаю, как вы можете различать возвращаемые данные: 0,1,0 или данные: 0,17

Действительно ли мне нужно обеспечить применение 2-битных кодов по данным 0 и 1? (00 и 01)

я надеюсь, что ив объяснил лучшее, что я могу XD

Если ваш интересно, как я создал таблицу - вы собирались убить меня, потому что я не логика использования дерева для его генерации. Хотя я отсортировал данные (случайные байты) на частоте - я сгенерировал Hcodes, преобразовывая номер позиции элемента в двоичный (например, почему я назвал это сообщение Бедным Маном Хаффманом).

Большое спасибо за любой совет.

ответ

3

Неправильная таблица кодов. Предполагается, что оферты Хаффмана prefix free. Это необходимо, чтобы впоследствии декодировать их без двусмысленности.

Если вы хотите использовать двоичное дерево для создания кодов, это автоматически обеспечит «префиксную степень помола». См: http://en.wikipedia.org/wiki/Huffman_coding

А теперь я собираюсь убить тебя ...;)

2

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

Смежные вопросы