掌桥专利:专业的专利平台
掌桥专利
首页

一种稀疏后缀数组的生成方法及系统

文献发布时间:2023-06-19 19:33:46


一种稀疏后缀数组的生成方法及系统

技术领域

本发明涉及数据结构构造技术领域,尤其涉及一种稀疏后缀数组的生成方法及系统。

背景技术

在计算机科学中,后缀数组(SuffixArray,SA)是字符串(源文件)所有后缀的排序数组。它是一种用于全文索引的基本数据结构,在数据检索,数据压缩,文献计量学和基因分析中有着广泛的应用。SA典型的使用场景是,对一个查询字符串,找到在源文件中最长的子串匹配。

对于现有的后缀树组SA,标识源文件每个位置需要log

发明内容

针对现有技术中存在的问题,本发明提供一种稀疏后缀数组的生成方法,预先根据一计算终端的内存和一源文件的文件大小配置一预设值;

则所述生成方法包括:

步骤S1,所述计算终端根据所述预设值将所述源文件划分为多个字符串,各所述字符串的长度为所述预设值;

步骤S2,所述计算终端判断所述预设值是否大于一阈值:

若是,则对各所述字符串进行排序得到相应的字符串排序结果,随后转向步骤S3;

若否,则转向步骤S4;

步骤S3,所述计算终端根据预先配置的一映射关系将所述字符串排序结果中对应的各所述字符串分别对应映射为一整数,形成无符号整数数组,随后转向步骤S5;

步骤S4,所述计算终端获取自身的属性参数,并根据所述属性参数判断自身是否为小端计算机:

若否,则分别将各所述字符串转化为整数,形成无符号整数数组,随后转向步骤S5;

若是,则分别将各所述字符串倒序排列得到倒序字符串,并将各所述倒序字符串转化为整数,形成无符号整数数组,随后转向步骤S5;

步骤S5,所述计算终端对所述无符号整数数组进行整数后缀排序得到排序数组,并根据所述预设值对所述排序数组中的各元素进行修正得到所述源文件的稀疏后缀数组。

优选的,所述步骤S1中包括:

步骤S11,所述计算终端由所述源文件中依次选取所述预设值长度的字符对应形成各所述字符串,并统计最后一个所述字符串的字符串长度;

步骤S12,所述计算终端判断所述字符串长度是否达到所述预设值:

若是,则转向所述步骤S2;

若否,则对最后一个所述字符串进行修正,随后转向所述步骤S2。

优选的,所述步骤S12中,对最后一个所述字符串进行修正包括删除最后一个所述字符串,或在最后一个所述字符串后进行补0填充,直至最后一个所述字符串的所述字符串长度达到所述预设值。

优选的,所述阈值为4或8。

优选的,所述步骤S3中,所述映射关系为所述字符串排序结果的先后顺序依次与以0为首项,以1为公差的等差数列中的各所述整数进行对应映射。

优选的,所述步骤S5中,根据所述预设值对所述排序数组中的各元素进行修正为将所述排序数组中的各元素均乘以所述预设值。

本发明提供一种稀疏后缀数组的生成系统,应用上述的生成方法,所述生成系统搭载于一计算终端中,所述生成系统包括:

文件划分模块,用于根据预设值将源文件划分为多个字符串,各所述字符串的长度为预设值;

第一判断模块,连接所述文件划分模块,用于在判断所述预设值大于一阈值时,对各所述字符串进行排序得到相应的字符串排序结果,以及在所述预设值不大于所述预设值时生成一属性判断信号;

第一排序模块,连接所述第一判断模块,用于根据预先配置的一映射关系将所述字符串排序结果中对应的各所述字符串分别对应映射为一整数,形成无符号整数数组;

第二判断模块,连接所述第一判断模块,用于根据所述属性判断信号获取搭载的所述计算终端的属性参数,并根据所述属性参数判断所述计算终端为大端计算机时,分别将各所述字符串转化为整数,形成无符号整数数组,以及判断所述计算终端为小端计算机时,分别将各所述字符串倒序排列得到倒序字符串,并将各所述倒序字符串转化为整数,形成无符号整数数组;

