這篇文章將為大家詳細(xì)講解有關(guān)哈夫曼編碼運(yùn)用到了什么數(shù)據(jù)結(jié)構(gòu),小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
哈夫曼編碼運(yùn)用到的數(shù)據(jù)結(jié)構(gòu)為“樹(shù)型結(jié)構(gòu)”。在哈夫曼算法的支持下構(gòu)造出一棵最優(yōu)二叉樹(shù),我們把這類樹(shù)命名為哈夫曼樹(shù)。因此,準(zhǔn)確地說(shuō),哈夫曼編碼是在哈夫曼樹(shù)的基礎(chǔ)之上構(gòu)造出來(lái)的一種編碼形式。
哈夫曼編碼運(yùn)用到的數(shù)據(jù)結(jié)構(gòu)為“樹(shù)型結(jié)構(gòu)”。
哈夫曼編碼(Huffman Coding),又稱霍夫曼編碼,是一種編碼方式,哈夫曼編碼是可變字長(zhǎng)編碼(VLC)的一種。Huffman于1952年提出一種編碼方法,該方法完全依據(jù)字符出現(xiàn)概率來(lái)構(gòu)造異字頭的平均長(zhǎng)度短的碼字,有時(shí)稱之為很好編碼,一般就叫做Huffman編碼(有時(shí)也稱為霍夫曼編碼)。
哈夫曼編碼借助了數(shù)據(jù)結(jié)構(gòu)當(dāng)中的樹(shù)型結(jié)構(gòu),在哈夫曼算法的支持下構(gòu)造出一棵最優(yōu)二叉樹(shù),我們把這類樹(shù)命名為哈夫曼樹(shù)。因此,準(zhǔn)確地說(shuō),哈夫曼編碼是在哈夫曼樹(shù)的基礎(chǔ)之上構(gòu)造出來(lái)的一種編碼形式,它的本身有著非常廣泛的應(yīng)用。
哈夫曼樹(shù)
給定N個(gè)權(quán)值作為N個(gè)葉子結(jié)點(diǎn),構(gòu)造一棵二叉樹(shù),若該樹(shù)的帶權(quán)路徑長(zhǎng)度達(dá)到最小,稱這樣的二叉樹(shù)為最優(yōu)二叉樹(shù),也稱為哈夫曼樹(shù)(Huffman Tree)。哈夫曼樹(shù)是帶權(quán)路徑長(zhǎng)度短的樹(shù),權(quán)值較大的結(jié)點(diǎn)離根較近。
所謂樹(shù)的帶權(quán)路徑長(zhǎng)度,就是樹(shù)中所有的葉結(jié)點(diǎn)的權(quán)值乘上其到根結(jié)點(diǎn)的路徑長(zhǎng)度(若根結(jié)點(diǎn)為0層,葉結(jié)點(diǎn)到根結(jié)點(diǎn)的路徑長(zhǎng)度為葉結(jié)點(diǎn)的層數(shù))。樹(shù)的路徑長(zhǎng)度是從樹(shù)根到每一結(jié)點(diǎn)的路徑長(zhǎng)度之和,記為WPL=(W1*L1+W2*L2+W3*L3+...+Wn*Ln),N個(gè)權(quán)值Wi(i=1,2,...n)構(gòu)成一棵有N個(gè)葉結(jié)點(diǎn)的二叉樹(shù),相應(yīng)的葉結(jié)點(diǎn)的路徑長(zhǎng)度為L(zhǎng)i(i=1,2,...n)??梢宰C明哈夫曼樹(shù)的WPL是最小的。
關(guān)于“哈夫曼編碼運(yùn)用到了什么數(shù)據(jù)結(jié)構(gòu)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。