文档详情

信息论报告me.doc

发布:2016-08-11约2.68万字共57页下载文档
文本预览下载声明
信息论编码与密码学实习报告 姓 名: 学 号: 班 级: 指导老师: 目录 一.Lempel Zil字典编码----------------------------7 二.信道容量的计算--------------------------------16 三.Hamming码的编码与译码-------------------------36 四.循环码最小距离的计算--------------------------43 五.维特比译码器软件的设计------------------------56 六.实习心得--------------------------------------57 一、Lempel Ziv字典编码 题目要求: 写一个执行Lempel-Ziv算法的程序。该程序的输入可以是英文字母。它应该将字母转化为她们的ASCII码然后进行压缩.它应该输出压缩结果。用这个程序求下列的字符串所得到的压缩: The Lempel Ziv algorithm can compress the English text by about fifty five precent. The cat cannot sit on the canopy of the car. 算法设计: (1)字典初始化 (2)增添开始与结束位 (3)开始读入字符流,进入循环 (4)以两个字符为一组构建新的字符 (5)判断新的字符是否存在于字典中,如果存在,不做处理,如果不存在,将其添加到字典中,将该新字符在字典中的位置作为编码发送 (6)译码过程与编码过程相反 算法流程图 程序代码: #include iostream #include string #include iomanip using namespace std; string str1;//定义字符串变量str1 string str2; string dic[500]; int n; //函数名:int find(string s) //函数功能:在字典中寻找字符s,并返回在字典中的序号 //参数:所要查找的字符 //返回值:字符在字典中对应的标号 int find(string s) { int temp=-1; for(int i=0;i100;i++) { if(dic[i]==s) temp=i+1; } return temp; } //函数名:void init() //函数功能:用a~z,A~Z以及一些标点符号,初始化字典 //参数:void //返回值:void void init() //字典初始化 { int i,j; for(j=0,i=0;i=26;i++) { dic[j]=A+i; j++; } for(j=26,i=0;i=26;i++) { dic[j]=a+i; j++; } dic[52]=,; dic[53]=.;dic[54]=?;dic[55]=!; } //函数名:void code(string str)
显示全部
相似文档