第二排序模块,分别连接所述第一排序模块和所述第二判断模块,用于对所述无符号整数数组进行整数后缀排序得到排序数组,并根据所述预设值对所述排序数组中的各元素进行修正得到所述源文件的稀疏后缀数组。

优选的,所述阈值为4或8。

优选的,所述映射关系为所述字符串排序结果的先后顺序依次与以0为首项,以1为公差的等差数列中的各所述整数进行对应映射。

优选的,所述第二排序模块根据所述预设值对所述排序数组中的各元素进行修正为将所述排序数组中的各元素均乘以所述预设值。

上述技术方案具有如下优点或有益效果:只对每预设值位置开始的源文件后缀数组进行排序,本技术方案的稀疏后缀数组需要的空间则是

附图说明

图1为本发明的较佳的实施例中,一种稀疏后缀数组的生成方法的流程示意图;

图2为本发明的较佳的实施例中,步骤S1的子流程示意图;

图3为本发明的较佳的实施例中,一种稀疏后缀数组的生成系统的结构示意图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。本发明并不限定于该实施方式,只要符合本发明的主旨,则其他实施方式也可以属于本发明的范畴。

本发明的较佳的实施例中,基于现有技术中存在的上述问题,现提供一种稀疏后缀数组的生成方法,预先根据一计算终端的内存和一源文件的文件大小配置一预设值;

如图1所示,则生成方法包括:

步骤S1,计算终端根据预设值将源文件划分为多个字符串,各字符串的长度为预设值;

步骤S2,计算终端判断预设值是否大于一阈值:

若是,则对各字符串进行排序得到相应的字符串排序结果,随后转向步骤S3;

若否,则转向步骤S4;

步骤S3,计算终端根据预先配置的一映射关系将字符串排序结果中对应的各字符串分别对应映射为一整数,形成无符号整数数组,随后转向步骤S5;

步骤S4,计算终端获取自身的属性参数,并根据属性参数判断自身是否为小端计算机:

若否,则分别将各所述字符串转化为整数,形成无符号整数数组,随后转向步骤S5;

若是,则分别将各字符串倒序排列得到倒序字符串,并将各所述倒序字符串转化为整数,形成无符号整数数组,随后转向步骤S5;

步骤S5,计算终端对无符号整数数组进行整数后缀排序得到排序数组,并根据预设值对排序数组中的各元素进行修正得到源文件的稀疏后缀数组。

具体地,以预设值为k为例,本实施例中,只对每k个位置开始的源文件后缀数组进行排序,本技术方案的稀疏后缀数组SSA需要的空间是

进一步具体地,在对源文件进行字符串划分完成后,根据预设值的配置不同,各字符串的长度有所不同,若预设值不大于阈值,则说明字符串较短,可以将每个字符串视为无符号长整数,无需进一步处理,而预设值大于阈值时,则说明字符串较长,无法将其视为无符号长整数,则需要将其依次进行字符串排序以及映射处理,使得排序后的每个字符串分别对应一个整数,最终得到一个无符号整数数组。其中,针对预设值不大于阈值的情况,考虑到大端计算机在进行数据存放时将高位存放在低地址,而小端计算机在进行数据存放时将高位存放在高地址,因此,在将针对小端计算机,需要对各字符串分别进行倒序排列,以确定对应的各字符串真实表示的无符号长整数的数值。

其中,步骤S2中,在预设值大于阈值时,优选使用高位优先基数排序(MSDRadixSort)对各字符串进行字符串排序得到相应的字符串排序结果,高位优先基数排序不仅速度一直名列前茅,使用的空间只有9n/k(k表示预设值,n表示源文件的字节数);而且应对大文件和多核cpu它的表现也非常出色。步骤S5中,可以采用现有的整数后缀排序算法实现对无符号整数数据进行处理到的排序数组,且具体排序算法的实现过程不作为本技术方案的发明点,此处不再赘述。

