System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 序列数据编码方法及装置、字符串运算方法、设备及介质制造方法及图纸_技高网

序列数据编码方法及装置、字符串运算方法、设备及介质制造方法及图纸

技术编号:41380797 阅读:4 留言:0更新日期:2024-05-20 10:22
本申请实施例提供一种序列数据编码方法及装置、字符串运算方法、设备及介质,所述方法包括:获取待编码的序列数据;其中,所述序列数据包括成批字符和/或成批字符串;将所述序列数据中重复频率符合设定要求的字符和/或子字符串作为数据编码单元,确定数据编码单元类型及各数据编码单元对应的频率并生成共用编码头;所述共用编码头内信息包括所述数据编码单元类型和各数据编码单元的频率;根据所述共用编码头对所述序列数据以所述数据编码单元为最小数据单元进行熵编码,得到所述序列数据对应的编码结果数据;对所述共用编码头进行独立存储,将所述编码结果数据与所述共用编码头进行关联存储。

【技术实现步骤摘要】

本申请涉及数据编码,尤其是涉及一种基于熵编码的序列数据编码方法及装置、基于编码数据的字符串运算方法、计算机设备及计算机可读存储介质。


技术介绍

1、信息论(information theory)是研究信息传输过程的理论。信息需要根据传输方法,进行编码,然后才能在该传输框架下表示该信息,进而实现信息的传递。将传递过来的每个字符按传输顺序记录下来,就实现了信息的储存。

2、根据香农在信源编码定理中提出的信息熵,可以使用字符频率计算最小信息量(信息熵),然后将最小信息量作为理论的最小编码方案,即编码过程的压缩极限,如下公式1所示:

3、

4、其中,h(x)是信息熵,p(x)是信息(字符)x的频率,x是某一个信息,χ是所有信息的集合。根据公式1,熵编码法是基于字符集频率调整分配给字符的储存空间,h(x)是信息x的理论压缩极限的编码方法。目前已知的熵编码法包括霍夫曼编码、算术编码、范围编码、非对称ans系列如rans、tans等编码法。

5、然而,目前已知的压缩算法对数据编码的设计,均是针对数据按照先后顺序进行分块,并进行分块压缩,因此,编码压缩后的数据,如果需要访问同一数据块内的一部分数据,需要将数据块为整体解压,然后才能从解压结果中截取需要的部分。由于计算资源有限,大部分软件选择将输入数据分块处理,解压时每块作为一个整体解压。随着it应用广泛铺开,大数据时代,需要在内存中处理的数据不断增加。计算机行业提供了普适性的解决方案,增加内存。一方面硬件技术发展使内存单位体积的容量更大,另一方面通过联网可以让多台计算机分担访存需求。然而,对于特定的一些
,如生物信息领域,通过增加内存或计算机数量来解决数据空间占用的问题并不适合行业发展要求,在有限的硬件条件下,为了适应数据规模的增长,解决内存中数据的压缩同时减少空间占用问题成为迫切的需求。

