版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、石子合并問(wèn)題 有n堆石子,每堆有一個(gè)重量,每次把2堆石子合并成1堆,付出的代價(jià)為這兩堆石子的重量之和,如果把這n堆石子最后合并成1堆石子,怎樣合并才能使付出的代價(jià)最小,求出最小的代價(jià).每堆石子的位置可以調(diào)換.八、最優(yōu)二叉樹(哈夫曼樹)顯然圖(D)所示的合并方法付出的代價(jià)最小:54 例如n=5,重量 分別為7、5、2、4、6。246511671324L=6+11+13+24=541、最優(yōu)二叉樹的定義在具有n個(gè)帶權(quán)葉結(jié)點(diǎn)的二叉樹中,使所有葉結(jié)點(diǎn)的帶權(quán)路徑長(zhǎng)度之和(即二叉樹的帶權(quán)路徑長(zhǎng)度)為最小的二叉樹,稱為最優(yōu)二叉樹(又稱最優(yōu)搜索樹或哈夫曼樹),即最優(yōu)二叉樹使(wk第k個(gè)葉結(jié)點(diǎn)的權(quán)值;pk第k個(gè)葉
2、結(jié)點(diǎn)的帶權(quán)路徑長(zhǎng)度)達(dá)到最小。 2、最優(yōu)二叉樹的構(gòu)造方法 假定給出n個(gè)結(jié)點(diǎn)ki(i=1n),其權(quán)值分別為wi(i=1n)。要構(gòu)造以此n個(gè)結(jié)點(diǎn)為葉結(jié)點(diǎn)的最優(yōu)二叉樹,其構(gòu)造方法如下: 首先,將給定的n個(gè)結(jié)點(diǎn)構(gòu)成n棵二叉樹的集合F=T1,T2,Tn。其中每棵二叉樹Ti中只有一個(gè)權(quán)值為wi的根結(jié)點(diǎn)ki,其左、右子樹均為空。然后做以下兩步 在F中選取根結(jié)點(diǎn)權(quán)值最小的兩棵二叉樹作為左右子樹,構(gòu)造一棵新的二叉樹,并且置新的二叉樹的根結(jié)點(diǎn)的權(quán)值為其左、右子樹根結(jié)點(diǎn)的權(quán)值之和; 在F中刪除這兩棵二叉樹,同時(shí)將新得到的二叉樹加入F中;重復(fù)、,直到在F中只含有一棵二叉樹為止。這棵二叉樹便是最優(yōu)二叉樹。以上構(gòu)造最優(yōu)二
3、叉樹的方法稱為哈夫曼(huffmann)算法。 例如:給定五個(gè)結(jié)點(diǎn)k1,k2,k3,k4,k5,其權(quán)值分別為16、2、18、16、23。構(gòu)造最優(yōu)二叉樹的過(guò)程如下:構(gòu)造初始集合F,F(xiàn)中各二叉樹根結(jié)點(diǎn)的權(quán)值分別為16,2,18,16,23(如下圖): 最后得到最優(yōu)二叉樹(如下圖),其根結(jié)點(diǎn)的權(quán)值為75,結(jié)點(diǎn)數(shù)為2*5-1=9。在最優(yōu)二叉樹中非葉結(jié)點(diǎn)的度均為2,因此采用順序存儲(chǔ)結(jié)構(gòu)為宜。如果帶權(quán)葉結(jié)點(diǎn)數(shù)為n個(gè),則最優(yōu)二叉樹的結(jié)點(diǎn)數(shù)為2n-1個(gè)。由此得出最優(yōu)二叉樹的數(shù)據(jù)類型定義const int LEAF = 100+1;/葉結(jié)點(diǎn)數(shù)的上限const int MAXN = 2*LEAF;/最優(yōu)二叉樹的結(jié)
4、點(diǎn)數(shù)const int INF = 99999999;struct node int data;/結(jié)點(diǎn)的權(quán)值int prt, lch, rch;/父指針、左、右孩子指針;node htMAXN;/ht1.htn為葉結(jié)點(diǎn),htn+1.ht2n-1為中間結(jié)點(diǎn),根為ht2n-1 int n,m;/n 為讀入的葉結(jié)點(diǎn)數(shù),m 為總結(jié)點(diǎn)數(shù)int pathLEAF; /葉結(jié)點(diǎn)到根的路徑長(zhǎng)度在最優(yōu)二叉樹的順序存儲(chǔ)結(jié)構(gòu)中前n個(gè)結(jié)點(diǎn)為葉結(jié)點(diǎn)。構(gòu)造最優(yōu)二叉樹的算法如下:int findmin(int i)/在前i個(gè)結(jié)點(diǎn)中選擇父指針為0且權(quán)值最小結(jié)點(diǎn)的位置int j, k, min;min = INF;for (j=
5、1; j=i; j+)if ( (htj.prt = 0) & (htj.data n;/ 讀入葉結(jié)點(diǎn)數(shù)for (i=1; i hti.data;m = 2*n -1; / 計(jì)算總結(jié)點(diǎn)數(shù)for (i=n+1; i=m; i+)j = findmin(i-1); /找第1個(gè)權(quán)值最小的結(jié)點(diǎn)htj.prt = i; /父指針指向ik = findmin(i-1); /找第2個(gè)權(quán)值最小的結(jié)點(diǎn)htk.prt = i; /父指針指向ihti.data = htj.data + htk.data; /計(jì)算結(jié)點(diǎn)i 的權(quán)值hti.lch = j; /處理i 的左右孩子指針hti.rch = k;root = m
6、; int findpath(int i) / 計(jì)算葉結(jié)點(diǎn)到根的路徑長(zhǎng)度int j, k;j = i; k=0;while (htj.prt !=0)k+;j = htj.prt;return k;主程序: int main() int i , rt, sum; build(rt);/ 創(chuàng)建最優(yōu)二叉樹 for (i=1; i=n; i+) / 計(jì)算各葉結(jié)點(diǎn)到根的距離pathi = findpath(i);sum = 0;for (i=1; i=n; i+) / 累加每個(gè)葉節(jié)點(diǎn)的帶權(quán)路徑長(zhǎng)度sum += hti.data*pathi;cout sum endl; return 0;測(cè)試數(shù)據(jù):輸入:57 5 2 4 6輸出:543、哈夫曼編碼使用頻率高的采用短的的編碼,則總的編碼長(zhǎng)度便可減少.例如:在某通訊中只使用abcd四種字符,其出現(xiàn)頻率分別為:0.4,0.3,0.2,0.1。請(qǐng)進(jìn)行哈夫曼編碼。使通訊碼盡可能的短 并寫出信息:bbdaac的編碼。1.給定一個(gè)整數(shù)集合3,5,6,9,12,下列二叉樹哪個(gè)是該整數(shù)集合對(duì)應(yīng)的霍夫曼(Huffman)樹。 ( )2、已知如圖所示的哈夫曼樹,那么電文CDAA的編碼是 A 110100 B 11011100 C 010110111 D 11111100 3、若以4,5,6,7
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年農(nóng)業(yè)高技能人才培育策略
- 2026年呼叫中心服務(wù)質(zhì)量提升課程
- 2026河南南陽(yáng)市市直機(jī)關(guān)遴選公務(wù)員37人備考題庫(kù)帶答案詳解
- 隱形技術(shù)的定義
- 職業(yè)噪聲工人心血管疾病一級(jí)預(yù)防實(shí)踐
- 職業(yè)健康監(jiān)護(hù)策略研究
- 職業(yè)健康大數(shù)據(jù)在職業(yè)病鑒定中的應(yīng)用
- 職業(yè)健康中的人機(jī)適應(yīng)性研究
- 齊齊哈爾2025年黑龍江齊齊哈爾龍江縣選調(diào)中小學(xué)校醫(yī)筆試歷年參考題庫(kù)附帶答案詳解
- 韶關(guān)廣東韶關(guān)高新區(qū)工會(huì)聯(lián)合會(huì)招聘社會(huì)化工會(huì)工作者筆試歷年參考題庫(kù)附帶答案詳解
- 2025年兩種人考試題庫(kù)附答案
- GB/T 8642-2025熱噴涂抗拉結(jié)合強(qiáng)度的測(cè)定
- 貴州省貴陽(yáng)市2024-2025學(xué)年高一上學(xué)期期末監(jiān)測(cè)物理試卷(含解析)
- 稅收說(shuō)理式執(zhí)法課件
- 山東煙草招聘筆試題庫(kù)2026
- 2026屆浙江省學(xué)軍中學(xué)高三數(shù)學(xué)第一學(xué)期期末檢測(cè)試題含解析
- 水利工程安全隱患排查治理制度
- 酒店客房服務(wù)規(guī)范及員工培訓(xùn)教材
- 2026年鄭州鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試模擬測(cè)試卷附答案
- 揚(yáng)州市廣陵區(qū)2025年網(wǎng)格員考試題庫(kù)及答案
- 化工廠安全教育題庫(kù)試題和答案(教學(xué)資料)
評(píng)論
0/150
提交評(píng)論