哈夫曼編碼(Huffman Coding),也被稱為霍夫曼編碼,是一種用於數據壓縮的編碼方法。其利用了可變字長編碼(VLC)的原理,通過賦予出現頻率高的字元較短的編碼和出現頻率低的字元較長的編碼,從而達到壓縮數據的目的。
哈夫曼編碼的工作原理可概括為以下幾個步驟:
統計頻率。首先記錄待編碼數據中每個符號(如字元、位元組或其他數據單元)的出現頻率。
構建編碼樹。根據符號的頻率構建一個特殊的二叉樹(哈夫曼樹)。這個過程是通過將頻率最低的兩個符號合併,重複這個步驟直到只剩下一個節點。
分配編碼。從根節點開始,沿著左子樹走為0,沿著右子樹走為1,為每個葉子節點分配0和1的序列作為其哈夫曼編碼。
生成編碼表。存儲每個符號及其對應的哈夫曼編碼。
進行編碼。將原始數據中的每個符號替換為其對應的哈夫曼編碼,生成壓縮後的數據。
哈夫曼編碼的優點是它產生的編碼沒有冗餘和歧義性,即每個編碼都不是其他編碼的前綴,這種性質被稱為前綴碼,使得編碼和解碼過程都非常高效。哈夫曼編碼在數據檔案壓縮方面有廣泛的套用,其壓縮率通常在20%至90%之間。