电子发烧友App

硬声App

扫码添加小助手

加入工程师交流群

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子论文>移动通信技术论文>改进的AC-BM字符串匹配算法

改进的AC-BM字符串匹配算法

2008-12-10 | rar | 333 | 次下载 | 3积分

资料介绍

提出了改进的AC-BM算法,将待匹配的字符串集合转换为一个类似于Aho-Corasick算法的树状有限状态自动机。匹配时,采取自后向前的方法,并借用BM算法的坏字符跳转和好前缀跳转技术。改进的AC-BM算法借助BMH算法思想,取消了原AC-BM算法的好前缀跳转,并对坏字符跳转部分的计算进行优化。新算法修改了skip的计算方法,不再保留每个节点的好前缀跳转参数及坏字符跳转参数,因此匹配只与当前匹配字符有关,而与当前节点无关,可以实现大小写正文的识别。
关 键 词 算法; 字符串匹配; 内容分析; 入侵检测

Abstract ACBM is a Boyer-Moore like algorithm applied to a set of keywords held in an Aho-Corassick like keyword tree that overlays common prefixes of the keywords. The algorithm takes the best characteristics of both the Boyer-Moore and Aho-Corasick. Based on the idea of Boyer-Moore-Horspool, we make an improvement to AC-BM algorithm. In the improved version, the Good Prefix Shift is not performed, the Bad Character Shift function is improved, the Goto procedure is also modified which do not keep the parameters of Good Prefix Shift and Bad Character Shift.
Key words algorithm; string matching; content analysis; intrusion detection
字符串匹配是指在文本Textt=t1t2…tn中检索子串Patp=p1p2…pm的所有出现。字符串匹配可分为单字符串匹配和字符串集合匹配两种。单字符串匹配算法最著名的是KMP(Knuth-Morris-Pratt)算法和BM(Boyer-Moore)算法。KMP算法实现了无回溯匹配,字符串中的每个字符只匹配一次,时间复杂度为O(n+m)[1];BM算法采用跳跃方式,匹配时跳过不需匹配的字符,最优情况下的时间复杂度为O(n/m),平均情况下也大大优于KMP算法[2];文献[3]取掉BM算法的好后缀试探(Good Suffix Heuristic),形成BMH(Boyer-Moore-Horspool)算法,实验证明BMH算法性能在自然语言环境下比原始BM算法还要好。
字符串集合匹配是从文本Text中一次查找多个字符串P1,P2,…,Pm的所有出现,最经典的是AC(Aho and Corasick)算法。该算法将待匹配的多个字符串转换为树状有限状态自动机,然后进行扫描匹配,最优情况和平均情况的时间复杂度都为O(n)[4];文献[5]提出了一种类似于AC和BM的算法,即Aho-Corasick_Boyer-Moore(AC_BM)混合算法。该算法根据包过滤的规则前缀共同信息较多的特点,采取自后向前的搜索方法,因此在速度方面具有较高的优越性[6]。
本文对AC-BM算法提出改进,并根据BMH算法的思想,取消好前缀跳转(Good Prefix Shift),测试结果表明,该算法在数据包过滤、内容分析与审计等应用中,优于AC-BM算法。
1 AC-BM算法描述
AC-BM算法将待匹配的字符串集合转换为一个类似于Aho-Corasick算法的树状有限状态自动机,但构建时不是基于字符串的后缀而是前缀。匹配时,采取自后向前的方法,并借用BM算法的坏字符跳转(BadCharacter Shift)和好前缀跳转(Good Prefix Shift)技术。
坏字符跳转即当字符串树中的字符与被匹配内容x失配时,将字符串树跳转到下一个x的出现位置,如果x的字符串树不存在,则将字符串树向左移动字符串树的最小字符串长度。好前缀跳转即当字符串树中的字符与被匹配内容x失配时,将字符串树跳转到字符串树中一个与被测正文部分等同的位置。这个等同部分可以是字符串树中某字符串的子串(子串跳转),也可以是一个字符串的后缀(后缀跳转)。
例如,设有规则ethernetmovesme,ethernetisking,ethernetisdead和ethernetforever,要检查的数据包内容为nothingtoworryaboutinthis。首先,构造字符串有限状态自动机,如图1a。匹配从字符r开始,显然r与e不匹配,由于字符串树中下一个r出现在深度5的位置,字符串树的最小字符串长度为14,根据坏字符跳转,字符串树可以安全向左移动5个字符,如图1b。

AC-BM
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1MDD品牌三极管MMBT3906数据手册
  2. 2.33 MB  |  次下载  |  免费
  3. 2MDD品牌三极管S9012数据手册
  4. 2.62 MB  |  次下载  |  免费
  5. 3联想flex2-14D/15D说明书
  6. 4.92 MB   |  次下载  |  免费
  7. 4收音环绕扩音机 AVR-1507手册
  8. 2.50 MB   |  次下载  |  免费
  9. 524Pin Type-C连接器设计报告
  10. 1.06 MB   |  次下载  |  免费
  11. 6新一代网络可视化(NPB 2.0)
  12. 3.40 MB  |  次下载  |  免费
  13. 7MS1000TA 超声波测量模拟前端芯片技术手册
  14. 0.60 MB   |  次下载  |  免费
  15. 8MS1022高精度时间测量(TDC)电路数据手册
  16. 1.81 MB   |  次下载  |  免费

本月

  1. 1爱华AIWA HS-J202维修手册
  2. 3.34 MB   |  37次下载  |  免费
  3. 2PC5502负载均流控制电路数据手册
  4. 1.63 MB   |  23次下载  |  免费
  5. 3NB-IoT芯片厂商的资料说明
  6. 0.31 MB   |  22次下载  |  1 积分
  7. 4H110主板CPU PWM芯片ISL95858HRZ-T核心供电电路图资料
  8. 0.63 MB   |  6次下载  |  1 积分
  9. 5UWB653Pro USB口测距通信定位模块规格书
  10. 838.47 KB  |  5次下载  |  免费
  11. 6技嘉H110主板IT8628E_BX IO电路图资料
  12. 2.61 MB   |  4次下载  |  1 积分
  13. 7苏泊尔DCL6907(即CHK-S007)单芯片电磁炉原理图资料
  14. 0.04 MB   |  4次下载  |  1 积分
  15. 8100W准谐振反激式恒流电源电路图资料
  16. 0.09 MB   |  2次下载  |  1 积分

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935137次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420064次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233089次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191439次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183353次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81602次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73822次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65991次下载  |  10 积分