【数据结构】哈夫曼树与哈夫曼编码
定義
帶權(quán)路徑長度(WPL):設(shè)二叉樹有n個葉子結(jié)點,每個葉子結(jié)點帶有權(quán)值wkw_kwk?,從根節(jié)點到每個葉子結(jié)點的長度為lkl_klk?,則每個葉子結(jié)點的帶權(quán)路徑長度之和就是:WPLWPLWPL=∑k=1n\sum_{k=1}^{n}∑k=1n?
最優(yōu)二叉樹或哈夫曼樹:WPL最小的二叉樹
哈夫曼樹的構(gòu)造
每次將權(quán)值最小的兩棵二叉樹合并
如何選取兩個最小的元素?利用堆
哈夫曼樹的特點
哈夫曼編碼
給定一段字符串,如何對字符進行編碼,可以使得該字符串的編碼存儲空間最少?
[例]
假設(shè)有一段文本,包含58個字符,并由以下7個字符構(gòu):a,e,i,s,t,空格(sp),換行(nl);這7個字符出現(xiàn)的次數(shù)不同。如何對這7個字符進行編碼,使得總編碼空間最少?
【分析】
(1)用等長ASCII編碼:58 ×8 = 464位;
(2)用等長3位編碼:58 ×3 = 174位;
(3)不等長編碼:出現(xiàn)頻率高的字符用的編碼短些,出現(xiàn)頻率低的字符則可以編碼長些?
怎么進行不等長編碼? 如何避免二義性?
前綴碼prefix code:任何字符的編碼都不是另一字符編碼的前綴
可以無二義地解碼
怎么構(gòu)造一顆編碼代價最小的二叉樹?
代價最小且不會有二義性
參考資料
浙大數(shù)據(jù)結(jié)構(gòu)MOOC
總結(jié)
以上是生活随笔為你收集整理的【数据结构】哈夫曼树与哈夫曼编码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据结构】堆 笔记
- 下一篇: 【数据结构】集合及运算