AC算法实例

AC算法实现这几天一直都在看多模式匹配的算法,昨天为了赶着能够在信息检索的课上show一下,就赶工写了一个AC算法的程序。实际上程序大部分代码来自于Snort,我做了一定的修改,将NFA和转化为DFA的函数合并到了一块,并且删除了很多冗余的变量和函数,感觉Snort代码写的有些乱,自我感觉我的代码应该比snort的效率和可读性都要高出一些。

    我写的程序能够打印出每一个匹配到的关键词的位置,并且对关键词出现的次数进行统计。
下面是对gpl文件以free、software和copy为关键词进行的搜索。
Search the gpl.txt
Match KeyWord COPY at 4 line 1 char
Match KeyWord FREE at 4 line 26 char
Match KeyWord SOFTWARE at 4 line 31 char
Match KeyWord COPY at 6 line 26 char
Match KeyWord SOFTWARE at 11 line 24 char
Match KeyWord FREE at 12 line 0 char
Match KeyWord FREE at 13 line 38 char
Match KeyWord FREE at 13 line 66 char
Match KeyWord SOFTWARE at 14 line 0 char
Match KeyWord SOFTWARE at 14 line 27 char
Match KeyWord FREE at 14 line 39 char
Match KeyWord FREE at 15 line 46 char
Match KeyWord SOFTWARE at 15 line 51 char
Match KeyWord SOFTWARE at 16 line 13 char
Match KeyWord FREE at 17 line 23 char
Match KeyWord SOFTWARE at 17 line 28 char
Match KeyWord SOFTWARE at 17 line 48 char
Match KeyWord FREE at 21 line 19 char
Match KeyWord SOFTWARE at 21 line 24 char
Match KeyWord FREE at 21 line 54 char
Match KeyWord FREE at 23 line 9 char
Match KeyWord FREE at 23 line 41 char
Match KeyWord SOFTWARE at 23 line 46 char
Match KeyWord SOFTWARE at 25 line 40 char
Match KeyWord FREE at 26 line 7 char
Match KeyWord SOFTWARE at 31 line 25 char
Match KeyWord COPY at 39 line 45 char
Match KeyWord SOFTWARE at 39 line 59 char
Match KeyWord COPY at 40 line 63 char
Match KeyWord SOFTWARE at 41 line 29 char
Match KeyWord FREE at 44 line 61 char
Match KeyWord SOFTWARE at 45 line 0 char
Match KeyWord SOFTWARE at 45 line 18 char
Match KeyWord FREE at 50 line 15 char
Match KeyWord SOFTWARE at 50 line 56 char
Match KeyWord FREE at 51 line 63 char
Match KeyWord FREE at 54 line 39 char
Match KeyWord COPY at 56 line 39 char
Match KeyWord COPY at 60 line 28 char
Match KeyWord COPY at 63 line 23 char
Match KeyWord COPY at 66 line 54 char
Match KeyWord COPY at 72 line 22 char
Match KeyWord COPY at 79 line 13 char
Match KeyWord COPY at 81 line 48 char
Match KeyWord COPY at 82 line 0 char
Match KeyWord COPY at 84 line 47 char
Match KeyWord COPY at 87 line 60 char
Match KeyWord COPY at 90 line 25 char
Match KeyWord COPY at 91 line 53 char
Match KeyWord COPY at 106 line 42 char
Match KeyWord COPY at 109 line 57 char
Match KeyWord COPY at 134 line 13 char
Match KeyWord SOFTWARE at 140 line 51 char
Match KeyWord COPY at 145 line 21 char
Match KeyWord SOFTWARE at 147 line 25 char
Match KeyWord COPY at 167 line 10 char
Match KeyWord COPY at 168 line 10 char
Match KeyWord COPY at 170 line 13 char
Match KeyWord COPY at 172 line 17 char
Match KeyWord COPY at 174 line 13 char
Match KeyWord COPY at 186 line 33 char
Match KeyWord COPY at 191 line 21 char
Match KeyWord FREE at 205 line 33 char
Match KeyWord FREE at 218 line 17 char
Match KeyWord SOFTWARE at 218 line 22 char
Match KeyWord SOFTWARE at 220 line 44 char
Match KeyWord SOFTWARE at 223 line 14 char
Match KeyWord COPY at 230 line 42 char
Match KeyWord COPY at 231 line 9 char
Match KeyWord FREE at 237 line 9 char
Match KeyWord SOFTWARE at 237 line 14 char
Match KeyWord FREE at 245 line 64 char
Match KeyWord SOFTWARE at 246 line 0 char
Match KeyWord FREE at 247 line 63 char
Match KeyWord SOFTWARE at 247 line 68 char
Match KeyWord FREE at 250 line 65 char
Match KeyWord SOFTWARE at 252 line 28 char
Match KeyWord COPY at 252 line 46 char
Match KeyWord FREE at 252 line 65 char
Match KeyWord SOFTWARE at 253 line 0 char
Match KeyWord FREE at 253 line 34 char
Match KeyWord SOFTWARE at 253 line 39 char
Match KeyWord FREE at 255 line 18 char
Match KeyWord FREE at 255 line 56 char
Match KeyWord SOFTWARE at 255 line 61 char
Match KeyWord SOFTWARE at 256 line 38 char
Match KeyWord FREE at 260 line 38 char
Match KeyWord COPY at 262 line 32 char
Match KeyWord COPY at 271 line 9 char
Match KeyWord FREE at 286 line 0 char
Match KeyWord SOFTWARE at 286 line 5 char
Match KeyWord COPY at 291 line 5 char
Match KeyWord COPY at 294 line 4 char
Match KeyWord FREE at 296 line 20 char
Match KeyWord SOFTWARE at 296 line 25 char
Match KeyWord FREE at 298 line 8 char
Match KeyWord SOFTWARE at 298 line 13 char
Match KeyWord COPY at 306 line 31 char
Match KeyWord FREE at 307 line 44 char
Match KeyWord SOFTWARE at 307 line 49 char
Match KeyWord COPY at 315 line 28 char
Match KeyWord FREE at 317 line 12 char
Match KeyWord SOFTWARE at 317 line 17 char
Match KeyWord COPY at 326 line 27 char
Match KeyWord COPY at 329 line 39 char

### Summary ###
        FREE :    32
    SOFTWARE :    35
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值