美文网首页
数据结构与算法笔记day21:Trie树|AC自动机

数据结构与算法笔记day21:Trie树|AC自动机

作者: 楠楠喜欢泡枸杞 | 来源:发表于2019-06-18 23:10 被阅读0次

    1Trie树

        这节课学习了一种特殊的树,Trie树。Trie树是一种解决字符串快速匹配问题的数据结构。如果用来构建Trie树的这一组字符串中,前缀重复的情况并不是很多,那Trie树这种数据结构总体上来讲是比较费内存的,是一种空间换时间的解决问题思路。

        尽管比较耗费内存,但是对内存不敏感或者内存消耗在接受范围内的情况下,在Trie树中做字符串匹配还是非常高效的,时间复杂度是O(k),k表示要匹配的字符串的长度。

        但是,Trie树的优势并不在于,用它来做动态集合数据的查找,因为这个工作完全可以由更加合适的散列表或者红黑树来替代。Trie树最有优势的是查找前缀匹配的字符串,比如搜索引擎中的关键词提示功能这个场景,就比较适合用它来解决,也是Trie树比较经典的应用场景。  

    2AC自动机

        这节课学习了多模式串匹配算法,AC自动机。单模式串匹配算法是为了快速在主串中查找一个模式串,而多模式串匹配算法是为了快速在主串中查找多个模式串。

        AC自动机是基于Trie树的一种改进算法,它跟Trie树的关系,就像单模式串中KMP算法和BF算法的关系一样。KMP算法中有一个非常关键的next数组,类比到AC自动机中就是失败指针。而且,AC自动机失败指针的构建过程,跟KMP算法中计算next数组极其相似。所以,要理解AC自动机,最好先掌握KMP算法,因为AC自动机其实就是KMP算法在多模式串上的改造

        整个AC自动机算法包含两个部分:第一部分是将多个模式串构建成AC自动机,第二部分是在AC自动机中匹配子串。第一部分又分为两个小的步骤,一个是将模式串构建成Trie树,另一个是在Trie树上构建失败指针

相关文章

  • 数据结构与算法笔记day21:Trie树|AC自动机

    1Trie树 这节课学习了一种特殊的树,Trie树。Trie树是一种解决字符串快速匹配问题的数据结构。如果用来...

  • AC自动机 专题整理

    AC自动机学习记录 参考资料 字典树(讲解+模版)AC自动机算法AC自动机算法详解hdu 2222 ac自动机入门...

  • 回文树(附模板题URAL-1960)

    (最好事先学习过kmp,Trie,AC自动机)回文树,有效解决各类回文问题的超级666的树形结构 集AC自动机的f...

  • AC自动机学习笔记

    先简单复习一下学习AC自动机所需要的前缀知识。 前缀知识 1-Trie树 字典树,也称Trie树,前缀树,主要用于...

  • AC自动机 图文介绍

    预备知识 Trie(字典树)KMP字符串匹配算法 AC自动机求解问题的类型 一句话概括就是:多模匹配。KMP求解的...

  • Trie

    不需要前置技能。 是AC自动机的前置技能。 Trie,又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变...

  • 序列比对(二十六)——精准匹配之KMP算法、Trie树以及AC自

    原创:hxj7 前文已经介绍过KMP算法和Trie树,本文将在此基础上介绍AC自动机。 之前的序列比对文章大都在利...

  • 字符串算法小结

    hash kmp和ac自动机 后缀数组,后缀自动机,后缀树 扩展kmp manacher算法 回文自动机 可删改的...

  • 数据结构与算法之美-35讲Trie树

    数据结构与算法之美-35讲Trie树 特别备注 本系列非原创,文章原文摘自极客时间-数据结构算法之美[https:...

  • 数据结构与算法大纲

    王争课程笔记 10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树 10 个算法:递归...

网友评论

      本文标题:数据结构与算法笔记day21:Trie树|AC自动机

      本文链接:https://www.haomeiwen.com/subject/qyfpfctx.html