当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于QS的字符串匹配改进算法

串匹配问题是计算机科学领域研究中的一个焦点问题,它在诸多非数值处理方面都有着非常广泛的应用。串匹配就是在一个大的正文T中搜索指定模式P的所有出现位置。按照功能,串匹配算法主要分为三类:精确串匹配算法、近似串匹配算法和正则表达式算法。其中,最有影响的是KMP算法、BM算法、RK随机算法和SUANDAY算法以及由此而产生的一些改进算法。在实际应用中,这些算法都各有千秋,各有侧重。

1  BM和QC算法分析

字符串匹配问题描述:

1.1 BM算法

BM是由Boyer和Moore于1977年提出的,它是一种简单、快速、通用的工程算法。它的特点是在窗口内部从右向左逆向匹配,采用坏字符启发和好后缀启发两种方法,通过预处理模式分别计算BadcharShift[char]和GoodSufShift[char]转移表。当发现不匹配时,选择两者中的最大值作为模式向右移动的距离。

BM算法的预处理分为坏字符转移表和好后缀转移表。

坏字符移动表记录的是字符char在模式串P中的最右出现位置。具体表述为:

BM算法的空间复杂度和预处理时间均为O(m+σ)。在最坏情况下,它的时间复杂度为O(nm);在最好情况下,时间复杂度为O(n/m)。

从理论上讲,BM算法的时间复杂度要大大高于KMP算法的时间复杂度O(m+n),但在实际应用中,BM算法的搜索步长接近于模式长度m,所以执行效率非常高。

1.2 QS算法

QS算法是一种简单、快速、实用的算法。在模式匹配过程中,该算法将发生失配的字符与计算右移量两者独立开来的现象,其仅利用T[i+m]字符计算BadcharShift[T[i+m]]来决定模式转移。通常情况下,模式转移量为m+1,这大大提高了算法的搜索步长和匹配效率。

QS算法的预处理与BM算法的对坏字符启发的预处理相同。

QS算法的匹配过程如下:

QS算法的空间复杂度和预处理时间均为O(m+σ)。在最坏情况下,它的时间复杂度为O(mn);在最好情况下,时间复杂度为O(n/m+1)。

QS算法利用了失配情况下T[i+m]字符引起的Badchar-

Shift[T[i+m]]使其编码简单且调试迅速。通常情况下,QS算法比BM算法要快,但是当T[i+m-1]不在模式中,而T[i+m]在模式中时,QS算法的效率就会大打折扣。

2  新算法

2.1 算法基本思想及步骤

本文在上述分析的基础上,充分挖掘了其潜在可利用的隐含信息,进一步优化和完善了QS算法。在预处理方面,新算法与QS算法基本相同,不同的是当模式在当前模式匹配窗口内自右向左匹配正文的过程中发生失配时,比较正文中T[i+m]和T[i+m-1]这两个字符的移动距离,取其最大值进行移动,然后在新位置重新开始模式匹配。图1为一个新算法匹配过程示例。
 

新算法的匹配过程如下:

新算法在QS算法的基础上,充分利用了失配时T[i+m-1]和T[i+m]两个字符引起的移动距离的最大值,使得移动距离增大,减少了模式匹配的比较次数。通常情况下,新算法的时间复杂度为O(n/m+1)。

2.2 性能测试

针对本文提出的新算法,从参考文献[1]中抽取chapter 32 STring Matching中第一段内容作为测试正文,并在同样的软硬件环境下对BF、BM、QS和新算法进行比较,以检测新算法在性能和效率方面的表现。表1为各种算法性能比较结果。

测试正文:

Finding all occurrences of a pattern in a text is a problem that arises frequently in text editing programs.Typically,the text is a document being edited,and the pattern searched for is a particular word supplied by the user.Efficiedt algorithms for this problem can greatly aid the respONsiveness of the test editing program.String matching algorithms are also used,for example,to search for particular patterns in DNA sequences.

搜索模式:the pattern searched

由表1可知:新算法是一种比较次数少、耗时小、效率高的快速字符串匹配算法。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

慕尼黑2025年9月8日 /美通社/ -- 2025年9月8日德国国际汽车及智慧出行博览会(IAA MOBILITY)于慕尼黑开幕,广汽携旗下五款新能源明星车型亮相,正式发布未来移动出行的"广汽方案&...

关键字: 慕尼黑 广汽 汽车 移动

慕尼黑2025年9月8日 /美通社/ -- 2025年9月8日德国国际汽车及智慧出行博览会(IAA MOBILITY)于慕尼黑开幕,广汽携旗下五款新能源明星车型亮相,正式发布未来移动出行的"广汽方案"...

关键字: 广汽 IO AI 移动

多数受访粉丝认为,AI驱动的功能会对他们观看体育赛事的方式产生重大影响 超过半数的受访者希望通过AI技术获得对过去、现在和未来体育赛事的评论和分析 移动体育应用...

关键字: IBM AI 应用程序 移动

中科闻歌投资创奇思 共同推动中国AI技术出海 引领香港AI生态再迈新台阶 香港2025年8月15日 /美通社/ -- 全球领先的互联网社区创建者 - 网龙网络控股有限公司...

关键字: 移动 AI BSP AI技术

上海2025年8月6日 /美通社/ -- 2025年世界机器人大会(WRC)将于8月8-12日在北京举行,今年主题为"让机器人更智慧,让具身体更智能",这场汇聚全球1500余件展品的行业盛会,将成为展...

关键字: 机器人 移动 晶圆 协作机器人

在C语言编程中,字符串处理是基础操作,但传统库函数如strcat()因缺乏内存边界检查而成为安全漏洞的温床。根据MITRE的CWE数据库统计,缓冲区溢出漏洞中有超过30%源于不安全的字符串操作。本文将设计一个安全增强的字...

关键字: 字符串 strcat C语言

玩美 AI API:助力中国品牌无缝对接全球市场的 AI美妆 与 AI图像增强利器 上海 2025年7月14日 /美通社/ -- 全球领先的增强现实(AR)和人工智能(AI)美妆科技领导者——玩美移动(纽交所代码...

关键字: API 移动 生成式AI 开发者

产能扩充 + 共址协同 + 智能制造 = 持续增长 美国密西根州奥本山和中国柳州 2025年7月15日 /美通社/ -- 今日,耐世特汽车系统在中国柳州举行智能制造新工厂...

关键字: 线控 汽车系统 移动 运动控制技术

数秒内实现逼真的全身穿搭换装,提升消费者购买信心并推动线上转化 上海 2025年7月1日 /美通社/ -- 全球领先的增强现实(AR)和人工智能(AI)美妆科技领导者 —— 玩美移动(纽交所代码:PERF)宣布推...

关键字: API 移动 RF 生成式AI

上海 2025年6月23日 /美通社/ -- 6月18日,以"汇聚・连接・创造"为主题的世界移动通信大会(MWC 2025)在上海盛大开幕,吸引全球100余国家和数万名行业领袖、技术专家与生态伙伴共...

关键字: 安全芯片 电子 移动 GSMA
关闭