成绩:
教师姓名:
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
#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”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库信息论课程设计报告在线全文阅读。
相关推荐: