初考-統計資料處理大意115 年第 12 題單選題
給定以下字元出現的頻率:A: 0.5 B: 0.25 C: 0.15 D: 0.10 使用霍夫曼演算法(Huffman's Algorithm)生成編碼,在樹狀結構中,若規定左分支編碼為 0,右分支編碼為 1,請問字元 B 的二進位編碼為何?
B正確答案
Huffman 編碼依頻率建樹:A(0.5) 最短碼 0,B(0.25) 次之為 10,C/D 合併後分別為 110/111。
為什麼答案是 B
B 頻率 0.25 僅次於 A,在 Huffman 樹中位於第二層右分支下的左子節點,編碼為 10。
載入中…
完整詳解
Pro · 無限重點 Huffman 編碼依頻率建樹:A(0.5) 最短碼 0,B(0.25) 次之為 10,C/D 合併後分別為 110/111。
頻率越高碼越短。A=0.5→0;B=0.25→10;C=0.15→110;D=0.10→111。
逐選項分析
A✕ 陷阱
「0」是頻率最高的 A 的編碼,不是 B。把最短碼誤給 B 是常見陷阱。
B✓ 正確
B 頻率 0.25 僅次於 A,在 Huffman 樹中位於第二層右分支下的左子節點,編碼為 10。
C✕
110 是 C(0.15) 的編碼。C 與 D 先合併(0.25),再與 B 合併(0.5),故 C 在第三層左分支。
D✕
111 是 D(0.10) 的編碼,頻率最低因此碼最長,位於樹最深的右分支。
Huffman 建樹步驟
| 步驟 | 合併節點 | 新節點頻率 | 結果 |
|---|
| 1 | C(0.15) + D(0.10) | 0.25 | CD 子樹 |
| 2 | B(0.25) + CD(0.25) | 0.50 | BCD 子樹 |
| 3 | A(0.5) + BCD(0.5) | 1.00 | 完整 Huffman 樹 |
| 編碼 | A=0, B=10, C=110, D=111 | - | 左0右1 |
考生易誤以為 B 頻率第二高就該拿到「0」或「1」這種單位元編碼。實際上 Huffman 是從最低頻率開始合併,A 因頻率過半會獨占最短碼 0,B 則退到 10。