信息论与编码课程设计报.doc
《信息论与编码课程设计报.doc》由会员分享,可在线阅读,更多相关《信息论与编码课程设计报.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、信息论与编码课程设计报告姓名:时旭东专业:电科10-01学号:0指导老师:成凌飞完成日期:2013.03.20目录一课程描术。1二设计原理。2三设计内容。3四总结。22五参考文献。23一课程设计教学目的通过本次课程设计的练习,使学生进一步巩固信源熵、信源编码的基本原理,掌握具体的编码方法,熟悉编程软件的使用,培养学生自主设计、编程调试的开发能力,同时提高学生的实践创新能力。二题目一:判断唯一可译码一设计要求:利用尾随后缀法判断任意输入的码是否为唯一可译码。二题目分析: 设计一个程序实现判断输入码组是否为唯一可译码这一功能。在我们学习使用了克劳夫特不等式之后,知道唯一可译码必须满足克劳夫特不等式
2、。但是克劳夫特不等式仅仅是存在性的判定定理,即该定理不能作为判断一种码是否为唯一可译码的依据。也就是说当码字长度和码符号数满足克劳夫特不等式时,则必可以构造出唯一可译码,否则不能构造出唯一可译码。因此我们必须找到一种能够判断一种码是否为唯一可译码的方法尾随后缀法。三算法分析:尾随后缀法算法描述: 设C为码字集合,按以下步骤构造此码的尾随后缀集合F: (1) 考查C中所有的码字,若Wi是Wj的前缀,则将相应的后缀作为一个尾随后缀放入集合F0中; (2) 考查C和Fi两个集合,若WjC是WiFi的前缀或WiFi 是WjC的前缀,则将相应的后缀作为尾随后缀码放入集合Fi+1中; (3)F=Fi即为码
3、C的尾随后缀集合; (4) 若F中出现了C中的元素,则算法终止,返回假(C不是唯一可译码);否则若F中没有出现新的元素,则返回真。在我们设计的算法中,需要注意的是我们需要的是先输出所有尾随后缀的集合,然后再判断该码是否是唯一可译码,即如F中出现了C中的元素,则C不是唯一可译码,否则若F中没有出现新的元素,则C为唯一可译码。而不是F中出现C中的元素就终止,这也是在本题的要求中需要注意的问题。简明流程图开始输入码字个数和码字进行尾随后缀编码判断是否为唯一码调用main()函数结束四概要设计:由于需要判断尾随后缀,所以我们需要反复的比较C和F中的码字。1) 首先我们用一个b4040的数组来存放所有的
4、尾随后缀的集合;用Q记录所有尾随后缀的个数;2) 用数组a4040来存放输入的码字,L50来存放码字的长度;通过一个双重循环并调用Hz(ai,aj,Li,Lj)函数来找到a4040中的为随后缀,即:for(i=0;in-1;i+) for(j=0;jn;j+) if(i!=j&LiLj) Hz(ai,aj,Li,Lj); 3) 通过判断Q是否大于0,如果不大于0,即b4040中没有码字,也就是不存在尾随后缀,那么可判断a4040是唯一可译码,否则进行如下操作;4) 计算b4040中尾随后缀的长度,用k1表示;并调用Hz(bi,aj,k1,Lj)其中k1Lj来a4040中所存在的后缀,并加入到b
5、4040中,通过一个循环,找到a4040中所有尾随后缀;即 for(i=0;iQ;i+) k1=strlen(bi); for(j=0;jn;j+) if(k1Lj;通过循环调用即可找到b4040中的所有尾随后缀,最后再将他们分别存放在b4040中;即通过 for(i=0;in;i+) for(j=0;jLi) Hz(ai,bj,Li,k2); 6) 在反复调用Hz(ai,aj,Li,Lj)函数中如果b4040中有重复出现的,即尾随后缀相同的不用再次放入b4040中。7) 在调用函数中所需要注意的问题就是一个比较的问题,也就是实现6)中所提到的。五测试结果5.1、测试数据为0 10 1100
6、1110 1011 11015.2、测试数据为110 11 100 00 10五、源代码#include#includechar b4040;int Q;void Hz(char c,char d,int L1,int L2) int i,j,temp=0; char m50; for(i=0;iL1;i+) if(ci=di)continue;else break; if(i=L1) for(j=0;jL2-L1;j+) mj=dL1+j; mj=0; for(i=0;iQ;i+) if(strcmp(bi,m)=0) temp=1; break; if(temp!=1) strcpy(bQ
7、,m);Q+; void main()int i,j,k,k1,k2,n;char a4040; int L50; int temp=1;int f=0;printf(请输入码字个数:); scanf(%d,&n); printf(请分别输入码字: ); for(i=0;in;i+) scanf(%s,&ai); Li=strlen(ai); for(i=0;in-1;i+) for(j=0;jn;j+) if(i!=j&Li0) for(i=0;iQ;i+) k1=strlen(bi); for(j=0;jn;j+) if(k1Lj) Hz(bi,aj,k1,Lj); for(k=0;kn;
8、k+) for(j=0;jLk) Hz(ak,bj,Lk,k2); printf(尾随后缀集合为:); for(i=0;iQ;i+) printf(%s ,bi); for(i=0;in&temp!=0;i+) for(j=0;jQ;j+) if(strcmp(ai,bj)=0) temp=0; break; else continue; printf(n); if(temp=0)printf(该码不是唯一可译码!n); else printf(该码是唯一可译码!n); else printf(该码组是唯一可译码!); f+; printf(n);题目二:哈夫曼编码1课题描述在这个信息量爆炸的
9、时代,凡是能载荷一定信息量,且码字的平均长度最短,可分离的变长码的码字集合称为最佳变长码。为此,必须将概率大的信息符号编以短的码字,概率小的符号编以长的码字,使得平均码字最短。能获得最佳码的编码方法主要有:香农(Shannon)、费诺(Fano)、哈夫曼(Huffman)编码等。哈夫曼(Huffman)编码是一种常用的压缩编码方法,是Huffman于1952年为压缩文本文件建立的。它的基本原理是频繁使用的数据用较短的代码代替,较少使用的数据用较长的代码代替,每个数据的代码各不相同。哈夫曼压缩是个无损的压缩算法,一般用来压缩文本和程序文件。哈夫曼压缩属于可变代码长度算法一族。意思是个体符号用一个
10、特定长度的位序列替代。因此,在文件中出现频率高的符号,使用短的位序列,而那些很少出现的符号,则用较长的位序列。哈夫曼编码是哈夫曼树的一个应用,是一种最优的前缀技术,然而其存在的不足却制约了它的直接应用。首先,其解码时间为O(lavg),其中lavg为码字的平均长度;其次,更为重要的是,解码器需要知道哈夫曼编码树的结构,因而编码器必须为解码器保存或传输哈夫曼编码树。对于小量数据的压缩而言,这是很大的开销。因而,应用哈夫曼编码的关键是如何降低哈夫曼编码树的存储空间。目前流行的很多压缩方法都是用了该技术,如GZIB、ZLIB、PNC等。2设计原理对于多进制哈夫曼编码,为了提高编码效率,就要是长码的符
11、号数量尽量少、概率尽量小,所以信源符号数量最好满足n=(m-1)*k+r,其中m为进制数,k为缩减的次数。设计步骤如下:1将信源符号按概率从大到小的顺序排列,令p(x1) p(x2) p(xn)2给两个概率最小的信源符号p(xn-1)和p(xn)各分配一个码位“0”和“1”,将这两个信源符号合并成一个新符号,并用这两个最小的概率之和作为新符号的概率,或者在新添加一个信源符号,令其概率为0,则个分配一个码位“0”、“1”和“2”,将其合并,结果得到一个只包含(n1)个信源符号的新信源。称为信源的第一次缩减信源,用S1表示。3将缩减信源S1的符号仍按概率从大到小顺序排列,此后每次合并3个信源符号,
12、得到只含(n3)个符号的缩减信源S2。4重复上述步骤,直至最后,此时所剩符号的概率之和必为1。然后从最后一级缩减信源开始,依编码路径向前返回,就得到各信源符号所对应的码字。3 设计过程3.1软件介绍3.1.1 Visual C+ 6.0简介Visual C+ 6.0,简称VC或者VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。Visual C+6.0由
13、Microsoft开发, 它不仅是一个C+ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。Microsoft的主力软件产品。Visual C+是一个功能强大的可视化软件开发工具。Visual C+6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试
14、,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。3.1.2主要部分1Developer Studio 图1 Developer Studio环境这是一个集成开发环境,我们日常工作的99%都是在它上面完成的,再加上它的标题赫然写着“Microsoft Visual C+”,所以很多人理所当然的认为,那就是Visual C+了。其实不然,虽然Developer Studio提供了一个很好的编辑器和很多
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息论 编码 课程设计
限制150内