[发明专利]一种基于Sunday算法的字符搜索方法有效
申请号: | 201710375615.6 | 申请日: | 2017-05-24 |
公开(公告)号: | CN107220333B | 公开(公告)日: | 2020-01-31 |
发明(设计)人: | 刘小垒;张小松;牛伟纳;胡斌;王中晴 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F16/903 | 分类号: | G06F16/903 |
代理公司: | 51230 成都弘毅天承知识产权代理有限公司 | 代理人: | 徐金琼;刘东 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 文本 匹配 匹配成功 模式串 算法 计算机软件应用 文本字符串 程序结束 匹配效率 文本模式 移动文本 字符搜索 减小 成功 | ||
本发明属于计算机软件应用领域,公开了一种基于Sunday算法的字符搜索方法。通过判断文本窗口的末位和文本窗口外的下一位字符的组合是否出现在模式串中,来对模式串和文本模式串进行匹配,若匹配成功,程序结束;若匹配不成功,则移动文本窗口,继续利用上述的方法进行判断,直到文本窗口到达文本字符串的末端或者匹配成功,程序才会结束;利用此方法,可有效的减小原算法的无效匹配次数,提升文本的匹配效率。
技术领域
本发明涉及字符搜索,特别是一种基于Sunday算法的字符搜索方法,用于计算机网络领域中对字符进行搜索。
背景技术
字符串是计算机科学中常见的基本概念,搜索问题也是计算机科学中的基本问题。随着互联网的日渐庞大,信息也是越来越多,如何在海量的信息中快速查找自己所要的信息是网络搜索研究的热点所在;在这其中,字符串匹配算法起着非常重要的作用,一个高效的字符串匹配算法,可以极大的提高搜索的效率和质量。字符串匹配在网络领域有着广泛的应用。比如,拼写检查、语言翻译、数据压缩、搜索引擎、网络入侵检测等。
现有的常见的字符串匹配算法有Brute force、KMP、Boyer Moore、Sunday、robin_karp和bitap等。其中,Sunday算法是平均效率较高的一种匹配方案。
Sunday算法是Daniel M.Sunday于1990年提出的一种字符串模式匹配算法。其核心思想是:在匹配过程中,模式串并不被要求一定要按从左向右进行比较还是从右向左进行比较,它在发现不匹配时,算法能跳过尽可能多的字符以进行下一步的匹配,从而提高了匹配效率。
Sunday算法思想跟BM算法很相似,在匹配失败时关注的是文本串中参加匹配的最末位字符的下一位字符。如果该字符没有在匹配串中出现则直接跳过,即移动步长=匹配串长度+1;否则,同BM算法一样其移动步长=匹配串中最右端的该字符到末尾的距离+1。
Sunday算法在模式串很长的时候(很多实际应用中,模式串都会很长),文本窗口外下一个字符在模式串中出现的概率会很高,这样会增加很多无效匹配,由此Sunday算法的效率会显著降低。
发明内容
基于以上技术问题,本发明提供了一种基于Sunday算法的字符搜索方法,从而解决了在字符搜索中产生很多无效匹配的技术问题。
本发明的技术方案如下:
一种基于Sunday算法的字符搜索方法,包括以下步骤:
步骤1:利用模式串中相邻两字符的信息构建辅助数组,所述模式串为待匹配的字符串;
步骤2:文本窗口与文本字符串左对齐,所述文本字符串为待搜索文本,所述文本窗口在所述文本字符串上滑动;利用所述辅助数组判断所述文本窗口内最后两个字符是否在模式串中出现;若未出现,跳转到步骤4;若出现,则将模式串中出现的字符与所述最后两个字符对齐,判断模式串与文本字符串对应位置上的字符是否匹配,若匹配,则匹配成功程序结束;若不匹配,则跳转到步骤3;
步骤3:采用Sunday算法进行下一次的匹配和跳转,若采用Sunday算法匹配成功,则程序结束;若采用Sunday算法匹配失败,则判断Sunday算法跳转的长度是否超过文本窗口的长度,若超过文本窗口长度,则跳转到步骤4;若未超过文本窗口长度,则重复步骤3;
步骤4:文本窗口向右移动J个字符长度,将文本窗口中的末位字符和文本窗外与所述末位字符相邻的字符作为组合字符,利用辅助数组判断所述组合字符是否在模式串中出现;若出现,跳转到步骤5;若未出现,判断文本窗口是否超出文本字符串,若超出,则匹配失败程序结束;若未超出,重复步骤4的内容;其中模式串的长度和文本窗口的长度均为J个字符长度;
步骤5:模式串中出现的字符与所述组合字符对齐,判断模式串与文本字符串对应位置上的字符是否匹配;若匹配则匹配成功程序结束;若不匹配,跳转到步骤3。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710375615.6/2.html,转载请声明来源钻瓜专利网。