13计算机安全_521.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
13计算机安全_521

CS283-172/Fall08/GW/Vora Many slides from Matt Bishops slide set 安全、网络中的数据结构算法 病毒扫描、入侵检测、搜索引擎、字典 重要算法之一:模式匹配算法/数据结构 单模式 kmp bm Sunday… 多模式 AC WM… 正则表达式 Sigcom Infocom AC自动机(TRIE)、后缀树、后缀自动机、后缀数组、紧凑(succinct)数据结构 模式匹配算法 Brute Force算法 Knuth-Morris-Pratt (KMP) 算法 AC算法 Boyer-Moore算法 使用DAWG的算法 Bit并行算法 蛮力算法Brute Force 模式P 长度为m 文本T 长度为n P在T的位置x处 出现: T = bacbabababacbb P = ababa x=4 ababa x=6 找到P在T中的出现的最直接的方法: 在T的所有位置上检查P的出现 运行时间: 最坏情况 O(nm) Brute Force 对一个位置的匹配中已经获得了对于文本的”知识” 例如: Brute Force 对一个位置的匹配中已经获得了对于文本的”知识” 例如: 观察 假设 P 在T[x…] 处匹配了 k 个字符 P[0..k-1] == T[x..x+k-1], 对于 0rk, 如果 T[x+r…x+k-1] 不是 P的前缀, 则 P 不能出现在 x + r 处 略过位置 当 T[x..] 匹配了P的k个字符, P[0..k-1] == T[x..x+k-1] 我们可在最左 x+r 处重新匹配 如果T[x+r..x+k-1] 是P的前缀 略过了 r 个位置 在此例中: 在此例中: 算 可略过的位置数 已匹配的前缀P[1..k], P[1..k]的后缀中最长的前缀为P[r..k] 则略过位置数为r KMP算法 O(m+n) 第一个线性算法! 自动机 匹配状态:模式前缀集合 Goto Function, Goto(s, a)=s’ 后缀链接:Failure Function 引入状态⊥, Goto(⊥, 任意字符)=S0 Fail(s0)= s-1=⊥ KMP算法 Update_State(s,a) { while(GoTo(s,a)==空) s=fail(s); return GoTo(s,a); } Fail函数的构造 分层 递归 Fail(s0) = ⊥ Fail(si) =? 看Fail(si-1)有没有p[i]边 如果有,则Fail(si) 是 此边指向的状态 如果没有,则沿着失败链向后找… 直到找到p[i]边 时间复杂 对文本扫描一遍,无回头扫描 O(n) 调用了多少次Fail函数? 从自动机看 向右的移动次数 = 向左移动的次数 向右的移动次数 = 对文本扫描的次数=n O(n) Fail构造复杂度 向右的移动次数 = 向左移动的次数 向右的移动次数 = 对模式扫描的次数=m O(m) O(m+n) 课后练习 完全用数组实现前边的自动机结构。 Aho Corasick 原始 Aho Corasick 包括 Goto Function Failure Function Combining the two KMP的多模式扩展 多模式匹配问题 Find patterns in text P={p1, p2, ... pq}, in T Aho and Corasick solved it in ’75 Uses a state machine Aho Corasick – 例 Aho Corasick -例 Aho Corasick -例 Aho Corasick Goto function: a trie of the patterns Failure function: 对于每个前缀, 其后缀中最长的是前缀对应的状态 KMP的失败函数的多模式推广 Output function: 报告每个前缀的后缀中匹配的模式 Aho Corasick – 分析 构造算法时间复杂 O(|P|) 搜索时间复杂 O(n + occ) ... 在固定字母表上! 对于整数字母表, Σ=O(nc), 用平衡树等结构 状态转换函数 引入状态⊥,状态转换简化为: Update_State(s,a) { while(GoTo(s,a)==fail) s=fail(s); return GoTo(s,a); } 搜索时

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档