收藏 分享(赏)

zhoujie信息论与编码.doc

上传人:dzzj200808 文档编号:2726984 上传时间:2018-09-26 格式:DOC 页数:17 大小:743.50KB
下载 相关 举报
zhoujie信息论与编码.doc_第1页
第1页 / 共17页
zhoujie信息论与编码.doc_第2页
第2页 / 共17页
zhoujie信息论与编码.doc_第3页
第3页 / 共17页
zhoujie信息论与编码.doc_第4页
第4页 / 共17页
zhoujie信息论与编码.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、 信 息 论-课程设计报告班 级: 12309107指导老师: 余林琛姓 名: 周杰学 号:20091001587实 习 日 期 :2010 年 10 月实习一:设计程序判断唯一可译码一、题目分析 设计一个程序实现判断输入码组是否为可译码组这一功能。在我们学习使用了克拉夫特不等式之后,知道唯一可以码必须满足克拉夫特不等式。但是克拉夫特不等式仅仅是存在性的判定定理,即该定理不能作为判断一种码是否为唯一可译码的依据。也就是说当码字长度和码符号数满足克拉夫特不等式时,则必可以构造出唯一可译码,否则不能构造出唯一可译码。因此我们必须找到一种能够判断一种码是否为唯一可译码的方法-Sardinas Pat

2、terson 算法。二、算法分析SardinasPatterson 算法描述:设 C 为码字集合,按以下步骤构造此码的尾随后缀集合 F:(1) 考查 C 中所有的码字,若 Wi 是 Wj 的前缀,则将相应的后缀作为一个尾随后缀放入集合 F0 中;(2) 考查 C 和 Fi 两个集合,若 Wj C 是 WiFi 的前缀或 Wi Fi 是 Wj C 的前缀,则将相应的后缀作为尾随后缀码放入集合 Fi+1 中;(3)F=Fi 即为码 C 的尾随后缀集合; (4) 若 F 中出现了 C 中的元素,则算法终止,返回假( C 不是唯一可译码) ;否则若F 中没有出现新的元素,则返回真。在我们设计的算法中,

3、需要注意的是我们需要的是先输出所有尾随后缀的集合,然后再判断该码是否是唯一可译码,即如 F 中出现了 C 中的元素,则 C 不是唯一可译码,否则若 F 中没有出现新的元素,则 C 为唯一可译码。而不是 F 中出现 C 中的元素就终止,这也是在本题的要求中需要注意的问题。简明流程图三、概要设计:由于需要判断尾随后缀,所以我们需要反复的比较 C 和 F 中的码字。1) 首先我们用一个 b4040的数组来存放所有的尾随后缀的集合;用 Q 记录所有尾随后缀的个数;2) 用数组 a4040来存放输入的码字,L50来存放码字的长度;开始输入码字个数和码字进行尾随后缀编码判断是否为唯一码调用 main()函

4、数结束通过一个双重循环并调用 Hz(ai,aj,Li,Lj )函数来找到 a4040中的为随后缀,即:for(i=0;iLj;通过循环调用即可找到 b4040中的所有尾随后缀,最后再将他们分别存放在 b4040中;即通过for(i=0;iLi)Hz(ai,bj,Li,k2);6) 在反复调用 Hz(ai,aj,Li,Lj)函数中如果 b4040中有重复出现的,即尾随后缀相同的不用再次放入 b4040中。7) 在调用函数中所需要注意的问题就是一个比较的问题,也就是实现 6)中所提到的。四、测试结果4.1、测试数据为 0 10 1100 1110 1011 11014.2、测试数据为 110 11

5、 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;i0)for(i=0;iLk)Hz(ak,bj,Lk,k2);printf(“尾随后缀集合为:“);for(i=0;i=1) stri+=“1“;s=s-1;else stri+=“0“;三、测试结果测试数据为:0.20 0.19 0.17 0.15 0.10 0.01 0.18四、分析与探讨只是在对概率取对数并向上取整时遇到一定的困难,经过思考,利用上述的模拟手工

6、出发圆满的解决了这一难题,使得程序能够得以完成。五、源代码#include#include#includeusing namespace std;void paixu(double *p,int n) int i,j;double e=0.0;for(i=0;i=1) stri+=“1“;s=s-1;else stri+=“0“;void main()int n,i;coutn;double *p=new doublen;coutpi;paixu(p,n);double *pa=new doublen;leijia(p,pa,n);int *k=new intn;length(p,k,n);s

7、tring *str=new stringn;mazi(k,pa,str,n);coutg) d=h-pi;b=h-g;c=g-d;if(cb) for(j=n;j#include#define M 25int paMM;void fano(float p,int aMM,int n,int m,int k)float g=0.0,h=0.0,d,b,c;int i,j,flase=0;if(ng) d=h-pi;b=h-g;c=g-d;if(cb) for(j=n;jn;coutpi;for(i=1;i1.0|sum!=1.0) cout“输入错误 !“; flase=1;break; if(flase=0)for(i=0;i=n;i+)for(j=0;j=n;j+) paij=10;fano(p,pa,1,n,1);cout“信源费诺编码如下:n“;for(i=1;i=n;i+) ki=0;cout“x“i“=“pi“t 码字为t“;for(j=1;j=n;j+) if(paij!=10) coutpaij;ki+;cout“t 码长为t“kiendl;coutendl;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报