2015-04-03 164 views
0

我遇到了像霍夫曼樹和我需要解碼的一串數據。如何解碼此代碼?

所以我的問題是:如何解碼這個字符串使用霍夫曼樹?

+0

你是如何轉換爲二進制?還有,這棵樹在B和O之後繼續嗎?像,_ABCDE ...和MNOPQL ... – ElderBug 2015-04-03 14:24:51

+0

然後它是一棵破碎的樹。哈夫曼樹不應該有「空」葉子,這是浪費比特,因爲它意味着一些代碼可能更短,並且哈夫曼樹是最優的,因此它不是霍夫曼樹。但它仍然是一個前綴代碼,所以如果必須的話,您仍然可以使用它。 – harold 2015-04-03 14:29:58

+0

您擁有的二進制字符串無法使用此樹進行分析。樹不完整,或者轉換不好。我仍然不知道這個轉換是如何完成的。 – ElderBug 2015-04-03 14:33:14

回答

1

圖像中的樹應該是繼續的。在B出現C,D ...之後,O出現P,Q ...這意味着C編碼爲01110,D編碼爲011110,P爲11110 ...

知道該字符串包含'the'和'是',整個字符串很可能由'the'開頭。

有了這棵樹「的」編碼111111110 0111111110 0111110.

眼看,很容易推導出十進制編碼,因爲它正好完美匹配這一點。 「111111110 0111111110 0111110」是8x1 + 0 + 0 + 8x1 + 0 + 0 + 5x1 + 0.總之,80080050.數字表示序列1,而0表示0。這也意味着10是不明確的,但是好吧,只有兩種可能性。

現在你可以解碼其餘的。