- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
KMP算法分析算法设计
KMP算法分析
王法金
(安徽中医学院,医药信息工程学院,安徽 合肥 230031))
摘 要:随依靠软件来检测,是越来越显得力不从心。伴随着FPGA技术的发展,在硬件上实现模式匹配,来提高网络数据处理速度的需求越来越普遍。把搜索算法固化到FPGA里,从而可以大大提高算法的速度,适应科技的迅速发展。
综合考虑现有的比较成熟的模式匹配算法,并且追踪国外基于FPGA技术来实现模式匹配的研究成果,认为在硬件实现方面,KMP算法效率较高,结构简单,可行性强,而且易于对主串进行多模式的匹配,所以选其作为模式匹配硬件模块的核心算法,通过硬线逻辑来进一步提高串模式匹配的效率。本文KMP算法程序设计部分主要分为三个部分:模式串输入、next函数的计算、字符串的匹配。着网络技术的迅猛发展,所要检测的数据包越来越多,通过上网和查阅相关文献,我了解到如果单纯的
关键词:模式匹配算法;;
中图分类号:T 文献标识码:A 文章编号:1003-5060(2009)10-0000-0Hefei 230031, China)
Abstract:This part of KMP Algorithm Programming is divided into three parts: the pattern string entered, next function calculation, string matching.
Key words:Pattern matching algorithm;;引 言
1.1 模式匹配定义
字符串的模式匹配问题的形式化定义如下:
在字符集Σ上,给定一个长度为N的文本字符串T[1…N],以及一个长度为M的模式 字符串Pi[1…M]。模式集数量用k来表示,模式集用P={pl,p2…,pk}来表示。如果对于l=S=N,存在T[S+1…S+M]=Pi[1…M],则模式Pi在文本T的位置S处出现,即模式与文本匹配。字符串的模式匹配问题就是要寻找P在T中是否出现,以及出现的位置。
1.2单模式匹配
KMP算法是Knuth等人在BF算法的基础上提出来的。从本质上讲,KMP算法就是出现不匹配情况下带有智能指针初始化的BF算法。为了在不匹配时重新定位指针,KMP算法需要进行预处理算出一个Shift表来。
基本思想:KMP算法利用已匹配成功部分的信息,即前缀(模式字符串中存在的相同子串),可以使模式字符串向前推进若干个字符位置,而不只是一个字符,避免了重复比较,同时也实现了文本字符串指针的无回溯。要点是:我们能够通过预先对模式的分析获得知识,即如果在模式的位置l或2匹配失败则移动1个位置,如果在模式的位置3匹配失败则移动2个位置,如果在模式的位置4匹配失败则移动3个位置,以此类推。
算法描述[9]:
当模式匹配执行到比较字符Ti和Pi,其中l=i=n,l=j=m。
(1)若Ti=Pj则继续往右作匹配检测,即对Ti+1和Pj+l;进行匹配检测。
(2)若Ti≠Pj时则分两种情况进行讨论:
第一种情况:若j=l,则对Ti+l和Pi进行匹配检测,即把模式和正文向右移动一位再从模式的第一个字符进行匹配。
第二种情况:若lj=m,我们将试图在模式中找到一个合适位置再进行比较,我们把这个下标记做next[j]。执行Ti和next[j]的匹配,其中next[j]的构造是算法的核心,约定如下:
Next[j]=-1,当j=0时
Next[j]=max{k|0kj且“P0 P1…Pk-1”=“Pj-k Pj-k+1…Pj-1”}此集合不为空集
Next[j]=0,其他情况
由于本文主讲的是KMP算法,估计我们举例详细说明,如主串为ababcabcacbab,模式串为abcac,匹配过程如下图2-1:
图2-1
一般情况下,假设主串为s0s1…sn-1,模式串为p0p1…pm-1,从上例的分析可知,为了实现改进算法,需要解决下述问题:当匹配过程中产生“失配”(即si≠pj)时,模式串“向右滑动”可行的距离有多远,换句话说,当主串中字符Si与模式中字符Pj “失配”(即比较不等)时,主串中字符Si(i指针不回溯)应与模式中哪个字符再比较?
假设此时主串中字符Si应与模式中字符Pk(k<j)继续比较,则模式中字符Pk前面k个字符的子串必须满足下列关系式(f-1),且不存在k>k满足下列关系式p0p1…pk-1 = si-ksi-k+1…si-1 (f-1)
图2-2
图2-2模式串与主串的对应关系一
当主串中字符Si与模式中字符Pj “失配”时,已经得到的“部分”匹配结果是:
pj-kpj-k+1…pj-1=si-ksi-k+1…s
您可能关注的文档
最近下载
- 医院室外管网景观绿化施工组织设计概述.doc VIP
- NB∕T 11080-2023 光伏组件电致发光(EL)检测技术规范.pdf
- FLNG丙烷预冷双氮膨胀天然气液化工艺及动态特性研究.pdf
- 三、案例分析题(共5题,(一)、(二)、(三)题各20分,(四)、(五)题各30分)(一.doc VIP
- 2024智慧矿山矿用车辆自动驾驶协同作业系统第5部分:测试方法及要求.docx VIP
- 商铺推广合同协议.docx VIP
- 心脏起搏器ppt课件完整版.pptx VIP
- 大型球铁铸件浇冒口设计原理.pdf VIP
- 医院室外管网景观绿化施工组织设计.pdf VIP
- 牛津译林版八年级英语下册1-8单元单词默写表.pdf VIP
文档评论(0)