2012-12-10 81 views
1

我已經閱讀了一篇關於互聯網的文章,並且知道從根進行解碼的自然方式,但我想用查找表更快地進行解碼。霍夫曼代碼與查找表

看完後,我仍然無法獲得積分。

例如:

 
input:"abcdaabaaabaaa" 
code data 
0  a 
10  b 
110 c 
111 d 

文章說,由於可變長度,它採取有點 最大碼長串的確定長度,並用它作爲指標。

 
output:"010110111001000010000" 
Index Index(binary) Code Bits required 
0  000    a  1 
1  001    a  1 
2  010    a  1 
3  011    a  1 
4  100    b  2 
5  101    b  2 
6  110    c  3 
7  111    d  3 

我的問題是:

  1. 這是什麼意思due to variable length, it determine the length by taking a bit of string of max code length?如何確定長度?

  2. 如何生成查找表以及如何使用它?背後的算法是什麼?

回答

4

對於您的示例,最大代碼長度爲3位。因此,您從流(010)中獲取前3位並使用它來索引表。這給出了代碼'a'和位= 1。從輸入流中消耗1位,輸出代碼並繼續。第二次轉身,你會得到(101),其索引爲'b'和2位等。

要建立表格,使其大到1 < < max_code_length,並填寫詳細信息,就好像你正在將索引解碼爲霍夫曼碼。如果你看看你的例子,所有從'0'開始的索引都是a,那麼從'10'開始的索引是b,依此類推。

+0

Thx!它清晰明瞭! –