2012-02-08 85 views
1

我试图更好地理解哈夫曼解码器如何工作。我得到了一个代码表,但我很难试图了解解码器是如何工作的,因为二进制字符串中含糊不清。穷人哈夫曼压缩

(IM学习这种在准备为我在大学的最后一年)

我的表:

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

如果我有一个像010011霍夫曼代码串,我可以返回数据的许多不同的组合因此如何我可以歧视吗?

我明白BST表示中的huffman逻辑,并且遵循给定叶子的路径,该路径类似于(0-255(ascii))之间给定值的代码,但我仍然不知道如何区分返回数据:0,1,0或数据:0,17

我真的必须强制执行数据0和1上的2位代码吗? (00和01)

我希望香港专业教育学院解释尽我所能XD

如果你想知道如何生成的表 - 你会杀了我,因为我没有使用树逻辑来生成它。虽然我按频率排序了数据(随机字节) - 我通过将元素位置编号转换为二进制来生成H代码(为什么我把这个帖子称为Poor Mans Huffman)。

很多感谢您的任何建议。

回答

2

不仅是码表错误,代码的长度也是错误的。如果您有两个一位代码,您已经用完了所有代码空间,并且没有其他代码。你所展示的不仅仅是一个霍夫曼代码,也不是一个前缀代码 - 它实际上不是一个代码。