



版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本文格式為word版,下載可任意編輯哈夫曼編碼實(shí)驗(yàn)報(bào)告 試驗(yàn)報(bào)告與總結(jié) 一、 試驗(yàn)?zāi)康?1、把握哈夫曼編碼原理; 2、嫻熟把握哈夫曼樹(shù)得生成方法; 3、理解數(shù)據(jù)編碼壓縮與譯碼輸出編碼得實(shí)現(xiàn). 二、試驗(yàn)要求 實(shí)現(xiàn)哈夫曼編碼與譯碼得生成算法。 三、試驗(yàn)內(nèi)容 先統(tǒng)計(jì)要壓縮編碼得文件中得字符字母消失得次數(shù),按字符字母與空格消失得概率對(duì)其進(jìn)行哈夫曼編碼,然后讀入要編碼得文件,編碼后存入另一個(gè)文件;接著再調(diào)出編碼后得文件,并對(duì)其進(jìn)行譯碼輸出,最終存入另一個(gè)文件中。 五、試驗(yàn)原理 1、哈夫曼樹(shù)得定義:假設(shè)有 n 個(gè)權(quán)值,試構(gòu)造一顆有 n 個(gè)葉子節(jié)點(diǎn)得二叉樹(shù),每個(gè)葉子帶權(quán)值為 wi,其中樹(shù)帶權(quán)路徑最小得二叉樹(shù)
2、成為哈夫曼樹(shù)或者最優(yōu)二叉樹(shù); 2、哈夫曼樹(shù)得構(gòu)造: w為輸入得頻率數(shù)組,把其中得值賦給依次建立得 h nod對(duì)象中得 dta 屬性,即每一個(gè) ht node 對(duì)應(yīng)一個(gè)輸入得頻率。然后依據(jù) dta 屬性按從小到大挨次排序,每次從ata 取出兩個(gè)最小與此次小得 ht node,將她們得 da相加,構(gòu)造出新得tne 作為她們得父節(jié)點(diǎn),指針 paret,lfd,rgtchil賦相應(yīng)值。在把這個(gè)新得節(jié)點(diǎn)插入最小堆。按此步驟可以構(gòu)造構(gòu)造出一棵哈夫曼樹(shù)。 通過(guò)已經(jīng)構(gòu)造出得哈夫曼樹(shù),自底向上,由頻率節(jié)點(diǎn)開(kāi)頭向上查找 pent,直到 pen為樹(shù)得頂點(diǎn)為止。這樣,依據(jù)每次向上搜尋后,原節(jié)點(diǎn)為父節(jié)點(diǎn)得左孩子還就是右
3、孩子,來(lái)記錄或 0,這樣,每個(gè)頻率都會(huì)有一個(gè)編碼與之唯一對(duì)應(yīng),并且任何編碼沒(méi)有前部分就是同其她完整編碼一樣得。 六、試驗(yàn)流程 初始化,統(tǒng)計(jì)文本文件中各字符得個(gè)數(shù)作為權(quán)值,生成哈夫曼樹(shù); 依據(jù)符號(hào)概率得大小按由大到小挨次對(duì)符號(hào)進(jìn)行排序; 把概率最小得兩個(gè)符號(hào)組成一個(gè)節(jié)點(diǎn); 重復(fù)步驟(2)(3),直到概率與為; 從根節(jié)點(diǎn)開(kāi)頭到相應(yīng)于每個(gè)符號(hào)得"樹(shù)葉',概率大得標(biāo)"0',概率小得標(biāo)"1' 從根節(jié)點(diǎn)開(kāi)頭,對(duì)符號(hào)進(jìn)行編碼; 譯碼時(shí)流程逆向進(jìn)行,從文件中讀出哈夫曼樹(shù),并利用哈夫曼樹(shù)將編碼序列解碼。 七、試驗(yàn)程序 #incldeistrem #nclud
4、efsteam incudeiomanip #iluevecto usin naespace sd; type strct /節(jié)點(diǎn)結(jié)構(gòu) char dt; /記錄字符值 重權(quán)符字錄記/ ;hgiew ni gnol unsined in paret,lchld,rhil; htnoe,*ufare; /動(dòng)態(tài)安排數(shù)組存儲(chǔ)哈夫曼樹(shù) typdef har * *hufmancode; /動(dòng)態(tài)安排數(shù)組存儲(chǔ)哈夫曼編碼表 void seet(huffmntree ht,int i,it s1,i 2) /在 ht1、t中選擇parent 不為 0 且權(quán)值最小得兩個(gè)結(jié)點(diǎn),其序號(hào)分別為1 與 s2 ;2s;0=
5、1 ;0003=2n,0003=n tni f(int k=1;k=;k+) if(ht、par=0) )1ngie、kh(f n2=n1; 1=ht、weigt; 2=s1; s1=; le i(h、wihtn2) n2ht、weght; 2k; oid hfmacodin(huffmntree ht,ffmacode hc,nt n)/將要編碼得字符串存入空樹(shù)中 ifstra fi1('zifu、txt); ifstra fin2(weigt、txt'); if(n)retr; int 2*1; int i; ;1+edot wen=h ch zifu; n *weit;
6、zifu= car+1; weigt=new itn+1; 中組數(shù) ufi在放符字得碼編待將/)+i;n=i;1=(rf ;hc ah c=fin1、get(); ;h=iufi 中組數(shù) thgiw 在放值權(quán)得應(yīng)對(duì)符字碼編帶將/)+;n=i;1=i(of inwiti; or( i=1;;i+) ;iufiz=tad、ith ;ithgiewhgiw、h for(in+1;i=m;i+) i、dt=; )+;m=i;1(rf ht、pen=ti、child=h、rcid=0; )i+;m=i;1+n=i(rof ;s,1s ti sele(t,s1,2); hs1、paenti; t、paen
7、=i; ;2s=dlihr、ith ;1slil、it ;the、2st+tgiew、1s=thgiew、it 間空作工得碼編求個(gè)一辟開(kāi);)*rahc(oez)1+n(collam)onmffuh(=ch ;dc* rahc 值權(quán)放存間空辟開(kāi)/;)ac(fez*(cllam)* rah(=dc cd-1="0; fr(i=1;i=;i+) ;1=tras tni ;f,c n for( =, f=hi、parent;f!=;c=f,f=hf、prent)/從葉子到根逆向求編碼 if(tf、lcld=) cdstart=0;/若就是左孩子編為"0" le "
8、;1為編子孩右是就若/;"1"asdc 分碼編個(gè)第為/ ;)rah(ezs)trats-n(cllm)* ah(=ch配空間 strpy(hci,art); deet d; /釋放工作空間 d prnhffntree(uffmee ht,nt ) /顯示有 n 個(gè)葉子結(jié)點(diǎn)得哈夫曼樹(shù)得編碼表 ostream fout(hmtree、txt); /將對(duì)應(yīng)字符得得哈弗曼樹(shù)存入 ''tnerap' 'thiw'' atd'' 'muntuoclchild' 'rchlid'ndl; o(
9、int i=;i=*n1;+) foti、eigtetw(3)i、paetsew()h、cilstw(3)hi、hldendl; thgew、th)3(waad、it)5(esitetw(3)hi、pntstw()hti、lchildsew(3)hti、childndl; vod printhuffmancodig(uffmnree ht,hufncode c,nt n)/輸出字符得對(duì)應(yīng)哈弗曼編碼并存入 code、xt 文件 cthufman ce is:'endl; ;)'xt、eoc'(tuof maertsfo fo(in =;i=n;i+) cuthti、aa&
10、#39; - ; ;ldne)ch(tuoc ;ldne)ich(tuo vo co_ ht,hufmae hc,it n)/對(duì)文件 tbern、txt 進(jìn)行編碼,并將編碼存入 codefile 文件中 ifsam fin(oran、txt); ;)'do'(tof aertsfo ;a ahcrce ;c rhc )*"=!)(teg、if=hc(el 、puhback(c); cout待編碼得字符串為:; )+k;)(eis、a;= tni(rof ;ku ;ldnetuoc ;l:果結(jié)碼編 ntoc )+i;)(eis、i;0=i ni(rof )+;n=j;1
11、j tni(rof )atad、jh=ia(i fhj; ;kaerb fi、clos(); ;)(eoc、tof void decodi(humatr ,huffmanod c,i )/打開(kāi) codeile 文件并對(duì)文件內(nèi)容進(jìn)行譯碼 in os m*n1; istream fin(code'); ;)txet(tuof atfo vetrcar a; );cnf; h(of a、ps_bac(c); ;0=tc tni fo(int k=0;ka、ze();+) oak; cont+; if(ont%5=0) ;ldnto int =0; 值得 m 住記來(lái) p 用/ ;p tni o
12、tenl; out'n 譯碼結(jié)果:'endl; while(ia、se() 歷遍始開(kāi)根得數(shù)曼弗哈從 ;= )dlil、th(ei )1=a(fi ;dlhcr、pth ls ;ihcl、pt=p ;+i fohtp、ata; ;ta、pthtuoc od main() t n; out'輸入權(quán)值個(gè)數(shù):' /設(shè)置權(quán)值數(shù)值 ;nic ;)n'(ftnir th 樹(shù)曼夫哈/ ;t eertffuh c表碼編曼夫哈/ ;ch ednamffuh 碼編曼夫哈行進(jìn)/ ;)n,h,th(nidocnauh rithufancodig(ht,,n); 顯示編碼得字符 ;
13、)(tnir ode_); /顯示要編碼得字符串,并把編碼值顯示出來(lái) 串符字得后碼譯示顯并碼譯/ ;)n,ch,h(gnioce ;)'n'(fip ;)euap(mtsys 八、結(jié)果分析 哈夫曼編碼就是動(dòng)態(tài)變長(zhǎng)編碼,臨時(shí)建立概率統(tǒng)計(jì)表與編碼樹(shù)。概率小得碼比較長(zhǎng),概率小得碼比較長(zhǎng)。概率大得碼短,這樣把一篇文件編碼后,就會(huì)壓縮很多。從樹(shù)得角度瞧,哈夫曼編碼方式就是盡量把短碼都利用上。首先,把一階節(jié)點(diǎn)全都用上,假如碼字不夠時(shí),然后,再?gòu)哪硞€(gè)節(jié)點(diǎn)伸出若干枝,引出二階節(jié)點(diǎn)作為碼字,以此類(lèi)推,明顯所得碼長(zhǎng)最短,再依據(jù)建立得概率統(tǒng)計(jì)表合理分布與放置,使其平均碼長(zhǎng)最短就可以得到最佳碼。 九、試驗(yàn)總結(jié) 通過(guò)這次試驗(yàn),我對(duì)二叉樹(shù)與哈希曼樹(shù)有了更好得熟悉
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 3《不懂就要問(wèn)》教學(xué)設(shè)計(jì)2024-2025學(xué)年統(tǒng)編版語(yǔ)文三年級(jí)上冊(cè)
- 道路拓寬建設(shè)合同范本
- 5建立良好的公共秩序-公共生活需要秩序(教學(xué)設(shè)計(jì))統(tǒng)編版道德與法治四年級(jí)下冊(cè)
- 2025屆高考生物備考教學(xué)設(shè)計(jì):第七章 生物的變異和進(jìn)化之構(gòu)建圖像模型分析細(xì)胞分裂與可遺傳變異的關(guān)系
- 購(gòu)買(mǎi)蛋糕卷合同范本
- 采購(gòu)教具合同范本
- 木門(mén)長(zhǎng)期合同范本
- Unit 1 My Classroom Part A. Lets learn;Lets chant. (教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教PEP版英語(yǔ)四年級(jí)上冊(cè)
- 教育產(chǎn)品合同范本
- 藥店委托配送合同范本
- 2024年江蘇食品藥品職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 國(guó)內(nèi)新能源汽車(chē)在共享經(jīng)濟(jì)領(lǐng)域的應(yīng)用與前景
- 大慶油田環(huán)境保護(hù)與可持續(xù)發(fā)展
- 外研版三年級(jí)起點(diǎn)四年級(jí)(下冊(cè))英語(yǔ)集體備課教(學(xué))案
- 中華民族的形成發(fā)展
- 《如何做美篇》課件
- “一帶一路”視域下印度尼西亞中資企業(yè)所得稅返還案例解析
- 咨詢服務(wù)協(xié)議書(shū)范本:教育咨詢和培訓(xùn)
- 管理ABC-干嘉偉(美團(tuán)網(wǎng)COO)
- 潔凈空調(diào)負(fù)荷計(jì)算表格
- 瀘州食品安全承諾書(shū)
評(píng)論
0/150
提交評(píng)論