[发明专利]基于KMP匹配算法的字符串快速匹配方法在审

专利信息
申请号: 201911120073.3 申请日: 2019-11-15
公开(公告)号: CN110909214A 公开(公告)日: 2020-03-24
发明(设计)人: 冯驰;蔡翔;陈清萍;毛峰;吴丽莎;陈山;李超;夏雨潇 申请(专利权)人: 国网安徽省电力有限公司安庆供电公司
主分类号: G06F16/903 分类号: G06F16/903
代理公司: 上海精晟知识产权代理有限公司 31253 代理人: 孙永智
地址: 246000 *** 国省代码: 安徽;34
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 kmp 匹配 算法 字符串 快速 方法
【说明书】:

发明公开了基于KMP匹配算法的字符串快速匹配方法,涉及数据处理技术领域。本发明包括将模式串最后一个字符x与文本串进行匹配;若字符x匹配失败;采用坏字符规则移动;若字符x匹配时;采用模式串前缀与文本串比较,若模式串前缀与文本串同配,则字符串找到;若失配,则根据KMP算法得到模式串右移的距离使模式串在新位置进行一下轮的匹配。本发明通过将模式串最后一个字符x与文本串进行匹配;若字符x匹配失败;采用坏字符规则移动;若字符x匹配时;采用模式串前缀与文本串比较;降低字符匹配时间复杂度,提高匹配效率。

技术领域

本发明属于数据处理技术领域,特别是涉及一种基于KMP匹配算法的字符串快速匹配方法。

背景技术

字符串匹配阵是数字处理过程中的基本问题,实际上是字符的模式匹配,即在给定的文本串中找出与模式串匹配的子串的起始位置。最基本的串匹配问题是关键词匹配;所谓关键词匹配,是指给定一个长为n的文本串T[1,n]和长为m的模式串P[1,m],找出文本串T中与模式串所有精确匹配的子串的起始位置。

常见的字符匹配算法包括BF算法;BF算法思想是从文本串的第一个字符开始和模式串进行匹配;若匹配成功,则继续比较后面的字符;否则文本串指针回溯到后一个位置从第二个字符开始和模式串第一个字符进行匹配。依此下去,直到和模式串匹配成功或到文本串的末尾为止。它的时间复杂度一般情况下为O((n-m+1)m)其中:n和m分别为主串和模式串的长度,最坏的情况下为O(m*n),最好的情况下为O(m+n);基于BF算法的时间复杂度明显较高,字符匹配效率较低。

KMP模式匹配算法针对BF算法做了改进;其基本思想是:设计一个与模式串本身局部匹配信息构造的模式值数组next,当匹配过程中出现失配时,利用模式值将模式串向右“滑动”尽可能远的一段距离了,从而跳过一些不必要的比较以提高模式匹配的效率。例如:对给出的的文本串T[0,n-1]与模式串P[0,m-1],假设在模式匹配的进程中,执行T[i]和P[j]的匹配检查;若T[i]=P[j],则继续检查T[i+1]和P[j+1]是否匹配;若T[i]≠P[j],则分成两种情况:若j=0,则模式串右移一位,检查T[i+1]和P[0]是否匹配;若1≤j<m,则模式串右移j-next(j)位,检查T[i]和P[next(j)]是否匹配。重复此过程直到j=m-1或i=n-1结束;该算法的时间复杂度为O(m+n)。

而BM算法包含两个并行的规则,坏字符规则和好后缀规则,这两种规则的目的就是让模式串在失配时,向右移动尽可能大的距离;设文本串为T[0,n-1],模式串为P[0,m-1],坏字符规则:即是在文本串T与模式串P从右向左匹配过程中,主串中的字符x与P[j]位置字符不匹配,如果这个字符x在模式串P[0,j]中没有出现,直接跳过P[0,j]如果x在P[0,j]中出现,移动P使x字符对齐。好后缀规则:当出现不匹配字符时,已有部分字符P[j,m-1]匹配成功,如果P[j,m-1]在P[0,j]的某位置k(k<j)也出现,且P[k-1]≠P[j-1],则将P[k-1]移到P[j-1]位置;如果P[j,m-1]在P[0,j]没有出现,则找到与P[j,m-1]的后缀相同的最长前缀,移动P使之对齐。BM进行模式匹配时,将文本串T与模式串P进行左对齐,然后进行从右向左比较,一旦发现不匹配,通过查询预处理好的坏字符移动表与好后缀移动表,选择移动距离较大值向后移动模式串P,再进行下一轮匹配尝试。BM算法预处理阶段时间复杂度为O(m+s)(s为与模式串P和文本串T相关的有限字符集长度),搜索阶段的时间复杂度为O(mn)。

进行搜索实践时,常常遇到一部分前缀匹配而后缀却不匹配,或后缀匹配而前缀不匹配的情况,这就进行了许多次不必要的比较。因此,亟需一种时间复杂度低的字符串匹配方法,以解决现有字符匹配时间复杂度高、效率低的问题。

发明内容

本发明的目的在于提供基于KMP匹配算法的字符串快速匹配方法,通过将模式串最后一个字符x与文本串进行匹配;若字符x匹配失败;采用坏字符规则移动;若字符x匹配时;采用模式串前缀与文本串比较;降低字符匹配时间复杂度,提高匹配效率。

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

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国网安徽省电力有限公司安庆供电公司,未经国网安徽省电力有限公司安庆供电公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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