阿摩線上測驗 登入

申論題資訊

試卷:110年 - 110 臺灣港務股份有限公司新進從業人員甄試_員級_資訊:資料結構與程式設計#97568
科目:程式設計
年份:110年
排序:0

題組內容

4. 二元樹的應用 
3. 假設一份文件裡 A、B、C、D、E、F 等六個符號的出現頻率分別為 0.3、0.05、0.2、0.12、0.15、0.18,請建構出霍夫曼樹並編碼 後,請回答以下問題

申論題內容

(a) 算出每個符號需要幾個 bits 來表示。

詳解 (共 1 筆)

詳解 提供者:hchungw
為了構建霍夫曼樹(Huffman Tree),我們遵循一個特定的演算法,這個演算法可以為不同頻率的符號分配最小的、最優的位長度。基本步驟是將最小頻率的符號組合在一起,創建一個新的節點,其頻率是這兩個符號的和,然後重複這個過程,直到只剩下一個節點,這個節點將成為霍夫曼樹的根節點。
給定的符號及其頻率如下:
A: 0.3
B: 0.05
C: 0.2
D: 0.12
E: 0.15
F: 0.18
下麵是構建霍夫曼樹的步驟:
首先,選擇頻率最低的兩個符號 B(0.05) 和 D(0.12),組合它們創建一個新的節點 BD(0.17)。
接下來,選擇下一個頻率最低的兩個節點,這將是 E(0.15) 和剛剛創建的 BD(0.17),組合它們創建一個新的節點 EBD(0.32)。
然後,選擇下一個頻率最低的兩個節點 C(0.2) 和 F(0.18),組合它們創建一個新的節點 CF(0.38)。
此時,剩下三個節點:A(0.3),EBD(0.32) 和 CF(0.38)。選擇 A 和 EBD 組合成 AEBD(0.62)。
最後,將剩下的兩個節點 AEBD(0.62) 和 CF(0.38) 組合,創建根節點。
根據這棵霍夫曼樹,我們可以給出每個符號的霍夫曼編碼,從而得出每個符號所需的位元數:
A: 0 (1 bit)
B: 110 (3 bits)
C: 10 (2 bits)
D: 111 (3 bits)
E: 100 (3 bits)
F: 11 (2 bits)
由於實際構建霍夫曼樹可能有多種正確的方式(取決於合併順序的不同),上面的編碼和位元數可能會有所不同,但通常會保持總體的優化特性,即確保頻率較高的符號使用較少的位元。