[英]Decoding algorithm/implementation using Huffman tree
從一個如下所示的文本文件開始:
a: 0
b: 100
c: 101
d: 11
0 0 100 100 11 101
所以這會解碼: aabbdc
我可以使用什么解碼算法構建一個霍夫曼樹然后用它來解碼消息? 示例代碼也將受到高度贊賞!
這就是我的想法:
然后,我可以再次閱讀每一位並讓它在樹中移動。 當它撞到一個空間時,我會在它到達的葉子處返回角色?
輸入中沒有/不應該有任何空格。 你應該得到像0010010011101
這樣的東西。
要創建樹,對於每個字符,從根開始,對於每個位,如果它是0
則向左移動,如果是1
則向右移動(在需要時創建節點)。 當您到達某個字符的末尾時,將我們所在節點的值設置為該字符。
然后,從樹中的根開始查看輸入 - 執行與上面相同的操作,但是,而不是創建節點,只需在到達葉子時停止,在該節點輸出值並返回到根。
例:
a = 0
- 只為根創建一個左子項。
.
/
a
b = 100
- 向右(對於1
),然后向左(對於0
),然后再向左(對於0
)。
.
/ \
a .
/
.
/
b
c = 101
- 向右,然后向左,然后向右。
.
/ \
a .
/
.
/ \
b c
d = 11
- 向右走,然后向右走。
.
/ \
a .
/ \
. d
/ \
b c
處理輸入00100
......
從根開始。
我們得到0
,所以左轉。
我們得到一個葉子這是值是a
,所以其輸出並返回到根。
我們得到0
,所以左轉。
我們得到一個葉子這是值是a
,所以其輸出並返回到根。
我們得到1
,所以走吧。
我們得到0
,所以左轉。
我們得到0
,所以左轉。
我們得到一個值為b
的葉子,所以輸出它並返回到根。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.