6、信息除了通过编码被传输,信息本身也需要被描述出来。在算法信息论(algorithmic information theory)中有算法熵的概念,即柯氏复杂性(solomonoff–kolmogorov–chaitin complexity)。而其中的柴廷不完全定理(chaitin'sincompleteness theorem)证明了无法计算出信息的最小算法熵。例如,数字97,用汉语表示时是三个汉字:九十七,对应的数字是”9,10,7”;用法语表示时是四个单词:quatre-vingt-dix-sept,对应的数字是”4,20,10,7”。假设人们不懂数学,就只能知道法语比汉语多用了一个字/单词,而不能想到其实自然数最本质的信息就是数字有多大,97在十进制下是(9,7)10,在十六进制下是(6,1)16,在二进制下是(1,1,0,0,0,0,1)2。在熵编码方法下,按照自然数在信息串中的比例分配字符集频率,例如计算得到应该用8种字符来编码自然数。那就将97以八进制形式编码为(1,4,1)8,即141。解码时发现只有8种字符表示自然数,而且最开始约定了涉及自然数时字符集必须包括所有自然数用到的数字,那么,就可以得知该字符集编码的自然数都是8进制数。至于还原,从信息论角度,是将收到的信息按照汉语习惯再次编码,按顺序显示编码结果。显然,八进制的自然数按照汉语习惯应该以十进制编码,即编码为97,从而还原。

7、自然数由于信息种类单一,我们可以得到其最小算法熵及对应的表示规则。但对通用字符串,人类还没有计算理论表示规则压缩极限的方法。目前对文本字符串,可以使用字典压缩。即先统计文本中的各种规律,例如:重复出现、嵌套出现、回文序列、关联出现(如数字与“茶”之间出现的词通常是“杯”)。然后把这些规律用对应的指令记录下来,例如:前面的2个字按顺序重复写5遍;前面10到20的字在这里再写1遍,然后把前面15个字符,颠倒顺序后再写1遍;为前面2个字(“三茶”)补充预设的量词(预设规则:汉语的量词出现在这两个字之间,“茶”前面的量词是“杯”)。举例中阿拉伯数字为指令的参数,小括号内的内容是对指令的额外注解。由于无法计算理论极限,所以应该用多少指令,怎么设计指令,只能用测试数据不断尝试。

8、完整的字典压缩在实际应用中比较少见,常见的是把重复出现的单个字符或字符串通过记录重复次数进行压缩。目前已知的压缩算法对字典压缩,都是独立设计的。即输入数据先按照字典压缩处理,如果编码后数据显著变少,就将字典压缩的结果作为熵编码压缩的输入。为了维持字典压缩的灵活性,目前没有发现有软件将字典压缩弱化然后合并入熵编码体系。虽然字典压缩产生的数据都可以用熵编码进行编码传递与记录,但字典编码的执行过程与后面的熵编码是完全独立的。


技术实现思路

1、为解决现有存在的技术问题,本申请实施例提供一种能够减小储存空间占用的基于熵编码的序列数据编码方法及装置、基于编码数据的字符串运算方法、计算机设备及计算机可读存储介质。

2、为达到上述目的,本申请实施例的技术方案是这样实现的:

3、第一方面,本申请实施例提供一种基于熵编码的序列数据编码方法,包括:

4、获取待编码的序列数据;其中,所述序列数据包括成批字符和/或成批字符串;

5、将所述序列数据中重复频率符合设定要求的字符和/或子字符串作为数据编码单元,确定数据编码单元类型及各数据编码单元对应的频率并生成共用编码头;所述共用编码头内信息包括所述数据编码单元类型和各数据编码单元的频率;

6、根据所述共用编码头对所述序列数据以所述数据编码单元为最小数据单元进行熵编码,得到所述序列数据对应的编码结果数据;

7、对所述共用编码头进行独立存储,将所述编码结果数据与所述共用编码头进行关联存储。

8、第二方面,本申请实施例提供一种基于编码数据的字符串运算方法,所述编码数据为采用本申请任一实施例所述的基于熵编码的序列数据编码方法对成批字符串进行编码后得到的编码数据;所述字符串运算方法包括:

9、判断待运算字符串的对应共用编码头是否相同;

10、若相同,则基于所述待运算字符串对应的编码数据进行字符串运算;所述字符串运算包括如下之一:对所述待运算字符串进行排序;对所述待运算字符串的大小进行比较;对所述待运算字符串进行检索;

11、若不同,则基于所述待运算字符串的对应共用编码头,对所述待运算字符串的编码数据解码后进行字符串运算。

12、第三方面,本申请实施例提供一种基于熵编码的序列数据编码装置,包括:

13、获取模块,用于获取待编码的序列数据;其中,所述序列数据包括成批字符和/或成批字符串;

14、编码头模块,用于将所述序列数据中重复频率符合设定要求的字符和/或子字符串作为数据编码单元,确定数据编码单元类型及各数据编码单元对应的频率并生成共用编码头;所述共用编码头内信息包括所述数据编码单元类型和各数据编码单元的频率;

15、编码模块,用于根据所述共用编码头对所述本文档来自技高网...

【技术保护点】

1.一种基于熵编码的序列数据编码方法,其特征在于,包括:

2.如权利要求1所述的序列数据编码方法,其特征在于,所述序列数据包括成批字符串;根据所述共用编码头对所述序列数据以所述数据编码单元为最小数据单元进行熵编码,得到所述序列数据对应的编码结果数据,包括:

3.如权利要求2所述的序列数据编码方法,其特征在于,对所述共用编码头进行独立存储,将所述编码结果数据与所述共用编码头进行关联存储,包括:

4.如权利要求1所述的序列数据编码方法,其特征在于,所述待编码的序列数据包括成批字符串;

5.如权利要求1所述的序列数据编码方法,其特征在于,还包括:

6.如权利要求5所述的序列数据编码方法,其特征在于,所述获取外来字符串,包括:

7.如权利要求1所述的序列数据编码方法,其特征在于,所述共用编码头内包括多个空位;所述方法还包括:

8.如权利要求7所述的序列数据编码方法,其特征在于,所述共用编码头还包括为当前已有的所述数据编码单元分配第一比例的总频率,并为当前包含的空位预留第二比例的待分配频率,所述第一比例和所述第二比例的和为1。

9.如权利要求8所述的序列数据编码方法,其特征在于,所述对所述新序列数据中重复频率符合设定要求的字符和/或子字符串进行统计,确定未出现过的字符和/或子字符串作为新数据编码单元之后,还包括:

10.如权利要求9所述的序列数据编码方法,其特征在于,所述新建一个所述共用编码头,包括:

11.如权利要求7所述的序列数据编码方法,其特征在于,所述对所述新序列数据中重复频率符合设定要求的字符和/或子字符串进行统计,确定未出现过的字符和/或子字符串作为新数据编码单元之后,还包括:

12.如权利要求9或11所述的序列数据编码方法,其特征在于,所述字符串的数量为n;所述共用编码头的数量为m,所述序列数据的所述编码结果数据的数量为n,分别与所述字符串一一对应,其中,1≤m<n。

13.如权利要求1所述的序列数据编码方法,其特征在于,所述将所述序列数据中重复频率符合设定要求的字符和/或子字符串作为数据编码单元,确定数据编码单元类型及各数据编码单元对应的频率并生成共用编码头,包括:

14.如权利要求13所述的序列数据编码方法,其特征在于,所述确定数据编码单元类型及各数据编码单元对应的频率并生成共用编码头,还包括:

15.一种基于编码数据的字符串运算方法,其特征在于,所述编码数据为采用如权利要求1至14中任一项所述的基于熵编码的序列数据编码方法对成批字符串进行编码后得到的编码数据;所述字符串运算方法包括:

16.如权利要求15所述的字符串运算方法,其特征在于,还包括:

17.一种基于熵编码的序列数据编码装置,其特征在于,包括:

18.一种计算机设备,其特征在于,包括处理器及与所述处理器连接的存储器,所述存储器上存储有可被所述处理器执行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至14中任一项所述的基于熵编码的序列数据编码方法、或执行如权利要求15或16所述的基于编码数据的字符串运算方法。

19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至14中任一项所述的基于熵编码的序列数据编码方法、或执行如权利要求15或16所述的基于编码数据的字符串运算方法。

...

【技术特征摘要】

1.一种基于熵编码的序列数据编码方法,其特征在于,包括:

2.如权利要求1所述的序列数据编码方法,其特征在于,所述序列数据包括成批字符串;根据所述共用编码头对所述序列数据以所述数据编码单元为最小数据单元进行熵编码,得到所述序列数据对应的编码结果数据,包括:

3.如权利要求2所述的序列数据编码方法,其特征在于,对所述共用编码头进行独立存储,将所述编码结果数据与所述共用编码头进行关联存储,包括:

4.如权利要求1所述的序列数据编码方法,其特征在于,所述待编码的序列数据包括成批字符串;

5.如权利要求1所述的序列数据编码方法,其特征在于,还包括:

6.如权利要求5所述的序列数据编码方法,其特征在于,所述获取外来字符串,包括:

7.如权利要求1所述的序列数据编码方法,其特征在于,所述共用编码头内包括多个空位;所述方法还包括:

8.如权利要求7所述的序列数据编码方法,其特征在于,所述共用编码头还包括为当前已有的所述数据编码单元分配第一比例的总频率,并为当前包含的空位预留第二比例的待分配频率,所述第一比例和所述第二比例的和为1。

9.如权利要求8所述的序列数据编码方法,其特征在于,所述对所述新序列数据中重复频率符合设定要求的字符和/或子字符串进行统计,确定未出现过的字符和/或子字符串作为新数据编码单元之后,还包括:

10.如权利要求9所述的序列数据编码方法,其特征在于,所述新建一个所述共用编码头,包括:

11.如权利要求7所述的序列数据编码方法,其特征在于,所述对所述新序列数据中重复频率符合设定要求的字符和/或子字符串进行统计,确定未出现过的字符和/或子字符串作为新数据编...

【专利技术属性】
技术研发人员:胡雪松王谷丰赵陆洋
申请(专利权)人:深圳赛陆医疗科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1