入侵检测模式匹配算法的研究与改进

入侵检测模式匹配算法的研究与改进

ID:10355604

大小:53.50 KB

页数:3页

时间:2018-07-06

入侵检测模式匹配算法的研究与改进_第1页
入侵检测模式匹配算法的研究与改进_第2页
入侵检测模式匹配算法的研究与改进_第3页
资源描述:

《入侵检测模式匹配算法的研究与改进》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、入侵检测模式匹配算法的研究与改进摘要:网络安全已经成为国家和官方安全的重要组成部分,入侵检测也就变的至关重要。现今大多数入侵检测系统还是采用的基于规则的模式匹配策略,模式匹配算法的好坏直接影响到入侵检测系统的准确性和实时性。提出了一种改进的bm算法,并从改进的意义、原理和实验分析说明了改进算法在匹配效率上的提高。关键词:模式匹配;入侵检测;算法1bm算法研究1977年boyer和moore提出了一种全新的算法,即bm算法。它的特点在于匹配过程中,模式从左向右移动,但字符比较却从右向左进行。其基本算法思想是:(1)匹配从右至左进行。(2)若匹配失败发生在pi≠ti且ti

2、不出现在模式p中,则将模式右移直到pi位于匹配失败位置t的右边第一位(即ti+1位),若ti在p中有若干地方出现,则选择j=max{k

3、pk=ti}即通过skip函数计算文本字符ti失配时模式向右移动的距离,也称坏字符启发。(3)若模式后面k位与文本t中一致的部分有一部分在p中其他地方出现,则可以将p向右移动,直接使这部分对齐,且要求这一部分尽可能大,shift函数通过对已经匹配部分的考查决定模式向右移动的距离,也称好后缀启发。实例分析:第1次匹配:examplehereisasimpleexample第2次匹配(坏字符启发):examplehereisasimple

4、example第3次匹配(坏字符启发):examplehereisasimpleexample第4次匹配(好后缀启发):examplehereisasimpleexample第5次匹配(坏字符启发):examplehereisasimpleexamplebm算法预处理时间复杂度为o(m+s),空间复杂度为o(s),s是与p,t相关的有限字符集长度,搜索阶段时间复杂度为o(mn)。LocALhOSt最坏情况下要进行3n次比较,最好情况下的时间复杂度为o(n/m)。2改进bm匹配算法研究2.1改进的意义综合分析会发现虽然bm算法考虑较全面,但它使用了两个数组,预处理时间开

5、销较大,于是在bm算法基础上我们对其进行了简化,使得算法更简单、高效,提出了一种改进的bm算法。通过实验表明改进的模式匹配算法能减少比较次数,有效地提高了匹配效率。2.2改进的原理在bm算法匹配过程中,常出现模式的一部分后缀与文本匹配,而模式的前缀却不匹配,在这种情况下,就进行了一些不必要的比较。因此在bmgj算法中,我们在对模式串与文本字符串进行匹配时采用从模式两端向中间位置交替的匹配顺序,模式匹配先从模式最右端pm开始进行。若pm匹配不成功,则通过skip函数计算出模式向右移动的距离,这与bm算法中坏字符启发思想相同;若pm匹配成功,则比较模式p1与文本中相应的字

6、符。若p1匹配不成功,则考查文本中与模式中pm下一个字符对齐的字符,若该字符不出现在模式中,则模式可以向右移动m+1个位置,若该字符出现在模式中,则计算其skip函数,然后将模式向右移动相应的长度;若p1匹配成功,则按上述方法依次对pm-1,p2,pm-2,p3,…进行匹配,依此类推,直到匹配过程完成。实例分析:第1次匹配:examplehereisasimpleexample第2次匹配:examplehereisasimpleexample第3次匹配(传统bm算法匹配中,此遍比较需要从右端比较5次才可以找到一个坏字符,但对于改进后的算法,只比较两次就可以找到一个坏字

7、符):examplehereisasimpleexample第4次匹配:examplehereisasimpleexample第5次匹配:examplehereisasimpleexample在上例中,我们可以看出用传统的bm算法匹配共进行了4次移动15次比较,用改进的bm算法匹配共进行了4次移动12次比较,匹配次数减少。改进后的bm算法的预处理时间复杂度为o(m+s),空间复杂度为o(s),搜索阶段时间复杂度为o(mn)。该算法在比较右端字符失配时采用bm坏字符启发的思想,在比较了左端字符失配时采用对文本中与模式最右端对齐的下一个字符进行考查的方法,使得大多数情况下

8、具有比bm算法更大的右移长度,从而有更好的平均性能。2.3改进的实验分析我们所做的实验软件环境主要是:采用的操作系统是microsoftwindowsxpprofessional(servicepack2),使用jbuilder2006编译工具,所用jdk为jdk1.6。为了对各算法的性能进行比较次数和比较用时的测试,我们随机地选取了一段纯英文自然语t文本和模式串p,在同一台计算机上用不同算法进行3万、5万、10万次循环匹配,分别统计各算法循环匹配所进行的字符比较次数和总消耗的时间。文本串:t=onedayonepigorepigscameinand

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。