77范文网 - 专业文章范例文档资料分享平台

信息论课程设计报告

来源:网络收集 时间:2019-06-11 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

成绩:

教师姓名:

1. 任务说明

2016-2017学年第1学期

《信息论》课程设计

学院名称: 班级学号: 学生姓名:

2016年12月

一、判定唯一可译码

输入:任意的一个码(即已知码字个数及每个具体的码字) 输出:判决结果(是/不是)

输入文件:in1.txt,含至少2组码,每组的结尾为”$”符 输出文件:out1.txt,对每组码的判断结果

说明:为了简化设计,可以假定码字为0,1串

2. 实现原理

判断方法:将码C中所有码字可能的尾随后缀组成一个集合F,当且仅当集合F中没有 包含任一码字,则可判断此码C为唯一可译变长码。

构成集合F:首先观察码C中最短的码字是否是其他码字的前缀。若是,将其所有可能 的尾随后缀排列出。就是将其他码字序列中截去与其最短码字相同的前缀 部分,将余下的序列为尾随后缀。而这些尾随后缀又可能是某些码字的前 缀,或者最短码字又仍是这些尾随后缀的前缀,再将由这些尾随后缀产生 的新的尾随后缀列出。然后再观察这些新的尾随后缀是否是某些码字的前 缀,或观察有否其他码字是这些新的尾随后缀的前缀,再将产生的尾随后 缀列出,依次下去,直至没有一个尾随后缀是码字的前缀或没有新的尾随 后缀产生为止。这样,首先获得的是由最短码字能引起的所有尾随后缀。 接着,按照上述步骤将次短的码字、......所有码字可能产生的尾随后缀前部 列出。由此得到由码C的所有可能的尾随后缀组成的集合F。 参考算法伪代码:

For all Wi,Wj?C do

if Wi是Wj的前缀 then

将相应的后缀作为一个尾随后缀放入集合F0中 End if End for Loop

For all Wi?C do

For all Wj?Fn do

if Wi是Wj的前缀 then

将相应的后缀作为一个尾随后缀放入集合Fn?1中 Else if Wj是Wi的前缀 then

将相应的后缀作为一个尾随后缀放入集合Fn?1中 End if End for End for F??iFi

If ?Wi?F,Wi?C then

Return false

Else if F 中未出现新的元素 then

Return true End if

//能走到这里,说明F中有新的元素出现,需继续

End loop

3. 实现源码

#include #include #include #include usingnamespace std;

#pragmawarning(disable:4996) char c[100][50]; //保存码字 char f[300][50]; //保存尾随后缀

int N, sum = 0; //N为码字的个数,sum为尾随后缀个数 int flag; //判断是否唯一可译标志位

//检测尾随后缀

void patterson(char c[], char d[]) { int i, j, k; for (i = 0;; i++) { If (c[i] == '\\0'&&d[i] == '\\0')//两字符串一样长,跳出 break; if (c[i] == '\\0') //d比c长,将d的尾随后缀放入f中 { for (j = i; d[j] != '\\0'; j++) f[sum][j - i] = d[j]; f[sum][j - i] = '\\0'; for (k = 0; k

if (strcmp(f[sum], f[k]) == 0) /*查看当前生成的尾随后缀在f集合中 是否存在*/ { sum--; break; } } sum++; break; } if (c[i] != d[i])//字符不一样了也退出(前缀不同) break; } }

void main(){ int k = 0, N = 0, m = 0, a[50], z = 0; a[m] = N; m++; fstream file1; file1.open(\); //码字读取 FILE *file; file = fopen(\, \); int num = fgetc(file) - 48; for (int n = 0; n < num; n++){ int i = 0, j; if (fgetc(file) == ' ') N += (fgetc(file) - 48); else N += (fgetc(file) - 48); a[m] = N; m++; fgetc(file); for (k; k < N; k++){ for (int q = 0;; q++){ char temp = fgetc(file); c[k][q] = temp; if (temp == ' ' || temp == '$'){ c[k][q] = '\\0'; break; } } } //生成尾随后缀 flag = 0; for (i = a[z]; i

for (j = i + 1; j

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库信息论课程设计报告在线全文阅读。

信息论课程设计报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/656355.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: