演算法筆記-霍夫曼編碼
霍夫曼編碼
一種編碼方式,使最常出現的字有最短的編碼,不常出現的字則有較長的編碼,使編碼後的字串長度減短進行壓縮,在壓縮時要確保每個字的編碼不能為其他字編碼的前綴,否則解碼時會出現錯誤。
構建
一開始每個字都是一顆獨立的樹,根據其出現次數進行排序,每次從其中挑選出出現次數最少的兩棵樹,將其合併,分別做為新的樹的左右節點,並且新的樹出現次數為其兩者之和,重複以上步驟值到只剩下一棵樹。
查詢
在編碼的字串中,根據 0
或 1
在樹中往左或右節點前進,直到到達葉節點,葉節點代表的字即為編碼前的字。