[发明专利]一种后缀数组和最长公共前缀的正确性验证方法及系统有效

专利信息
申请号: 201710183737.5 申请日: 2017-03-24
公开(公告)号: CN107015952B 公开(公告)日: 2020-08-18
发明(设计)人: 韩凌波;农革;吴裔 申请(专利权)人: 广东顺德中山大学卡内基梅隆大学国际联合研究院;中山大学
主分类号: G06F40/194 分类号: G06F40/194
代理公司: 广州粤高专利商标代理有限公司 44102 代理人: 林丽明
地址: 528300 广东省佛山市顺德区大良*** 国省代码: 广东;44
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 后缀 数组 最长 公共 前缀 正确性 验证 方法 系统
【权利要求书】:

1.一种后缀数组和最长公共前缀的正确性验证方法,其特征在于,包括:

从右向左扫描一遍T,按照后缀类型定义比较字符T[i]及其后继字符T[i+1]的大小,计算T的字符T[i]和后缀suf(T,i)的类型,记录于t[i]中;

将SA1和LCPA1中的元素初始化为-1,从左到右扫描一遍SA,根据数组t找出SA中所有LMS后缀及其LCP值,分别依次记录在SA1和LCPA1中;

根据字符串T、数组t、SA1和LCPA1,对SA1中相邻LMS后缀及其LCP值进行正确性验证;

根据字符串T、数组t、B、C、SA1和LCPA1,归纳排序T的L型后缀及其LCP值;

根据字符串T、数组t、B、C、SA1和LCPA1,归纳排序T的S型后缀及其LCP值;

顺序扫描SA、SA1、LCPA和LCPA1一次,比较SA与SA1和LCPA与LCPA1是否相同,如果两组比较全部相同则T的SA和LCPA正确,否则错误;

根据字符串T、数组t、SA1和LCPA1,对SA1中相邻LMS后缀及其LCP值进行正确性验证,包括:

计算FP(SA1[i],SA1[i]+LCPA1[i+1]-1)的指纹值,其中i∈[0,n1-2],并保存字符T[SA1[i]+LCPA1[i+1]];

计算FP(SA1[j],SA1[j]+LCPA1[j]-1)的指纹值,其中j∈[1,n1-1],并保存字符T[SA1[j]+LCPA1[j]];

逐次将指纹值FP(SA1[i],SA1[i]+LCPA1[i+1]-1)与FP(SA1[j],SA1[j]+LCPA1[j]-1)和字符T[SA1[i]+LCPA1[i+1]]与T[SA1[j]+LCPA1[j]]进行比较,如果指纹值相同且字符不同,说明LMS后缀及其LCP值正确。

2.根据权利要求1所述的后缀数组和最长公共前缀的正确性验证方法,其特征在于,根据字符串T、数组t、B、C、SA1和LCPA1,归纳排序T的L型后缀及其LCP值,包括:

计算SA1中各字符桶的结束位置,保存在B数组中;从右向左扫描SA1,如果当前元素SA1[i]为-1,则继续扫描1下一个元素,否则将SA1[i]保存至SA1中B[T[SA1[i]]]所指向的位置,同时将LCPA1[i]保存至LCPA1中B[T[SA1[i]]]所指向的位置,然后将SA1[i]字符桶的结束位置左移一步,将B[T[SA1[i]]]更新为B[T[SA[i]]]-1,最后将SA1[i]和LCPA1[i]设置为-1;

其中,SA1和LCPA1都是整型数组,分别保存了有序的LMS后缀及其LCP值,SA1与LCPA1的元素之间存在一一对应的关系;由于LMS后缀个数小于n,SA1和LCP1数组中只有部分空间有数据,其余空间的元素为-1,在从右向左扫描过程中,如果SA1元素不为-1,则将该元素填入SA1中对应字符桶的尾部,同时将该元素置为-1,该元素对应的LCPA1中的值也执行相同的移动和修改操作;

计算SA1中各字符桶的开始位置,保存在B数组中,从左向右扫描SA1,如果当前元素SA1[i]在T中的前继T[SA1[i]-1]为S型或SA1[i]为-1,继续扫描下一个,否则将SA1[i]-1保存在SA1中B[T[SA1[i]-1]]指向的位置;接着计算SA1[B[T[SA1[i]-1]]]与其左侧最近的非-1元素SA1[j](0≤j<B[T[SA1[i]-1]])的LCP值,如果两者指向的T中的字符不同则LCPA1[B[T[SA1[i]-1]]]=0,如果两者指向的T中的字符和字符类型都相同则LCPA1[B[T[SA1[i]-1]]]=C[T[SA1[i]-1]]+1;最后将B[T[SA1[i]-1]]更新为B[T[SA1[i]-1]]+1,即指向T[SA1[i]-1]字符桶的后一个位置;

其中,C数组保存的是当前元素SA1[i]与其左侧非-1元素SA1[k](k∈[0,i-1])的最长公共前缀,即LCPA1在区间[k+1,i]的RMQ值,其中k满足条件是:

T[SA1[k]-1]与T[SA1[i]-1]相同,且在SA1的区间[k+1,i-1]中,没有元素在T中的前缀字符与T[SA1[i]-1]相同。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东顺德中山大学卡内基梅隆大学国际联合研究院;中山大学,未经广东顺德中山大学卡内基梅隆大学国际联合研究院;中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201710183737.5/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top