[发明专利]一种后缀数组的正确性验证方法及系统有效
申请号: | 201710183201.3 | 申请日: | 2017-03-24 |
公开(公告)号: | CN107015951B | 公开(公告)日: | 2020-08-18 |
发明(设计)人: | 韩凌波;农革;徐文涛 | 申请(专利权)人: | 广东顺德中山大学卡内基梅隆大学国际联合研究院;中山大学 |
主分类号: | G06F40/194 | 分类号: | G06F40/194 |
代理公司: | 广州粤高专利商标代理有限公司 44102 | 代理人: | 林丽明 |
地址: | 528300 广东省佛山市顺德区大良*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 后缀 数组 正确性 验证 方法 系统 | ||
本发明涉及一种后缀数组的正确性验证方法和系统,所述方法包括:从右向左扫描一遍T,按照后缀类型的定义比较当前扫描的字符T[i]与后继字符T[i+1]的大小,计算T的字符T[i]和suf(T,i)的类型,记录于t[i]中;从左向右扫描一遍T,找出其中所有LMS字符出现的位置,从而获取所有LMS子串的首字符指针,用数组P1来记录;根据数组P1、B和SA,使用归纳排序的方法对T的LMS子串进行排序,结果保存在数组SA1;从左向右扫描SA,如果SA[i]为LMS类型,将SA[i]保存至SA1中;判断T1中的字符是否唯一,若是则直接根据T1的名字计算出SA1,且用SA1更新C数组;根据T1和SA1归纳计算T的后缀数组SA,计算过程中使用C数组验证SA的正确性,如果SA正确,用SA更新C数组。
技术领域
本发明涉及后缀数组的验证领域,更具体地,涉及一种后缀数组的正确性验证方法及系统。
背景技术
后缀数组是指可以在更小的空间内实现等同后缀树的数据结构,是后缀树的紧凑型替代,广泛应用于字符串处理、生物信息检索、数据压缩和模式匹配等诸多领域。任意给定一个字符串,从其中的任意位置开始至其结尾的所有字符组成的字符子串称为字符串的后缀(suffix)。显然,长度为n的字符串包含n个后缀,对这n个后缀按字典顺序排序,将其地址保存在一个整型数组中,该数组则称为字符串的后缀数组。
现有的后缀数组正确性验证方法是在后缀数组构造完成以后,执行两轮整数排序来验证后缀数组的正确性。随着数据集规模的不断增长,后缀数组的正确性验证时间甚至会超过构造时间,现有的验证方法已经不再完全适用。
发明内容
本发明为克服上述现有技术所述的至少一种缺陷,提供一种后缀数组的正确性验证方法及系统。
本发明旨在至少在一定程度上解决上述技术问题。
为了达到上述技术效果,本发明的技术方案如下:
一种后缀数组的正确性验证方法,包括:从右向左扫描一遍T,按照后缀类型的定义比较当前扫描的字符T[i]与后继字符T[i+1]的大小,计算T的字符T[i]和suf(T,i)的类型,记录于t[i]中;从左向右扫描一遍T,找出其中所有LMS字符出现的位置,从而获取所有LMS子串的首字符指针,用数组P1来记录;根据数组P1、B和SA,使用归纳排序的方法对T的LMS子串进行排序,结果保存在数组SA1;从左向右扫描SA,如果SA[i]为LMS类型,将SA[i]保存至SA1中;判断T1中的字符是否唯一。若是则直接根据T1的名字计算出SA1,且用SA1更新C数组;根据T1和SA1归纳计算T的后缀数组SA,计算过程中使用C数组验证SA的正确性,如果SA正确,用SA更新C数组;其中C数组保存的是当前递归层已有序的LMS后缀地址。
优选地,根据数组P1、B和SA,使用归纳排序的方法对T的LMS子串进行排序,结果保存在数组SA1的步骤包括:初始化SA所有元素的值为-1。计算SA中各字符桶的结束位置,保存在数组B。从右向左扫描P1,将P1的值保存至SA中B[T[P1[i]]]指向的位置,将B[T[P1[i]]]更新为B[T[P1[i]]]-1。扫描结束后,SA中各字符桶尾部记录了T中相同LMS字符的地址;计算SA中各字符桶的开始位置,保存在数组B。从左向右扫描SA一次,如果当前扫描到的元素SA[i]的值为-1或在T中的前继T[SA[i]-1]的类型是S类型,则继续扫描下一个元素,否则将SA[i]-1保存至SA中B[T[SA[i]-1]]所指向的位置,然后将B[T[SA[i]-1]]更新为B[T[SA[i]-1]]+1;计算SA中各字符桶的结束位置,保存在数组B。从右向左扫描SA,判断当前元素SA[i]在T中的前继T[SA[i]-1]是否是L型,若是则继续扫描下一个元素,否则将SA[i]-1保存至SA中B[T[SA[i]-1]]所指向的位置,然后将B[T[SA[i]-1]]更新为B[T[SA[i]-1]]-1。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东顺德中山大学卡内基梅隆大学国际联合研究院;中山大学,未经广东顺德中山大学卡内基梅隆大学国际联合研究院;中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710183201.3/2.html,转载请声明来源钻瓜专利网。