普考-資訊處理計算機概要110 年第 40 題單選題
假設一個數字序列包含 0, 1, 2, 3四個數字,若以兩個位元表達每一個數字,需要 2 乘上序列長度(數字的個數)的位元數來儲存這個數字序列。若已知 0, 1, 2, 3出現的比例分別是 10%, 20%, 30%, 40%,則使用霍夫曼編碼法(Huffman Coding)重新編碼後,所需的位元數為原本的:
C正確答案
Huffman 編碼依機率分配碼長,本題平均 1.9 bits,原本 2 bits,比例 95%。
為什麼答案是 C
Huffman 樹合併後,0.4→碼長1、0.3→2、0.2→3、0.1→3。平均=0.4+0.6+0.6+0.3=1.9 bits。1.9/2 = 95%。
載入中…
完整詳解
Pro · 無限重點 Huffman 編碼依機率分配碼長,本題平均 1.9 bits,原本 2 bits,比例 95%。
建 Huffman 樹:合併最小機率 0.1+0.2=0.3 → 0.3+0.3=0.6 → 0.6+0.4=1.0。碼長:0.4→1、0.3→2、0.2→3、0.1→3。平均=0.4×1+0.3×2+0.2×3+0.1×3=1.9,1.9/2=95%。
逐選項分析
A✕ 陷阱
85% 對應平均碼長 1.7 bits,計算錯誤。常見錯誤是把 0.1 與 0.2 都給 2 bits 而非 3 bits。
B✕
90% 對應平均碼長 1.8 bits,與正確 Huffman 樹計算不符。
C✓ 正確
Huffman 樹合併後,0.4→碼長1、0.3→2、0.2→3、0.1→3。平均=0.4+0.6+0.6+0.3=1.9 bits。1.9/2 = 95%。
D✕ 陷阱
100% 代表無壓縮效益。但因機率分布不均,Huffman 必能壓縮,不可能與原編碼相同。
Huffman 編碼建樹過程
| 符號 | 機率 | Huffman碼 | 碼長 |
|---|
| 3 | 0.4 | 1 | 1 |
| 2 | 0.3 | 01 | 2 |
| 1 | 0.2 | 000 | 3 |
| 0 | 0.1 | 001 | 3 |
Huffman 編碼的核心是「每次合併機率最小的兩個節點」,這樣高頻符號才能拿到短碼。關鍵判斷準則:先找出所有機率值,從最小的 0.1、0.2 開始配對合併,逐步建樹後計算 Σ(機率 × 深度)。考生最常卡在合併順序錯亂,例如先合併中間值,導致高頻符號反而配到長碼,算出 1.7 或 1.8 bits。正確建樹後平均碼長應為 1.9 bits,相比固定 2 bits 編碼節省 5% 空間,這就是 Huffman 壓縮的實際效益來源。