[发明专利]一种字符串检索方法有效
申请号: | 202110860647.1 | 申请日: | 2021-07-28 |
公开(公告)号: | CN113590895B | 公开(公告)日: | 2023-04-25 |
发明(设计)人: | 周明胜;孔明明;裴峥;邓彬彬;姜高雨馨 | 申请(专利权)人: | 西华大学 |
主分类号: | G06F16/903 | 分类号: | G06F16/903 |
代理公司: | 成都弘毅天承知识产权代理有限公司 51230 | 代理人: | 孟仕杰 |
地址: | 610036 四川省*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 字符串 检索 方法 | ||
本发明涉及计算机信息处理领域,具体是一种字符串检索方法,包括如下步骤:步骤1、获取模式串中的特征对;步骤2、获取记录模式串与目标串进行匹配的优化顺序PNext数组;步骤3、获取记录模式串在目标串中跳跃匹配距离的TNext数组和FNext数组;步骤4、模式串在目标串中进行从左到右匹配时,如果对应字符适配,根据步骤2事先获得的匹配顺序依次进行匹配,如果对应字符失配,根据步骤3事先获取的记录数组进行跳跃。解决了字符串检索过程中,一旦发生失配,无法快速获取较大的跳跃距离,而导致检索过程中频繁回溯的问题,并提升了检索效率。
技术领域
本发明涉及计算机信息处理领域,具体是指一种字符串检索方法。
背景技术
字符串检索是计算机领域的经典问题,在信息检索、病毒检测、基因序列匹配等许多场景都有着重要应用,现有字符串检索主要有精确检索和模糊检索。
自1977年,Boyer-Moore和Knuth-Morris-Pratt分别提出BM算法和KMP算法以来,精确检索算法受到许多学者的持续跟踪,KMP算法在传统朴素算法的基础上,提出了一种避免目标串回溯的方法,从而使算法效率有了一定程度的提高;BM算法采用由后往前匹配并且根据坏字符与好后缀获得较大的跳跃距离,将检索效率提升到次线性时间复杂度,也就是实际检索次数小于目标串长度;1980年,Boyer Moore Horspool在BM算法的基础上进行了改进提出BMH算法,BMH它不再像BM算法关注失配的字符,它的关注点在坏字符上,根据这个字符在模式串中出现的最后的位置算出偏移长度,否则偏移模式串的长度;此外,还出现了Karp-Rabin以及BM算法的诸多变体等;1990年Daniel M.Sunday在坏字符的思想的基础上提出Sunday算法,将字符串检索效率提升到一个新的高度。
但是现有技术依然存在一个问题,即匹配过程中存在无效匹配,一旦发生失配,则无法快速获取足够大的跳跃距离,从而增加了检索过程中的频繁回溯。
发明内容
基于以上问题,本发明提供了一种字符串检索方法,解决了字符串检索过程中,一旦发生失配,无法快速获取跳跃距离,从而增加了检索过程中的频繁回溯的问题。
为解决以上技术问题,本发明采用的技术方案如下:
一种字符串检索方法,包括如下步骤:
步骤1、获取模式串中的特征对;
步骤2、获取记录模式串与目标串进行匹配的优化顺序PNext数组;
步骤3、获取记录模式串在目标串中跳跃匹配距离的TNext数组和FNext数组;
步骤4、模式串在目标串中进行从左到右匹配时,如果对应字符适配,根据步骤2事先获得的匹配顺序依次进行匹配,如果对应字符失配,根据步骤3事先获取的记录数组进行跳跃匹配。
进一步,所述步骤1中,特征对为模式串中出现次数最多的字符对,特征对的个数不少于2,特征对左边的字符称为特征前序,右边的字符称为特征后序,特征前序与特征后序是两个互不相同的字符。将模式串中所有特征对从右至左进行编号,编号从1开始,即最右边的特征对为第一特征对,如果次数最多的字符对有不止1个,选取它们中最右边的字符对作为特征对。获取方法具体如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西华大学,未经西华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110860647.1/2.html,转载请声明来源钻瓜专利网。