精华内容
下载资源
问答
  • 2021-04-24 19:20:37

    一种快速判断非唯一可译码的方法

    一种快速判断非唯一可译码的方法

    邢楠, 朱虹, 梁秀梅, 侯浩录

    (西安理工大学 自动化与信息工程学院, 西安 710048)

    : 本文介绍了一种 速判断非唯一可译码的方法, 该方法针对现存判别唯一可译码的

    方法( 即: 根据异前缀码来进行判断的方法以及 A. A. Sardinas和 G. W. patterson判断法)所存

    在的不确定性大运算量等问题, 提出一种方法对非唯一可译码作出准确判断该方法具有判

    别简单, 运算量小等特点, 可以广泛应用于非唯一可译码的判断该方法对于通信信息论方

    面的研究具有一定的意义

    : 唯一可译码; 克劳夫特不等式; 异前缀码; A. A. Sardinas和 G. W. Patterson判断法

    : TN911 : A : 100383 9( 008) 0 00 903

    A FastApproach to D iscrmi inate TheNon- unique Decodable Code

    X ING N an, ZHU Hong, LIANG X iumei, HOU Haolu

    (X i an University of Technology, The Faculty of Au tom ation and Inform ation Engineering, X i an, 710048, China)

    A bstract: This paper proposes a fast approach to discrmi inate the non - unique decodable code.

    D iffering from tw o existingm ethods about this academ ic issue, namely the approach basing on unu

    sual prefix code and theA. A. Sardinas and G. W. Patterson d iscrmi ination algorithm, the approach

    in this paper discrmi inates the non- un ique decodable code exactly. It solves some of the problem s

    of the prior tw omethods, such as uncertainty andmass calcu lationw ork. Th ismethod requ ires small

    amount of calcu lation and is easy to be employed, and therefore it is w idely app licable to the d is

    crmi ination of non- un ique decodable code. Th is paper to some extend provides contribution to the

    research on commun ications and inform ation theory.

    K ey words: un ique decodable code; kraft inequality; unusual prefix cond ition code; A. A. Sard inas

    and G. W. Patterson discrmi ination algorithm

    1 引 言 , K raft

    , : D

    ,

    C = {C , C , , C } , C ( i =

    更多相关内容
  • matlab 判断唯一可译码

    2015-04-09 23:15:22
    本网站资源中的判断唯一可译码的matlab代码有一定错误,最近学习唯一可译码。上传该m文件,未进一步优化。但是可用的。matlab是R2011a版
  • 唯一可译码python实现

    2018-04-26 12:39:55
    惟一可译码判断使用python实现,使用的是信息论与编码的判断算法,Fi,Fi+1前后缀判断算法实现
  • 唯一可译码判别方法

    2011-11-18 14:45:33
    唯一可译码 判别的 matlab源程序 信息论作业
  • 唯一可译码的辨别 C语言实现,因为用的动态分配,所以编码的长度基本可以无限长
  • 慕前端131612#include #include #include #include using...#defineISSAME 0#defineISPREFIX 1#defineNOTPREFIX 2#define ISUDC0 //唯一可译码#define ISRTC 1 //即时码#define NOTUDC2 //非唯一可译码typedef vecto...

    49c1c3150d0537f8f0447daee947f0d4.png

    慕前端131612

    #include #include #include #include using namespace std;#define ISSAME 0#define ISPREFIX 1#define NOTPREFIX 2#define ISUDC 0 //唯一可译码#define ISRTC 1 //即时码#define NOTUDC 2 //非唯一可译码typedef vector pCharVector;/**************************************************************************//* 判断chPrefix是否为chWord的前缀.*//**************************************************************************/int IsPrefix(const char* chPrefix,const char* chWord);/**************************************************************************//* 往后缀码集合中插入不重复的键,*//*************************************************************************/bool PushBackUniqueValue(pCharVector& pCode,char* pValue);/**************************************************************************//* 判断码字序列的类型,非回溯法*//**************************************************************************/int IsUDC(const pCharVector& pCode);/**************************************************************************//* 回溯计算,如果不是唯一可译码则可以得到一串有歧义的码字序列(即有多种译法的/* 序列),该序列用参数中的pInvalidSeqBuf返回,调用者需记得释放内存/* 该方法的缺点是没有检测码字序列中是否有重复码字*//**************************************************************************/int IsUDC_Backtrace(const pCharVector& pCode,char** pInvalidSeqBuf);//#define TEST_BY_FILEint main(){#ifdef TEST_BY_FILEfreopen("in","r",stdin);#endifpCharVector VCode;int nCodeNum;int i;char chContinue;do{cout<>nCodeNum;cout<>strBuffer;//copy字符到动态数组中已进行比较char* pTemp = new char[strBuffer.size() + 1];memcpy(pTemp,strBuffer.c_str(),sizeof(char) * (strBuffer.size() + 1));VCode.push_back(pTemp);}char * pRetn = NULL;int nRetn = IsUDC_Backtrace(VCode,&pRetn);if (NOTUDC != nRetn){cout<>chContinue;} while(toupper(chContinue) == 'Y');#ifdef TEST_BY_FILEfclose(stdin);#endifreturn 0;}int IsPrefix(const char* chPrefix,const char* chWord){assert(chPrefix != NULL && chWord != NULL);int nLenPrefix,nLenWord;nLenPrefix = strlen(chPrefix);nLenWord = strlen(chWord);//前缀长度大于整个词的长度,返回falseif (nLenPrefix > nLenWord){return NOTPREFIX;}int nRetn = memcmp(chPrefix,chWord,sizeof(char) * strlen(chPrefix));if(0 == nRetn && nLenPrefix == nLenWord) return ISSAME;if(0 == nRetn) return ISPREFIX;return NOTPREFIX;}bool PushBackUniqueValue(pCharVector& pCode,char* pValue){assert(pValue != NULL);for (int i = 0; i < pCode.size(); i++){if (0 == strcmp(pValue,pCode[i])) //有重复,直接返回return false;}pCode.push_back(pValue);return true;}int IsUDC(const pCharVector& pCode){assert(pCode.size() != 0);//用于存放后缀码pCharVector CodePostfix;//第一轮比较,码字内部比较,得到第一个后缀码集合char *iter1,*iter2;int i,j;for (i = 0; i < pCode.size(); i++){iter1 = pCode.at(i);for (j = 0; j < pCode.size(); j++){//不比较自身if(i == j) continue;iter2 = pCode.at(j);int nRetn = IsPrefix(iter1,iter2);if(ISSAME == nRetn) return NOTUDC;if (ISPREFIX == nRetn){//将iter2的后缀填入CodePostfixPushBackUniqueValue(CodePostfix,iter2+strlen(iter1));}}}if(CodePostfix.size() == 0) return ISRTC;//第二轮比较,比较后缀码集合中是否含有码字集合中的元素//有则返回NOTUDC,如果后缀码集合中没有再出现新元素了表明该码字是//UDC//指向当前集合在整个后缀码集合中的位置,也即是//前面所有后缀码的个数int nPointer = CodePostfix.size();//指向当前集合的大小int nNewAssembleSize = nPointer;do{nPointer = CodePostfix.size();for (i = 0; i < pCode.size(); i++){iter1 = pCode.at(i);for (j = nPointer - nNewAssembleSize; j < nPointer; j++){iter2 = CodePostfix.at(j);int nRetn = IsPrefix(iter1,iter2);if (nRetn == ISSAME){cout<

    展开全文
  • 在的不确定性、大运算童等问题,提出一种方法对非唯一可译码作出准确判断。该方法具有判 别简单,运算量小等特点,可以广泛应用于非唯一可译码判断。该方法对于通信、信息论方 面的研究具有一定的意义。
  • #include#includevoidmain(){chara[100][10],F[100][5];...printf("输入你要判断的码组个数:\n");Scanf("%d",&N);printf("输入你要判断的码组:\n");for(i=0;iscanf("%s",a[i]);printf("输入的码是...

    #include

    #include

    void main()

    {

    char a[100][10],F[100][5];

    int i,j,k,t,T,s1,s2,s3,s4,N;

    int n=0,m=0;

    printf("输入你要判断的码组个数:\n");

    Scanf("%d",&N);

    printf("输入你要判断的码组:\n");

    for(i=0;i

    scanf("%s",a[i]);

    printf("输入的码是:\n");

    for(i=0;i

    {

    printf("%s\n",a[i]);

    }

    for(i=0;i

    {

    for(j=1;j

    {

    s1=strlen(a[i]);

    s2=strlen(a[j]);

    if(s1>s2)

    {

    for(k=0;k

    {

    if(a[i][k]==a[j][k])

    {

    k++;

    if(a[j][k]='\0')

    {

    for(k=strlen(a[j]);k

    {

    F[n][m++]=a[i][k];

    }

    n++;

    }

    }

    else k=strlen(a[j]);

    }

    }

    else

    { if(s1

    {

    for(k=0;k

    {

    if(a[i][k]==a[j][k])

    k++;

    if(a[i][k]='\0')

    {

    for(k=strlen(a[i]);k

    {

    F[n][m++]=a[j][k];

    }

    n++;

    }

    else k=strlen(a[i]);

    }

    }

    else continue;

    }

    }

    t=n;break;

    }

    for(i=0;i

    {

    for(n=0;n

    {

    s3=strlen(a[i]);

    s4=strlen(F[n]);

    if(s3>s4)

    {

    for(k=0;k

    {

    if(a[i][k]==F[n][k])

    {

    k++;

    if(F[n][k]='\0')

    {

    for(k=strlen(F[n]);k

    {

    F[t][m++]=a[i][k];

    }

    T++;

    }

    }

    else k=strlen(F[n]);

    }

    }

    else

    { if(s3

    {

    for(k=0;k

    {

    if(a[i][k]==F[n][k])

    k++;

    if(a[i][k]='\0')

    {

    for(k=strlen(a[i]);k

    {

    F[t][m++]=a[i][k];

    }

    t++;

    }

    else k=strlen(a[i]);

    }

    }

    else continue;

    }

    }

    T=t;break;

    }

    for(i=0;i

    {

    for(n=0;n

    {

    if(strcmp(a[i],F[n])==1)

    printf("不是唯一可译码");

    else

    printf("是唯一可译码");

    }

    }

    }

    编码得按由短到长输入

    展开全文
  • 学习信息论时的作业,利用信息论中判别唯一可译码的简单方法,使用Python对输入的码字进行判断是否为唯一可译码,并输出判断结果和尾随后缀集F。
  • 吉林大学通信工程学院信息论作业-唯一可译码判断,自己写的测试程序,供大家下载。
  • c++实现唯一可译码判别 信息论

    千次阅读 2019-11-09 20:41:43
    用递归算法实现 #include #include #include #include using namespace std; set <string> s;...bool cheak(string f,int ch,string c[],int n){ ... cout这不是唯一可译码"; } return 0; }

    用递归算法实现

    #include<iostream>
    #include<stack>
    #include<set>
    #include<string>
    using namespace std;
    
    set <string> s;
    bool y=true;
    bool cheak(string f,int ch,string c[],int n){
    	if(y==false){
    		return y;
    	}
    	string a,b;
    	for(int i=0;i<n;i++){
    		if(c[i]==f&&(ch<0||(ch>=0&&ch!=i))){ 
    			y=false;
    			return y;
    		}else if(c[i]==f&&ch==i){
    			continue;
    		}else if(c[i].length()>f.length()){
    			a=c[i];
    			b=f;
    		}else{
    			b=c[i];
    			a=f;
    		}
    		a.erase(0,b.length());
    		if(s.find(a)==s.end()&&a.length()!=0){
    			cout<<a<<" ";
    				s.insert(a);
    				cheak(a,-1,c,n);
    			}
    	}
    	return y;
    }
    int main(){
    	int n;
    	cout<<"码字个数:";
    	cin>>n;
    	cout<<"请依次输入"<<n<<"个码字"<<endl; 
    	string c[n];在这里插入图片描述
    	for(int k=0;k<n;k++){
    		cin>>c[k];
    	}
    	cout<<"F集为:"; 
    	bool a=true;
    	for(int i=0;i<n;i++){
    		if(y==false)
    		{
    			break;
    		}
    		cheak(c[i],i,c,n);
    	}
    	if(y){
    		cout<<endl<<"这是唯一可译码";
    	}else{
    		cout<<endl<<"这不是唯一可译码";
    	}
    	return 0;
    }
    
    
    

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 唯一可译码判定代码

    2014-04-15 13:24:23
    这个唯一可译码写的不够简便,但经过测试能够满足对一串码字的唯一可译的判定这样的需求。代码很好理解。适合初学者
  • 唯一可译码的判别.doc

    2021-03-16 12:10:48
    唯一可译码的判别信息论与编码技术课程设计(论文)设计(论文)题目唯一可译码的判别管理科学学院专业名称信息与计算科学学生姓名曹昌杰学生学号201307020102指导教师乐千桤设计(论文)成绩教务处 制2015 年 12 月 12 日...
  • 唯一可译码

    2013-01-07 16:14:56
    唯一可译码的判断的c++实现,对唯一可译码判断并输出
  • 唯一可译码判定 编程实现唯一可译码判定 c
  • 已知:信源符号个数q,码字集合C; 输入:任意码字个数C与每个具体的码字在程序具体运行时从键盘输入; 输出:判别结果(是否唯一可译码
  • 实验2: 唯一可译码判决准则一、实验目的1.进一步熟悉唯一可译码判决准则;2.掌握C语言字符串处理程序的设计和调试技术。二、实验要求和注意事项1.输入:任意的一个码字集合。码字个数和每个具体的码字在运行时从...
  • 唯一可译码/单义代码

    千次阅读 2015-06-19 23:35:00
    单义代码/唯一可译码 Uniquely decodable code 对多个码字(w1,w2,...wn)任意组合成的序列再进行分割,只能唯一地分割成一个个码字. 单义代码不需要同步码 synchronous code 例如: 码字集1:{1,10...
  • 唯一可译码判定源码

    2013-12-17 14:18:17
    一个图像化界面下完成对信息编码中唯一可译码的判定
  • C++实现唯一可译码判断.....VC++运行!
  • [求助]唯一可译码判决准则问题//这个程序有什么问题?那位大哥能把他变成c语言版的唯一可译码判决准则:已知:信源符号个数,码字集合C。算法:1. 考查 中所有的码字,若 是 的前缀,则将相应的后缀作为一个尾后缀...
  • 唯一可译码判决准则

    千次阅读 2016-06-18 22:10:41
    熟悉唯一可译码判决准则; 掌握C语言字符串处理程序的设计和调试技术; 实验要求 已知:信源符号个数r、码字集合C。 输入:任意的一个码。码字个数和每个具体的码字在运行时从键盘输入 输出:判决(是唯一可译码...
  • 信息论实验-唯一可译码判决准则

    万次阅读 2017-08-22 11:46:46
    实验目的熟悉唯一可译码判决准则。 掌握C语言字符串处理程序的设计和调试技术实验要求已知:信源符号个数r、码字集合C。 输入:任意的一个码。码字个数和每个具体的码字在运行时从键盘输入 输出:判决(是唯一可...
  • 编程实现唯一可译码的判决准则―――Sardinas-Patterson算法 随便给出一组码字,即可判断其是否可译。而且能够输出其全部的后缀集合。 代码为绝对原创,故分值设定有点高,望谅解。不过资源你绝对会满意的。
  • 唯一可译码的判决算法实验(UDC) 使用A. A. Sardinas 和G. W. Patterson 设计的判断法进行判断,具体流程(见流程图Fig. 1)如下: 1. 输入原始数据,并用ArrayList()类存储起来; 2. 在使用规则之前,...
  • [求助]唯一可译码判决准则问题(java转化为c)求助]唯一可译码判决准则问题//这个程序有什么问题?那位大哥能把他变成c语言版的唯一可译码判决准则:已知:信源符号个数,码字集合C。算法:1. 考查 中所有的码字,若 ...
  • 用C++实现唯一可译码的判别,运行程序后,手动输入待判别的序列,即可判断出是否是唯一可译码
  • 唯一可译码判断 要求: 1能输入和显示输入的一组码; 2能对输入的码按码长排序; 3能输出所有码字所形成的尾随后缀的集合F; 4能判断这组码是不是唯一可译码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,438
精华内容 1,775
关键字:

唯一可译码的判断方法