进一步优选的,本技术方案可以应用于差分算法中,差分算法是增量更新的核心算法,它描述计算新旧版本文件之间的差异,从而大大减少了更新包的大小。它需要从新文件的任意位置起开始匹配老文件,基于此,在差分算法中可以调用本技术方案的稀疏后缀数组的生成方法,以生成老文件的稀疏后缀数组,提升新文件与老文件的匹配效率的同时,对于空间的要求较低,尤其针对数据量比较大的老文件,适用性强。

进一步地,在差分算法中做了大量稀疏后缀数组的实验,发现对于典型值k=4或8,更新包大小的平均增加为~2%和~4%,就是说,使用本技术方案的稀疏后缀比使用全文后缀的查询效果下降的影响是有限的。

本发明的较佳的实施例中,如图2所示,步骤S1中包括:

步骤S11,计算终端由源文件中依次选取预设值长度的字符对应形成各字符串,并统计最后一个字符串的字符串长度;

步骤S12,计算终端判断字符串长度是否达到预设值:

若是,则转向步骤S2;

若否,则对最后一个字符串进行修正,随后转向步骤S2。

本发明的较佳的实施例中,步骤S12中,对最后一个字符串进行修正包括删除最后一个字符串,或在最后一个字符串后进行补0填充,直至最后一个字符串的字符串长度达到预设值。

本发明的较佳的实施例中,阈值为4或8。

本发明的较佳的实施例中,步骤S3中,映射关系为字符串排序结果的先后顺序依次与以0为首项,以1为公差的等差数列中的各整数进行对应映射。

本发明的较佳的实施例中,步骤S5中,根据预设值对排序数组中的各元素进行修正为将排序数组中的各元素均乘以预设值。

本发明提供一种稀疏后缀数组的生成系统,应用上述的生成方法,生成系统搭载于一计算终端中,如图3所示,生成系统包括:

文件划分模块1,用于根据预设值将源文件划分为多个字符串,各字符串的长度为预设值;

第一判断模块2,连接文件划分模块1,用于在判断预设值大于一阈值时,对各字符串进行排序得到相应的字符串排序结果,以及在预设值不大于预设值时生成一属性判断信号;

第一排序模块3,连接第一判断模块2,用于根据预先配置的一映射关系将字符串排序结果中对应的各字符串分别对应映射为一整数,形成无符号整数数组;

第二判断模块4,连接第一判断模块2,用于根据属性判断信号获取搭载的计算终端的属性参数,并根据属性参数判断计算终端为大端计算机时,分别将各字符串转化为整数,形成无符号整数数组,以及判断计算终端为小端计算机时,分别将各字符串倒序排列得到倒序字符串,并将各倒序字符串转化为整数,形成无符号整数数组;

第二排序模块5,分别连接第一排序模块3和第二判断模块4,用于对无符号整数数组进行整数后缀排序得到排序数组,并根据预设值对排序数组中的各元素进行修正得到源文件的稀疏后缀数组。

本发明的较佳的实施例中,阈值为4或8。

本发明的较佳的实施例中,映射关系为字符串排序结果的先后顺序依次与以0为首项,以1为公差的等差数列中的各整数进行对应映射。

本发明的较佳的实施例中,第二排序模块5根据预设值对排序数组中的各元素进行修正为将排序数组中的各元素均乘以预设值。

以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。

相关技术
  • 一种采用后缀数组索引的海量小文件查询方法及系统
  • 一种面向重定位的稀疏化三维点云地图生成方法
  • 一种基于稀疏线性方法的云服务个性推荐系统及方法
  • 一种工作日记的生成方法、监理日志的生成方法及系统
  • 一种完全空间基线VLBI系统的稀疏测量方法
  • 一种基于隐马尔科夫模型和稀疏表示的分形图案生成方法及系统
  • 一种从多个微博中自动生成信息丰富的内容的系统和方法,每个微博仅包含稀疏信息
技术分类

06120115953495