1、 信息论与编码课程设计报告信息论与编码课程设计报告 目录目录 一课程描术。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。1 二设计原理。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。2 三设计内容。 。 。 。 。 。 。 。 。 。 。 。 。 。
2、。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。3 四 总结。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。22 五参考文献。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。
3、。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。23 一一课程设计教学目的课程设计教学目的 通过本次课程设计的练习, 使学生进一步巩固信源熵、 信源编码的基本原理, 掌握具体的编码方法,熟悉编程软件的使用,培养学生自主设计、编程调试的开 发能力,同时提高学生的实践创新能力。 二题二题目目一:一:判断唯一可译码判断唯一可译码 一设计要求:利用尾随后缀法判断任意输入的码是否为唯一可译码。 二题目分析: 设计一个程序实现判断输入码组是否为唯一可译码这一功能。 在我们学习使用了克劳夫特不等式之
4、后, 知道唯一可译码必须满足克劳夫特 不等式。但是克劳夫特不等式仅仅是存在性的判定定理,即该定理不能作为判断 一种码是否为唯一可译码的依据。 也就是说当码字长度和码符号数满足克劳夫特 不等式时,则必可以构造出唯一可译码,否则不能构造出唯一可译码。因此我们 必须找到一种能够判断一种码是否为唯一可译码的方法尾随后缀法。 三算法分析: 尾随后缀法算法描述: 设 C 为码字集合,按以下步骤构造此码的尾随后缀集合 F: (1) 考查 C 中所有的码字,若 Wi 是 Wj 的前缀,则将相应的后缀作为一个 尾随后缀放入集合 F0 中; (2) 考查 C 和 Fi 两个集合,若 WjC 是 WiFi 的前缀或
5、 WiFi 是 Wj C 的前缀,则将相应的后缀作为尾随后缀码放入集合 Fi+1 中; (3)F=Fi 即为码 C 的尾随后缀集合; (4) 若 F 中出现了 C 中的元素,则算法终止,返回假(C 不是唯一可译码); 否则若 F 中没有出现新的元素,则返回真。 在我们设计的算法中, 需要注意的是我们需要的是先输出所有尾随后缀 的集合,然后再判断该码是否是唯一可译码,即如 F 中出现了 C 中的元素, 则 C 不是唯一可译码,否则若 F 中没有出现新的元素,则 C 为唯一可译码。 而不是 F 中出现C 中的元素就终止, 这也是在本题的要求中需要注意的问题。 简明流程图简明流程图 开始 四概要设计
6、: 由于需要判断尾随后缀,所以我们需要反复的比较 C 和 F 中的码字。 1) 首先我们用一个 b4040的数组来存放所有的尾随后缀的集合;用 Q 记录所有尾随后缀的个数; 2) 用数组 a4040来存放输入的码字,L50来存放码字的长度; 通过一个双重循环并调用 Hz(ai,aj,Li,Lj)函数来找到 a4040中 的为随后缀,即: for(i=0;in-1;i+) for(j=0;jn;j+) if(i!=j 3) 通过判断 Q 是否大于 0,如果不大于 0,即 b4040中没有码字,也就 是不存在尾随后缀,那么可判断 a4040是唯一可译码,否则进行如下 操作; 4) 计算 b4040中尾随后缀的长度, 用 k1 表示; 并调用 Hz(bi,aj,k1,Lj) 其中 k1Lj来 a4040中所存在的后缀,并加入到 b4040中,通过一 个循环,找到 a4040中所有尾随后缀;即 for(i=0;iQ;i+)