《信息论基础教程》报告
实验名称 信息论基础教程上机作业
学院计通学院
专业班级 计算机1003
姓 名 翟文洁
学 号 41050270
2012年11月
实验一唯一可译码判别准则
实验目的
进一步熟悉唯一可译码判决准则;
掌握C语言字符串处理程序的设计和调试技术。
实验要求
已知:信源符号个数q、码字集合C。
输入:任意的一个码。码字个数和每个具体的码字在运行时从键盘输入。
输出:判决(是唯一可译码/不是唯一可译码)。
实验原理
算法:
考察C中所有的码字,若Wi是Wj的前缀,则将相应的后缀作为一个尾随后缀码放在集合F0中;
考察C和Fi两个集合,若Wi∈C是Wj∈Fi的前缀或Wi∈Fi是Wj∈C的前缀,则将相应的后缀作为尾随后缀码放在集合Fi+1中;
F=iFi即为码C的尾随后缀集合;
若F中出现了C的元素,则算法终止,返回假(C不是唯一可译码);否则,若F中没有出现新的元素,则返回真。
实验环境
Microsoft visual c++
实验文件
程序代码:
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
using std::vector;
bool recursion(vector<string> c,vector<string> fi);
vector<string> f;
int main() {
int n;
vector<string> c,fj;
string temp;
bool out;
cout << "请输入码字个数:\t";
cin >> n;
cout << endl;
cout << "请输入具体码字:\t(用回车键结束每个码字的输入)" << endl;
for(int i = 0;i < n;i++) {
cin >> temp;
(temp);
(temp);
}
cout << endl;
out = recursion(c,fj);
if(out == false) {
cout << "该码字集合不是唯一可译码!" << endl;
} else {
cout << "该码字集合是唯一可译码!" << endl;
}
return 0;
}
bool recursion(vector<string> c,vector<string> fi) {
string s,s1,s2;
int min;
vector<string> fj;
vector<string>::iterator iter_c,iter_fi,iter_find,iter_fj;
for(iter_c = ();iter_c!=();iter_c++)
{for(ite
信息论实验报告 来自淘豆网m.daumloan.com转载请标明出处.