Trie树和AC自动机的概念

Trie树

  • Trie树:也叫“字典树”,专门处理字符串匹配的数据结构,用来在一组字符串集合中快速查找某个字符串
  • Trie树的本质:利用字符串之间的公共前缀,将重复的前缀合并在一起
  • Trie树主要有两个操作:①将字符串集合构造成Trie树②在Trie树中查询一个字符串
  • Trie树非常耗内存,用的是空间换时间:Trie树实现的时候,用数组来存储一个节点的子节点的指针。如果字符串中包含从a到z这 26个字符,那每个节点都要存储一个长度为26的数组,并且每个数组元素要存储一个8字节指针(或者是4字节)。而且,即便一个节点只有很少的子节点,远小于26个,比如3、4个,也要维护一个长度为26的数组
  • Trie树对要处理的字符串有很多要求:①字符串中包含的字符集不能太大。如果字符集太大,那存储空间可能就会浪费很多。②要求字符串的前缀重合比较多,不然空间消耗会变大很多③通过指针串起来的数据块是不连续的,对缓存并不友好④Trie树比较适合的是查找前缀匹配的字符串,比如自动输入补全
  • 单模式串匹配:在一个主串中查找一个模式串
  • 多模式串匹配:在一个主串中查找多个模式串。它只需要扫描一遍主串,就能在主串中一次性查找多个模式串是否存在,从而大大提高匹配效率,Trie树就是一种多模式串匹配算法

AC自动机

  • AC自动机算法,全称是 Aho-Corasick 算法。Trie树跟AC自动机之间的关系,就像单串匹配中朴素的串匹配算法,跟KMP算法之间的关系一样,只不过前者针对的是多模式串。AC自动机实际上就是在Trie树之上,加了类似KMP的next数组,只是此处的next数组是构建在树上
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值