[发明专利]基于后缀数组的字符串快速匹配方法有效
申请号: | 201810398497.5 | 申请日: | 2018-04-28 |
公开(公告)号: | CN108920483B | 公开(公告)日: | 2022-02-01 |
发明(设计)人: | 路松峰 | 申请(专利权)人: | 南京搜文信息技术有限公司 |
主分类号: | G06F16/903 | 分类号: | G06F16/903 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210000 江苏省南京*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 后缀 数组 字符串 快速 匹配 方法 | ||
本发明提供了一种基于后缀数组的字符串快速匹配方法。该方法包括两个阶段,第一个阶段首先利用二分查找将模式串在文本串中的出现位置限定在以模式串的首字符为起始字符的后缀数组可能存在的区间内;第二个阶段再在这个区间上进一步限定查找条件,排除长度小于模式串以及末位字符与模式串末位字符不同的后缀,以减少字符的比较次数同时缩小了字符串匹配的范围,进而快速地得到模式串在文本串中的出现位置。
技术领域
本发明涉及计算机技术领域下的自然语言处理技术领域。尤其涉及一种文本中时间信息的处理方法。
背景技术
字符串匹配又叫模式匹配,是广泛应用于信息检索、入侵检测、计算生物学、搜索引擎、数据压缩等领域的一项关键技术。所谓模式匹配问题,指的是查找某个特定模式串P=p1p2…pm在文本串T=t1t2…tn中的所有出现位置及出现的次数。根据研究领域和研究对象的不同,模式匹配问题可以分为大致分为以下四种:精确字符串匹配、扩展字符串匹配、正则表达式匹配和近似字符串匹配。后缀数组是一个有序的整型数组,是字符串处理中的有力工具,并以其实现简单,空间占用量小等优点而比后缀树更为实用。
给定一个长度为n的字符串T=t1t2…tn,位置i上文本记作T[i]=ti,后缀是指从某个位置i开始到整个串结尾的一个特殊子串,即为T[i,n]=titi+1…tn,亦表示为Suffix(i)。后缀数组SA是一个一维整型数组,保存了1到n的某个排列SA[1],SA[2],…SA[n],并且保证Suffix(SA[i])Suffix(SA[i+1]),其中in。相对于传统的字符串匹配方法而言,基于后缀数组的模式匹配方法是另一种解决字符串匹配问题的思路。现有的基于后缀数组的字符串匹配方法,一般通过对后缀数组进行两次折半查找来确定模式串在文本串中的出现位置。在将模式串与文本串中子串进行匹配的过程中,现有方法直接对整个模式串进行匹配,这样对于字符串中前缀相同而后缀不同、后缀相同而前缀不同的情况而言,会造成大量无效的字符比较,增加了匹配时间。
在中国发明专利说明书CN 2201410725893.6中公开了一种文本序列数据中快速查找特征字符串的方法,在查找过程中在后缀数组中搜索时通过二分查找进行分解,按照后缀矩阵的行数,每行进行查找,若某个字段在二分查找的结果集中出现了指定次数之后,通过计算两个字段的相似度,最接近的字段就认为是个候选字段。但是该发明没有利用后缀数组文本的特征来减少字符串匹配时间。
在中国发明专利说明书CN 201410368238.X中公开了一种基于后缀数组的模糊串联重复序列识别方法,在CN 201710224648.0中公开了一种基于后缀数组的短信查找方法及系统,与本发明的目的及方法都不相似。
发明内容
本发明所要解决的技术问题是现有的基于后缀数字的字符串匹配方法搜索效率不高的问题,提出一种基于后缀数组的字符串快速匹配方法,即快速找到模式P在文本T中出现的次数。
为实现上述目的,本发明提供了一种基于后缀数组的字符串快速匹配方法,该方法包括如下步骤:
1)建立关于文本串T的后缀数组SA,然后再对后缀数组SA进行二分查找将模式串P在文本串T中的出现位置限定在以模式串P的首字符为起始字符的后缀数组区间内[sp,ep],其中sp表示文本串T中与模式串P首字符相同的后缀的可能的起始位置,ep表示文本串T中与模式串P首字符相同的后缀的可能结束的位置;
2)在步骤1)所得到的区间上排除长度小于模式串P以及末位字符与模式串P末位字符不同的后缀,进而得到模式串P在文本串T中的出现位置。
进一步地,所述步骤1)包括如下步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京搜文信息技术有限公司,未经南京搜文信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810398497.5/2.html,转载请声明来源钻瓜专利网。