1
我有一個實現霍夫曼編碼來編碼文本的代碼。用文本編碼哈夫曼表
鑑於以下文本
abbccc
我的程序產生如下表
a -> 00
b -> 01
c -> 1
所以編碼文本(位陣列)是
000101111
問題是:我需要將表格與文本一起編碼,我不知道這是什麼建議的方法。
我至今認爲:
- 第一個字節是在表
- 鍵值對繼N * N的數目2個字節的鍵值對自己(關鍵一個字節爲值,一個字節)
- 其餘位編碼的文本本身
你可以建議我多些靈活而廉價的(低內存佔用)這個方法?
我很確定DEFLATE算法使用霍夫曼編碼..你可以看看他們是如何做到的。警告文件有點密集且難以理解。我還沒有理解它。從我幾年前回想起來,如果按照特定的步驟構建huffman樹,然後按照某種排序順序存儲KVP,則存在唯一的表示形式,這使得存儲表非常緊湊。 https://www.ietf.org/rfc/rfc1951.txt – ithenoob
如果您希望以最小的可能尺寸存儲表格(您並不真正說出「便宜」的含義),那麼請查閱經典的霍夫曼編碼。對於初學者,https://en.wikipedia.org/wiki/Canonical_Huffman_code。我_think_這是@ithenoob正在討論的內容? – Gene
@Gene:我特別提到了DEFLATE管理它的字典的方式,我相信它也以某種神祕的方式被壓縮。然而,你鏈接到的維基百科頁面似乎更有希望,因爲它更具可讀性,並明確指出將討論緊湊的霍夫曼表示。 – ithenoob