版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
信息論與編碼實驗報告學(xué)院:計算機與通信工程學(xué)院專業(yè):計算機科學(xué)與技術(shù)班級:計1203班學(xué)號:姓名:2014年12月29日實驗一唯一可譯碼判別準(zhǔn)則實驗?zāi)康模?.進一步熟悉唯一可譯碼判別準(zhǔn)則;2.掌握C語言字符串處理程序的設(shè)計和調(diào)試技術(shù)。實驗內(nèi)容:已知:信源符號數(shù)和碼字集合C;輸入:任意的一個碼,碼字的個數(shù)和每個具體的碼字在運行時從鍵盤輸入;輸出:判決(是唯一可譯碼/不是唯一可譯碼);循環(huán)(若繼續(xù)判決則輸入1循環(huán)判決,否則輸入0結(jié)束運行)。實驗原理:根據(jù)唯一可譯碼的判別方法,利用數(shù)據(jù)結(jié)構(gòu)所學(xué)的知識,定義字符串?dāng)?shù)據(jù)類型并利用指針進行編程來實現(xiàn)算法。算法:1、考察C中所有的碼字,若Wi是Wj的前綴,則將對應(yīng)的后綴作為一個尾隨后綴碼放入集合Fi+1中;2、考察C和Fi倆個集合,若Wi∈C是Wj∈F的前綴或Wi∈F是Wj∈C的前綴,則將相應(yīng)的后綴作為尾隨后綴碼放入集合Fi+1中;3、F=∪Fi即為碼C的尾隨后綴集合;4、若F中出現(xiàn)了C中的元素,算法終止,返回假(C不是唯一可譯碼);否則若F中沒有出現(xiàn)新的元素,則返回真。實驗環(huán)境及實驗文件存檔名:1.實驗環(huán)境:visualC++6.02.文件名:weiyikeyi.cpp實驗結(jié)果及分析:1.源代碼:#include<stdio.h>#include<string.h>charc[100][50];charf[300][50];intN,sum=0;//N為輸入碼字的個數(shù),sum為尾隨后綴集合中碼字的個數(shù)intflag;//判斷是否唯一可譯標(biāo)志位voidpatterson(charc[],chard[])//檢測尾隨后綴{ inti,j,k;for(i=0;;i++) { if(c[i]=='\0'&&d[i]=='\0')//2字符串一樣,跳出 if(strcmp(f[i],c[j])==0) { flag=1; break; } } } if(flag==1) { printf("這不是唯一可譯碼!\n"); } else printf("這是唯一可譯碼!\n"); }}voidmain(){ intflag=1; while(flag){ yima(); printf("是否繼續(xù)判別?1/0\n"); scanf("%d",&flag); }}運行結(jié)果輸入0,01,001時:繼續(xù)執(zhí)行,輸入1,01,10,1010結(jié)束執(zhí)行實驗二霍夫曼編碼實驗?zāi)康模哼M一步熟悉Huffman編碼過程;掌握C語言遞歸程序的設(shè)計和調(diào)試技術(shù)。實驗內(nèi)容:輸入:信源符號個數(shù)r、信源的概率分布P;輸出:每個信源符號對應(yīng)的Huffman編碼的碼字。實驗原理:將q個信源符合按概率大小遞減排列;用“0,1”碼符號分別代表概率最小的兩個信源符號,并將這兩個概率最小的信源符號合并成一個,從而得到只包含q-1個符號的新信源,稱為縮減信源;把縮減信源的符號仍按概率大小遞減次序排列,再將其最后兩個概率最小的信源符號分別用“0”和“1”碼符號表示,并且合并成一個符號,這樣又形成了q-2個信源符號的縮減信源;依次繼續(xù)下去,直至信源符號最后只剩下兩個信源符號為止,將這最后兩個信源符號分別用二元碼符號“0”和“1”表示;然后從最后一級縮減信源開始,進行回溯,就得到各信源符號所對應(yīng)的碼符號序列,即對應(yīng)的碼字。實驗環(huán)境及實驗文件存檔名:1.實驗環(huán)境:visualC++6.02.文件名:Huffman.cpp實驗結(jié)果及分析:程序源代碼:#include<stdio.h>#defineN50#definemaxval10000.0#definemaxsize100typedefstruct{charch;floatweight;intlchild,rchild,parent;}hufmtree;typedefstruct{charbits[N];//位串intstart;//編碼在位串中的起始位置charch;//字符}codetype;voidhuffman(hufmtreetree[]);//建立哈夫曼樹voidhuffmancode(codetypecode[],hufmtreetree[]);//根據(jù)哈夫曼樹求出哈夫曼編碼intn;intm;voidmain(){ printf("輸入信源符號個數(shù)\n"); scanf("%d",&n); getchar(); m=2*n-1;printf("*****霍夫曼哈夫曼編碼*****\n");printf("總共有%d個字符\n",n);hufmtreetree[2*N-1];codetypecode[N];inti,j;//循環(huán)變量huffman(tree);//建立哈夫曼樹huffmancode(code,tree);//根據(jù)哈夫曼樹求出哈夫曼編碼printf("輸出每個字符的哈夫曼編碼\n");for(i=0;i<n;i++){printf("%c:",code[i].ch);for(j=code[i].start;j<n;j++)printf("%c",code[i].bits[j]);printf("\n");}}voidhuffman(hufmtreetree[])//建立哈夫曼樹{inti,j,p1,p2;//p1,p2分別記住每次合并時權(quán)值最小和次小的兩個根結(jié)點的下標(biāo)floatsmall1,small2,f;charc;for(i=0;i<m;i++)//初始化{tree[i].parent=0;tree[i].lchild=-1;tree[i].rchild=-1;tree[i].weight=0.0;}printf("依次讀入前%d個結(jié)點的字符及權(quán)值(中間用空格隔開)\n",n);for(i=0;i<n;i++)//讀入前n個結(jié)點的字符及權(quán)值{printf("輸入第%d個字符為和權(quán)值",i+1);scanf("%c%f",&c,&f);getchar();tree[i].ch=c;tree[i].weight=f;}for(i=n;i<m;i++)//進行n-1次合并,產(chǎn)生n-1個新結(jié)點{p1=0;p2=0;small1=maxval;small2=maxval;//maxval是float類型的最大值for(j=0;j<i;j++)//選出兩個權(quán)值最小的根結(jié)點if(tree[j].parent==0)if(tree[j].weight<small1){small2=small1;//改變最小權(quán)、次小權(quán)及對應(yīng)的位置small1=tree[j].weight;p2=p1;p1=j;}elseif(tree[j].weight<small2){small2=tree[j].weight;//改變次小權(quán)及位置p2=j;}tree[p1].parent=i;tree[p2].parent=i;tree[i].lchild=p1;//最小權(quán)根結(jié)點是新結(jié)點的左孩子tree[i].rchild=p2;//次小權(quán)根結(jié)點是新結(jié)點的右孩子tree[i].weight=tree[p1].weight+tree[p2].weight;}}//huffmanvoidhuffmancode(codetypecode[],hufmtreetree[])//根據(jù)哈夫曼樹求出哈夫曼編碼//codetypecode[]為求出的哈夫曼編碼//hufmtreetree[]為已知的哈夫曼樹{inti,c,p;codetypecd;//緩沖變量for(i=0;i<n;i++){cd.start=n;cd.ch=tree[i].ch;c=i;//從葉結(jié)點出發(fā)向上回溯p=tree[i].parent;//tree[p]是tree[i]的雙親while(p!=0){cd.start--;if(tree[p].l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年黃山學(xué)院師資博士后招聘11名考試備考題庫及答案解析
- 2026吉林大學(xué)白求恩第一醫(yī)院康復(fù)科招聘考試參考試題及答案解析
- 2026年上半年江蘇南通職業(yè)大學(xué)招聘高層次人才18人考試參考試題及答案解析
- 2026博州賽里木湖文化旅游投資集團有限公司招聘信息(1人)考試備考題庫及答案解析
- 2025下半年江西九江市國信項目管理咨詢有限責(zé)任公司人員招聘體檢考試參考試題及答案解析
- 2026年齊齊哈爾建華區(qū)消防大隊政府專職消防員招聘11人筆試備考題庫及答案解析
- 2026年河北建材職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試備考題庫帶答案解析
- 中兵勘察設(shè)計研究院有限公司2026校招考試參考試題及答案解析
- 2026年安徽水利水電職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試模擬試題帶答案解析
- 2026年春季學(xué)期廣東廣州市天河區(qū)同仁天興學(xué)校招聘4人筆試備考試題及答案解析
- 非遺傳承人激勵機制探索-深度研究
- 中小學(xué)校園中匹克球推廣策略與實踐研究
- 2024年世界職業(yè)院校技能大賽高職組“體育活動設(shè)計與實施組”賽項考試題庫(含答案)
- 高中地理選擇性必修一(湘教版)期末檢測卷02(原卷版)
- 滬教版九年級化學(xué)上冊(上海版)全套講義
- 三角函數(shù)圖像變化課件
- 《內(nèi)存條知識培訓(xùn)》課件
- 人教版(2024)七年級地理期末復(fù)習(xí)必背考點提綱
- 廣東省深圳市南山區(qū)2023-2024學(xué)年四年級上學(xué)期數(shù)學(xué)期末教學(xué)質(zhì)量監(jiān)測試卷
- 【MOOC】生物化學(xué)與分子生物學(xué)-華中科技大學(xué) 中國大學(xué)慕課MOOC答案
- 幼兒園小班美術(shù)《雪花飄飄》課件
評論
0/150
提交評論