日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

一文看懂哈夫曼树与哈夫曼编码

發(fā)布時(shí)間:2023/12/20 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一文看懂哈夫曼树与哈夫曼编码 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299884.html

在一般的數(shù)據(jù)結(jié)構(gòu)的書(shū)中,樹(shù)的那章后面,著者一般都會(huì)介紹一下哈夫曼(HUFFMAN)樹(shù)和哈夫曼編碼。哈夫曼編碼是哈夫曼樹(shù)的一個(gè)應(yīng)用。哈夫曼編碼應(yīng)用廣泛,如JPEG中就應(yīng)用了哈夫曼編碼。 首先介紹什么是哈夫曼樹(shù)。哈夫曼樹(shù)又稱(chēng)最優(yōu)二叉樹(shù),是一種帶權(quán)路徑長(zhǎng)度最短的二叉樹(shù)。所謂樹(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ù)的帶權(quá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)。可以證明哈夫曼樹(shù)的WPL是最小的。

哈夫曼編碼步驟:

一、對(duì)給定的n個(gè)權(quán)值{W1,W2,W3,…,Wi,…,Wn}構(gòu)成n棵二叉樹(shù)的初始集合F= {T1,T2,T3,…,Ti,…,Tn},其中每棵二叉樹(shù)Ti中只有一個(gè)權(quán)值為Wi的根結(jié)點(diǎn),它的左右子樹(shù)均為空。(為方便在計(jì)算機(jī)上實(shí)現(xiàn)算 法,一般還要求以Ti的權(quán)值Wi的升序排列。)
二、在F中選取兩棵根結(jié)點(diǎn)權(quán)值最小的樹(shù)作為新構(gòu)造的二叉樹(shù)的左右子樹(shù),新二叉樹(shù)的根結(jié)點(diǎn)的權(quán)值為其左右子樹(shù)的根結(jié)點(diǎn)的權(quán)值之和。
三、從F中刪除這兩棵樹(shù),并把這棵新的二叉樹(shù)同樣以升序排列加入到集合F中。
四、重復(fù)二和三兩步,直到集合F中只有一棵二叉樹(shù)為止。

簡(jiǎn)易的理解就是,假如我有A,B,C,D,E五個(gè)字符,出現(xiàn)的頻率(即權(quán)值)分別為5,4,3,2,1,那么我們第一步先取兩個(gè)最小權(quán)值作為左右子樹(shù)構(gòu)造一個(gè)新樹(shù),即取1,2構(gòu)成新樹(shù),其結(jié)點(diǎn)為1+2=3,如圖:

虛線為新生成的結(jié)點(diǎn),第二步再把新生成的權(quán)值為3的結(jié)點(diǎn)放到剩下的集合中,所以集合變成{5,4,3,3},再根據(jù)第二步,取最小的兩個(gè)權(quán)值構(gòu)成新樹(shù),如圖:

再依次建立哈夫曼樹(shù),如下圖:

其中各個(gè)權(quán)值替換對(duì)應(yīng)的字符即為下圖:

所以各字符對(duì)應(yīng)的編碼為:A->11,B->10,C->00,D->011,E->010

霍夫曼編碼是一種無(wú)前綴編碼。解碼時(shí)不會(huì)混淆。其主要應(yīng)用在數(shù)據(jù)壓縮,加密解密等場(chǎng)合。

總結(jié)

以上是生活随笔為你收集整理的一文看懂哈夫曼树与哈夫曼编码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。