信息论上机实习报告.docx

信息论上机实习报告.docx

ID:57437844

大小:377.22 KB

页数:27页

时间:2020-08-16

信息论上机实习报告.docx_第1页
信息论上机实习报告.docx_第2页
信息论上机实习报告.docx_第3页
信息论上机实习报告.docx_第4页
信息论上机实习报告.docx_第5页
资源描述:

《信息论上机实习报告.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、信息论上机实习报告姓名:夏勇学院:数学与物理学院专业号:学号:目录信息论上机实习报告1判断唯一可译码1题目分析1算法分析1设计中遇到的问题及其解决方法2调试结果3源代码5香农编码14题目分析14算法分析14算法中遇到的问题及解决方法15调试结果15源代码16费诺编码20题目分析20算法分析21算法设计中遇到的问题和解决方法21运行结果22源代码23判断唯一可译码题目分析1)问题描述编一个程序判断一组码是不是唯一可译码.2)基本要求利用萨德纳斯和彼特森的判断思想来编辑程序.算法分析1)算法原理B1B2B3⋯⋯⋯BmA1A2A3⋯⋯⋯Am由图可知,B1一定是A1的前缀

2、,而A1的尾随后缀一定是另一码字B2的前缀;又B2的尾随后缀又是其他码字的前缀。最后,若码符号序列的尾部是码字,则其是非唯一可译码。2)算法设计和思想首先,由于在比较前缀时,码字的长度也是一个重要的量,所以需要设计一个结构体来存放码字和其长度。然后首先判断源码字中的所有的尾随后缀,运用了两个for循环来实现,使得每个源码字都作为前缀和所有的其他码字比较,找出所有的尾随后缀及其长度,放在对象f中。具体判断时,如果作为前缀的码字的长度大于其他的,则剔除,判断下一个。接着,我们比较源码字和f中的码字,在这里,源码字和f中的码字都要作为前缀和其他的码字比较,找出尾随后缀码

3、及其长度放入f中,判断方法和前面的相同。最后,比较f中的码字是否有和源码字相同的,若有,则其不是唯一可译码,否则,其是唯一可译码。设计中遇到的问题及其解决方法在起初设计中,一直不知道应该怎么比较码字来找出尾随后缀,后来仔细分析后,明白了在比较的时候牵扯到了码字的长度,既然有多个变量,那么就运用结构体变量。然后在比较的时候,就可以根据它的长度来划分它的尾随后缀码,其的长度也就知道了。在具体编程时,要避免变量在多处运用。因为如果你忘记了初始化就会导致错误,而且很难找出来,所以尽量不要多处使用,如果你一定要用的话,那就在它的后面加上标注。另外,在设计当中从老师那里学会了

4、一种检错方法,就是一步一步的调试,虽然有点麻烦,但是效果相当不错。调试结果源代码#include#include#include#defineN1typedefstruct{inta[20];//数据intlen;//码字长度}Code;main(){inti,j,z=0,n,b,count=0,flag=0,flag1=0,sum=0,h,m;charc[20],*p;//过渡,接收每个码字Coded[100],f[100];printf("按次序依次输入每个码字:");gets(c);p=c;while

5、(*p!=''){if(*p=='')p++;else{i=0;while(*(p+i)!=''&&*(p+i)!='')i++;for(j=0;j

6、.len){for(z=0;z

7、

8、d[i].a[0]!=d[j].a[0]

9、

10、d[j].len==d[i].len)continue;b=d[i].len;while(

11、b){b--;if(d[i].a[b]==d[j].a[b])flag=1;else{flag=0;break;}}b=d[i].len;if(flag!=0){for(z=0;z<(d[j].len-d[i].len);z++)f[count].a[z]=d[j].a[b+z];f[count].len=d[j].len-d[i].len;count++;//f中码字的个数}}}//在源码字里找前缀m=count;for(h=0;h

12、j].le

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。