多模式串匹配之AC自动机算法.docxVIP

  • 3
  • 0
  • 约7.03千字
  • 约 9页
  • 2019-04-23 发布于江苏
  • 举报
多模式串匹配之AC自动机算法(Aho-Corasick算法)简介与C语言程序实现源码参考 HYPERLINK /zhiwenweb 任侠 发布于 2011-03-22??22:27:53 ?一、概述 AC自动机算法全称Aho-Corasick算法,是一种字符串多模式匹配算法。该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。AC算法用于在一段文本中查找多个模式字符串,即给你很多字符串,再给你一段文本,让你在文本中找这些串是否出现过,出现过多少次,分别在哪里出现。 该算法应用有限自动机巧妙地将字符比较转化为了状态转移。此算法有两个特点,一个是扫描文本时完全不需要回溯,另一个是时间复杂度为O(n),时间复杂度与关键字的数目和长度无关,但所需时间和文本长度以及所有关键字的总长度成正比。 AC算法有三个主要步骤,一个是字典树tire的构造,一个是搜索路径的确定(即构造失败指针),还有就是模式匹配过程。 学习AC自动机算法之前,最好先熟悉KMP算法,因为KMP算法与字典树tire的构造很是类似。KMP算法是一种经典的单字符串匹配算法。 二、AC算法思想 ? AC算法思想:用多模式串建立一个确定性的树形有限状态机,以主串作为该有限状态机的输入,使状态机进行状态的转换,当到达某些特定的状态时,说明发生模式匹配。 下图是多模式he/ she/ his /hers构成的一个确定性有限

文档评论(0)

1亿VIP精品文档

相关文档