大香蕉综合在线观看视频-日本在线观看免费福利-欧美激情一级欧美精品性-综合激情丁香久久狠狠

好房網(wǎng)

網(wǎng)站首頁 行業(yè)快訊 > 正文

霍夫曼樹(圖解霍夫曼編碼)

2022-06-03 07:06:34 行業(yè)快訊 來源:
導(dǎo)讀 目前大家應(yīng)該是對霍夫曼樹(圖解霍夫曼編碼)比較感興趣的,所以今天好房網(wǎng)小編CC就來為大家整理了一些關(guān)于霍夫曼樹(圖解霍夫曼編碼)方面
目前大家應(yīng)該是對霍夫曼樹(圖解霍夫曼編碼)比較感興趣的,所以今天好房網(wǎng)小編CC就來為大家整理了一些關(guān)于霍夫曼樹(圖解霍夫曼編碼)方面的相關(guān)知識來分享給大家,希望大家會喜歡哦。

霍夫曼樹(圖解霍夫曼編碼)

簡明易懂的霍夫曼編碼來啦,用圖片的形式解答霍夫曼是不是很簡單呢,瀏覽完本文就去動手試一試吧!

責(zé)編 | 張紅月

出處 | 沉默王二

今天來給大家普及一下霍夫曼編碼(Huffman Coding),一種用于無損數(shù)據(jù)壓縮的熵編碼算法,由美國計(jì)算機(jī)科學(xué)家大衛(wèi)·霍夫曼在 1952 年提出——這么專業(yè)的解釋,不用問,來自維基百科了。

說實(shí)話,很早之前我就聽說過霍夫曼編碼,除了知道它通常用于 GZIP、BZIPPKZIP 這些常規(guī)的壓縮格式中,我還知道它通常用于壓縮重復(fù)率比較高的字符數(shù)據(jù)。

大家想啊,英文就 26 個字母進(jìn)行的無限組合,重復(fù)率高得一逼??!常用的漢字也不多,2500 個左右,別問我怎么知道的,我有問過搜索引擎的。

字符重復(fù)的頻率越高,霍夫曼編碼的工作效率就越高!

是時候,和大家一起來了解一下霍夫曼編碼的工作原理啦,畢竟一名優(yōu)秀的程序員要能做到知其然知其所以然——請?jiān)试S我又用了一次這句快用臭了話。

假設(shè)下面的字符串要通過網(wǎng)絡(luò)發(fā)送。

圖解霍夫曼編碼

大家應(yīng)該知道,每個字符占 8 個比特,上面這串字符總共有 15 個字符,所以一共要占用 15*8=120 個比特。沒有疑問吧?有疑問的同學(xué)請不好意思下。

如果我們使用霍夫曼編碼的話,就可以將這串字符壓縮到一個更小的尺寸。怎么做到的呢?

霍夫曼編碼首先會使用字符的頻率創(chuàng)建一棵樹,然后通過這個樹的結(jié)構(gòu)為每個字符生成一個特定的編碼,出現(xiàn)頻率高的字符使用較短的編碼,出現(xiàn)頻率低的則使用較長的編碼,這樣就會使編碼之后的字符串平均長度降低,從而達(dá)到數(shù)據(jù)無損壓縮的目的。

拿上面這串初始字符來一步步的說明下霍夫曼編碼的工作步驟。

圖解霍夫曼編碼

計(jì)算字符串中每個字符的頻率

圖解霍夫曼編碼

B 出現(xiàn) 1 次,C 出現(xiàn) 6 次,A 出現(xiàn) 5 次,D 出現(xiàn) 3 次。

圖解霍夫曼編碼

按照字符出現(xiàn)的頻率進(jìn)行排序,組成一個隊(duì)列 Q

圖解霍夫曼編碼

出現(xiàn)頻率最低的在前面,出現(xiàn)頻率高的在后面。

圖解霍夫曼編碼

把這些字符作為葉子節(jié)點(diǎn)開始構(gòu)建一顆樹

首先創(chuàng)建一個空節(jié)點(diǎn) z,將最小頻率的字符分配給 z 的左側(cè),并將頻率排在第二位的分配給 z 的右側(cè),然后將 z 賦值為兩個字符頻率的和。

圖解霍夫曼編碼

B 的頻率最小,所以在左側(cè),然后是頻率為 3 的 D,在右側(cè);然后把它們的父節(jié)點(diǎn)的值設(shè)為 4,子節(jié)點(diǎn)的頻率之和。

然后從隊(duì)列 Q 中刪除 B 和 D,并將它們的和添加到隊(duì)列中,上圖中 * 表示的位置。緊接著,重新創(chuàng)建一個空的節(jié)點(diǎn) z,并將 4 作為左側(cè)的節(jié)點(diǎn),頻率為 5 的 A 作為右側(cè)的節(jié)點(diǎn),4 與 5 的和作為父節(jié)點(diǎn)。

圖解霍夫曼編碼

繼續(xù)按照之前的思路構(gòu)建樹,直到所有的字符都出現(xiàn)在樹的節(jié)點(diǎn)中。


版權(quán)說明: 本文由用戶上傳,如有侵權(quán)請聯(lián)系刪除!


標(biāo)簽: