- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种快速单模式匹配算法设计与实现
一种快速单模式匹配算法的设计与实现
摘 要:基于已有的单模式匹配算法,论文设计了一种改进的快速单模式匹配算法,实现了一个基于DPI技术的下一代防火墙系统,并将改进后的算法应用于该系统。测试发现,新设计的下一代防火墙的性能和功能都得到了优化。
关键词:模式匹配算法;DPI技术;下一代防火墙
中图分类号:TN915.08 文献标识码:C
Design and implementation of a fast single pattern matching algorithm
Abstract: Based on the existing single pattern matching algorithm, a next generation firewall system based on DPI technology is designed and implemented. And the improved algorithm is applied to this system. Tests have found that the performance and functionality of the next generation firewall are optimized.
Key words: pattern matching algorithm; DPI technology; next generation firewall
1 引言
针对KMP算法可保证字符适配后,模式串不回溯,但由于跳转距离较小,算法平均性能较BM算法要低;BMH2C算法具有较大的跳转距离,具有较好的平均性能,但由于不能保证字符适配后模式不回溯,在最坏和较坏的情况下,具有较差的性能,其复杂度为O(mn)。结合二者优点,本文提出一种改进的快速单模式匹配算法――BMH2CKMP算法。通过将该算法应用于下一代防火墙,从而测试该算法的是否有效。
2 BMH2CKMP算法
BMH2CKMP算法结合了KMP算法和BMH2C算法二者的优势,弥补各算法的不足,从而解决既能大幅跳转又无需回溯的问题。
2.1 算法设计思想
KMP算法复杂度为O(n),可保证字符适配后,模式串不回溯,则在最坏情况(模式串位于文本串的末尾处)下,具有较高的性能。但由于跳转距离较小,算法平均性能较BM算法要低。BM算法及其改进算法具有较大的跳转距?x,具有较好的平均性能,但由于不能保证字符适配后模式不回溯,在最坏和较坏的情况下,具有较差的性能,其复杂度为O(mn)。本文结合KMP于BMH2C算法各自的优势提出一种新的单模式匹配算法BMH2CKMP算法。BMH2CKMP算法的设计思想是:
第一步:以BMH2C算法为基础,将其修改为正向匹配;
第二步:预处理对patten串求next数组;
第三步:模式匹配时,若字符失配,则判断跳跃值为正向还是负向。正向则选择跳跃,获取最大位移,负向则查找next数组,挪动j的位置,来强制i不回溯。
2.2 算法描述
在KMP算法中,为了确保在字符失配后,下次匹配时j的位置,引入了next数组,next[j]的值表示P[0...j-1(不含j本身)]中最长的后缀等于前缀的长度。
对于next数组的定义如下:
next[]函数取值如表1所示。
即next[j]=k0时,表示P[0...k-1]=P[j-k,j-1].
因此KMP算法的思想就是:在匹配过程中,若发生不匹配的情况,如果next[j]=0,则目标串的指针i不变,将模式串的指针j移动到next[j]的位置继续进行匹配;若next[j]=-1,则将i右移1位,并将j置0,继续进行比较,复杂度为O(n)。
在BMH2C这个算法中,我们将与模式的最后一个字符相对应的文本字符及其下一个字符作为一个子串,当子串在模式中出现时,则模式向右移,使得该子串与它在模式中最右边的出现对齐;否则,模式右移时,直接跳过这个子串,即右移量为m+1。
由于使用两个字符来决定右移量,所以用二维数组来表示偏移量数组skip[char1][char2],在数组初始化时,第一步就将二维数组的值全部设置为m+1。同时还考虑到一种特殊情况,即当子串S[i]S[i+1]的后一个字符S[i+1]与模式的第一个字符P[0]相同时,虽然子串S[i]S[i+1]不在模式中出现,但如果右移m+1很可能漏掉一种匹配情况,因此只应该右移m,使模式的第一个字符P[0]与子串的后一个字符S[i+1]对齐。因此我们在初始化的第二步就对skip数组的值做了修正,将skip[i][p[0]]置为m。初始化的第三步是为模式串中出
您可能关注的文档
最近下载
- 2025电动航空器电推进系统动力电机技术规范.docx VIP
- DB37╱T 3655-2019 化工园区大气环境风险监控预警系统技术指南(试行).pdf VIP
- 百灵达FLOW-8快速使用说明书.pptx VIP
- 化工园区危险品运输车辆停车场建设标准.pdf VIP
- 《党政机关厉行节约反对浪费条例》专题党课PPT课件模板.pptx VIP
- T/HGJ 10600-2019 烧碱装置安全设计标准.docx VIP
- 最新清晰版ISO50001(中word版).docx VIP
- 临床医学 《门静脉高压症》教学课件.ppt VIP
- 最新:机械通气患者转运课件.pptx VIP
- (高清版)DB44∕T 2598-2024 《省级体育社会团体建设规范》.pdf VIP
文档评论(0)