第一個實用的編碼方法是由D.A.Huffman在1952年的論文“最小冗餘度程式碼的構造方法(A Method for the Construction of Minimum Redundancy Codes)”中提出的。直到今天,許多《資料結構》教材在討論二叉樹時仍要提及這種被後人稱為Huffman編碼的方法。Huffman編碼在計算機界是如此著名,以至於連編碼的發明過程本身也成了人們津津樂道的話題。據說,1952年時,年輕的Huffman還是麻省理工學院的一名學生,他為了向老師證明自己可以不參加某門功課的期末考試,才設計了這個看似簡單,但卻影響深遠的編碼方法。
1948年,Shannon在提出資訊熵理論的同時,也給出了一種簡單的編碼方法——Shannon編碼。Shannon提出將信源符號依其出現的機率進行降序排列,用符號序列累計機率的二進位制作為對信源的編碼,並從理論上論證的了它的優越性。1952年,R.M.Fano又進一步提出了Fano編碼。這些早期的編碼方法揭示了變長編碼的基本規律,也確實可以取得一定的壓縮效果,但離真正實用的壓縮演算法還相去甚遠。
第一個實用的編碼方法是由D.A.Huffman在1952年的論文“最小冗餘度程式碼的構造方法(A Method for the Construction of Minimum Redundancy Codes)”中提出的。直到今天,許多《資料結構》教材在討論二叉樹時仍要提及這種被後人稱為Huffman編碼的方法。Huffman編碼在計算機界是如此著名,以至於連編碼的發明過程本身也成了人們津津樂道的話題。據說,1952年時,年輕的Huffman還是麻省理工學院的一名學生,他為了向老師證明自己可以不參加某門功課的期末考試,才設計了這個看似簡單,但卻影響深遠的編碼方法。
Huffman編碼效率高,運算速度快,實現方式靈活,從20世紀60年代至今,在資料壓縮領域得到了廣泛的應用。例如,早期UNIX系統上一個不太為現代人熟知的壓縮程式COMPACT實際就是Huffman 0階自適應編碼的具體實現。1960年伊萊亞斯(Peter Elias)發現無需排序,只要編、解碼端使用相同的符號順序即可,並提出了算術編碼的概念。伊萊亞斯沒有公佈他的發現,因為他知道算術編碼在數學上雖然成立,但不可能在實際中實現。1976年,帕斯科(R.Pasco)和瑞薩尼恩(J.Rissanen)分別用定長的暫存器實現了有限精度的算術編碼。20世紀80年代初,Huffman編碼又出現在CP/M和DOS系統中,其代表程式叫SQ。今天,在許多知名的壓縮工具和壓縮演算法(如WinRAR、gzip和JPEG)裡,都有Huffman編碼的身影。不過,Huffman編碼所得的編碼長度只是對資訊熵計算結果的一種近似,還無法真正逼近資訊熵的極限。正因為如此,現代壓縮技術通常只將Huffman視作最終的編碼手段,而非資料壓縮演算法的全部。