霍夫曼編碼 ( Huffman coding ) 是一種可變長的前綴碼?;舴蚵幋a使用的算法是 David A. Huffman 還是在MIT 的學(xué)生時(shí)提出的,并且在 1952 年發(fā)表了名為《 A Method for the Construction of Minimum-Redundancy Codes 》的文章。
編碼這種編碼的過程叫做霍夫曼編碼,它是一種普遍的熵編碼技術(shù),包括用于無損數(shù)據(jù)壓縮領(lǐng)域。
霍夫曼編碼過程
霍夫曼編碼使用一種特別的方法為信號源中的每個(gè)符號設(shè)定二進(jìn)制碼。出現(xiàn)頻率更大的符號將獲得更短的比特,出現(xiàn)頻率更小的符號將被分配更長的比特,以此來提高數(shù)據(jù)壓縮率,提高傳輸效率。
以字符串 ” ABAABACD “ 為例進(jìn)行說明。
接下來,按照字符出現(xiàn)的比例從高往低對字符進(jìn)行排序。
圖 1
然后,按出現(xiàn)比例低的順序查找兩個(gè)字母。在這種情況下,它是 “ C ” 12.5% 和 “ D ” 12.5% 。
通過一條線連接兩個(gè)字母拼構(gòu)成一個(gè)樹狀結(jié)果。將兩個(gè)字母合并為 “ C 或 D”,并將出現(xiàn)比率相加起來。
動(dòng)畫 2
按照同樣的操作,將合并后的 “ C 或 D ” 視為一個(gè)字符,重復(fù)相同的操作。
在 “ A " "B" " C 或 D " 三個(gè)中,按照出現(xiàn)比例低的順序查找兩個(gè)字母。
圖 3
圖 4
這樣,所有的字母都變成了 " A 或 B 或 C 或 D" ,出現(xiàn)的比率為 100% 。
圖 4 就是霍夫曼編碼的樹結(jié)構(gòu)。
接下來再次顯示各個(gè)字母出現(xiàn)的比率,同時(shí)使用 0 和 1 進(jìn)行編碼,代碼 0 和 1 分別分配給上下延伸的分支。
圖 5
分配完畢后,從樹的根部遍歷每個(gè)字符并確定相應(yīng)的代碼。
在 " A " 的情況下,被分配的代碼為" 0 "
在 " B " 的情況下,被分配的代碼為 " 10 "
在 " C " 的情況下,被分配的代碼為 " 110 "
在 " D " 的情況下,被分配的代碼為 " 111 "
動(dòng)畫 6
就這樣,通過這樣的編碼規(guī)則, " ABAABACD " 的二進(jìn)制編碼就變成了 " 01000100110111 ",只需要 14 個(gè)比特就能表示,比單純的使用 2 比特表示一個(gè)字符縮短了很多。
-
算法
+關(guān)注
關(guān)注
23文章
4810瀏覽量
98613 -
編碼
+關(guān)注
關(guān)注
6文章
1041瀏覽量
57156
原文標(biāo)題:算法科普:有趣的霍夫曼編碼
文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
示波器故障不用慌,專業(yè)維修排查攻略全科普
伺服電機(jī)正余弦編碼器的相位對齊方式
納芯微推出MT6901雙碼道游標(biāo)算法電感編碼器芯片
磁鐵在編碼器中的作用與應(yīng)用
麥歌恩磁編碼器芯片INL≤±0.07°高精度角度解算算法研究 -艾畢勝電子
電能質(zhì)量在線監(jiān)測裝置支持哪些數(shù)據(jù)壓縮算法?
【科普系列】DTC深度剖析
Booth編碼的原理及選擇
北京科技創(chuàng)新促進(jìn)中心文科與科普部李守勇部長一行蒞臨昱櫟技術(shù)科普基地實(shí)地踏勘
量子機(jī)器學(xué)習(xí)入門:三種數(shù)據(jù)編碼方法對比與應(yīng)用
重載型編碼器在鋼廠天車定位系統(tǒng)中的成功應(yīng)用案例
算法科普:有趣的霍夫曼編碼
評論