ac自动机算法是什么 -凯发k8国际版官网

qa 2020-04-21 16:22:18 阅读(...)

ac自动机算法是字符串搜索算法,用于在输入的一串字符串中匹配有限组“字典”中的子串。它与普通字符串匹配的不同点在于同时与所有字典串进行匹配。算法均摊情况下具有近似于线性的时间复杂度,约为字符串的长度加所有匹配的数量。

在计算机科学中,aho–corasick 是由 alfred v. aho 和 margaret j.corasick 发明的字符串搜索算法,用于在输入的一串字符串中匹配有限组“字典”中的子串。它与普通的不同点在于同时与所有字典串进行匹配。算法均摊情况下具有近似于线性的时间复杂度,约为字符串的长度加所有匹配的数量。然而由于需要找到所有匹配数,如果每个子串互相匹配(如字典为 a,aa,aaa,aaaa,输入的字符串为 aaaa),算法的时间复杂度会近似于匹配的二次函数。

ac自动机算法是什么

简介

ac 主要依靠构造一个有限状态机(类似于在一个 trie 树中添加失配指针)来实现。这些额外的失配指针允许在查找字符串失败时进行回退(例如设 trie 树的单词 cat 匹配失败,但是在 trie 树中存在另一个单词 cart,失配指针就会指向前缀 ca),转向某前缀的其他分支,免于重复匹配前缀,提高算法效率。

当一个字典串集合是已知的(例如一个计算机病毒库), 就可以以离线方式先将自动机求出并储存以供日后使用,在这种情况下,算法的时间复杂度为输入字符串长度和匹配数量之和。

unix 系统中的一个命令 fgrep 就是以 ac 自动机算法作为基础实现的。

收藏 0个人收藏

评论交流

请「」后参与评论
  1. 加载中..

相关推荐

  • 搜索算法 search algorithm

    搜索算法是什么

    搜索算法是解决搜索问题的任何算法,即检索存储在某个数据结构中的信息,或者在问题域的搜索空间中计算的信息。这种结构的例子包括但不限于链表,数组数据结构或搜索树。合适的搜索算法通常取决于正在搜索的数据结构,并且还可能包括有关数据的先前知识。
  • 遗传算法是什么

    遗传算法是什么

    遗传算法(ga)是一种通过模拟自然进化过程搜索最优解的方法。该算法通过数学的方式,利用计算机仿真运算,将问题的求解过程转换成类似生物进化中的染色体基因的交叉、变异等过程。
  • 竞争算法是什么

    竞争算法是什么

    帝国竞争算法(imperialist competitive algorithm, ica )是一种受帝国竞争行为启发的新的智能优化算法,它与粒子群优化(pso)、蚁群(bco)等算法一样,都属于基于群体的随机优化搜索算法。
  • 线性搜索 linear search

    线性搜索是什么

    线性搜索或顺序搜索是一种寻找某一特定值的搜索算法,指按一定的顺序检查数组中每一个元素,直到找到所要寻找的特定值为止。是最简单的一种搜索算法。
  • search 搜索

    暴力搜索是什么

    暴力搜索或穷举搜索,在计算机科学中也称生成与测试,是一种非常低效的解决问题的技术,方法包括了系统地枚举凯发k8国际版官网的解决方案的所有可能候选项,以及检查每个候选项是否符合问题描述。
  • 字典攻击 dictionary attack

    字典攻击是什么

    在密码分析和计算机安全方面,字典攻击是一种蛮力攻击,用于破解密码。攻击者通过尝试数千或数百万种字典中的英文单词和常见的密码来破解密钥、密码或口令。而这些字典中的英文单词或前人使用的密码通常来由过去已破解的数据库中所泄露。
网站地图