題目:有一個字符串:cabcedeacacdeddaaaba,問題:
(1)采用霍夫曼編碼畫出編碼的過程,並寫出各字符的編碼
(2)根據求得的編碼,求得各編碼需要的總位數
(3)求出整個字符串總編碼長度,並計算出字符串位數在編碼前與編碼后的比值
解答:
(1)各字符出現頻率統計如下表所示。
符號 | 出現次數 | 出現頻率 |
---|---|---|
a | 7 | 0.35 |
b | 2 | 0.1 |
c | 4 | 0.2 |
d | 4 | 0.2 |
e | 3 | 0.15 |
編碼過程如下圖所示:
各字符編碼如下表所示:
符號 | 編碼(碼字) |
---|---|
a | 11 |
b | 100 |
c | 00 |
d | 01 |
e | 101 |
(2)由(1)可進一步知道字符編碼的碼長和需要的位數
符號 | 符號出現次數 | 概率 | 編碼(碼字) | 碼長 | 需要的位數 |
---|---|---|---|---|---|
a | 7 | 0.35 | 11 | 2 | 14 |
b | 2 | 0.1 | 100 | 3 | 6 |
c | 4 | 0.2 | 00 | 2 | 8 |
d | 4 | 0.2 | 01 | 2 | 8 |
e | 3 | 0.15 | 101 | 3 | 9 |
根據求得的編碼,求得各編碼需要的總位數是:45位(14+6+8+8+9=45)。
(3)字符串總編碼長度:60bit(20 x 3 = 60)。
編碼前與編碼后的比值:4/3(編碼前是60,編碼后是45)