一、題目說明
假設用於通信的電文僅由8個字母組成,字母在電文中出現的頻率分別為0.07,0.19, 0.02, 0.06, 0.32, 0.03, 0.21, 0.10。
1)試為這8個字母設置哈夫曼編碼
2)試設計另一種由二進制表示的等長編碼方案
3)對於上述實例,比較兩種方案的優缺點。
二、解答
1)可以將頻率放大100倍,以方便計算,不影響哈夫曼樹的構造。
w={7, 19, 2, 6, 32, 3, 21, 10},根據哈夫曼樹的構造規則得出以下的哈夫曼樹:
2)哈夫曼編碼和定長編碼如下表所示:
字母編號 | 出現頻率 | 哈夫曼編碼 | 等長編碼 |
---|---|---|---|
1 | 0.07 | 1010 | 000 |
2 | 0.19 | 00 | 001 |
3 | 0.02 | 10000 | 010 |
4 | 0.06 | 1001 | 011 |
5 | 0.32 | 11 | 100 |
6 | 0.03 | 10001 | 101 |
7 | 0.21 | 01 | 110 |
8 | 0.10 | 1011 | 111 |
3)對於上述的兩種方案。定長編碼明顯比哈夫曼編碼更加簡單。但是,哈夫曼編碼是最優前綴編碼。對於n個字符的數據文件來說,分別以它們的出現次數為權值構造哈夫曼樹,則該樹對應的哈夫曼編碼對文件進行編碼,能夠使得該文件壓縮過后對應的二進制文件的長度最短。
哈夫曼編碼對應二叉樹的WPL為:
WPL=2*(0.19+0.32+0.21)+4*(0.07+0.06+0.10)+5*(0.02+0.03)=2.61
等長編碼對應二叉樹的WPL為:
WPL=3*(0.19+0.32+0.21+0.07+0.06+0.10+0.02+0.03)=3