首页 > 其他分享 >后缀自动机学习笔记

后缀自动机学习笔记

时间:2024-02-18 16:24:26浏览次数:31  
标签:子串 笔记 后缀 等价 endpos 自动机 类中

用途

略。


根本思想

略。


概念阐释

  • endpos:这是一个集合。\(endpos(x)\) 代表子串 \(x\) 在 \(s\) 中所有结束位置的集合。

  • 等价类:这也是一个集合。一个等价类中包含所有 \(endpos(i)\) 完全相等的子串 \(i\)。

有如下引理(其实很显然,看了理解了就可以了):

  • 同一等价类中,子串绝对存在后缀包含关系。

  • 若子串 \(u\) 为子串 \(v\) 的后缀,\(endpos(u)\) 被包含于 \(endpos(v)\);否则二者的 \(endpos\) 无交。

  • 同一等价类中,串的长度绝对连续,且没有重复。

接下来是有关 SAM 构建的概念。

  • SAM 本身:和其他自动机一样,以字典树结构为主体。

  • SAM 中的节点:代表一个等价类。或者说,它在字典树中所处的位置代表着该等价类中的最长字串,下文将该字串记为 \(w\)。

  • 原点:代表空串的节点 0。

  • len:每个节点上储存的数据。代表 \(w\) 的长度。

  • 后缀链接(link):每个节点上储存的数据,类似其它自动机的 fail。它指向 \(w\) 最长的一个后缀,which 满足不在该等价类中。容易发现,后缀链接可构成一棵以 0 为根的树。

  • 转移边:就是普通字典树边,储存字符信息。

标签:子串,笔记,后缀,等价,endpos,自动机,类中
From: https://www.cnblogs.com/David-Mercury/p/18019482

相关文章

  • [刷题笔记] P9751 [CSP-J 2023] 旅游巴士
    Problem_LinkDescription给定一个\(n\)个点,\(m\)条边的有向图。起点为\(1\),终点为\(n\)。起始时间和终止时间必须是\(k\)的倍数。通过每条边的时间为\(1\)。每条边有限制\(a_i\)即若通过当前边必须满足当前时间\(t\geqa_i\)。求满足上述限制的前提下,到达终点的最小......
  • C++ 模板的笔记1
    C++模板的笔记1C++函数模板函数模板的定义函数模板是一种可以生成不同类型函数的函数声明。函数模板的参数类型不是固定的,而是在调用时由实参类型推导出来。语法:template<typename参数列表>函数返回值类型函数名(参数列表){函数体}示例:template<typenameT>vo......
  • 怎么在电脑上做工作笔记?电脑桌面电子笔记软件
    在繁忙的职场中,随时随地记录工作笔记是许多职场人士的日常需求。这不仅包括了会议记录、项目进展,还有一些灵感、规划和工作要点,都需要随手记下,以便随时查看和回顾。那么我们如何在电脑上做工作笔记更高效、便捷呢?在电脑上做工作笔记,使用一款电脑桌面电子笔记软件能够事半功倍。那......
  • 笔记平台综合对比
    cnblogs优点:非常强大的自定义功能,丰富多样的主题可供选择,当时就准备把所有笔记都迁移到cnblogs上互联网可访问,SEO也做得好,搜索引擎中可以直接搜到文章缺点:审核,写了大概20篇试水,有两篇没有过审核,ctrl+CV重新发布,还剩一篇没过审,劝退非常睿智的体系管理,刚开始使用发现光......
  • 《Boosting Document-Level Relation Extraction by Mining and Injecting Logical Ru
    代码原文地址摘要文档级关系抽取(DocRE)旨在从文档中抽取出所有实体对的关系。DocRE面临的一个主要难题是实体对关系之间的复杂依赖性。与大部分隐式地学习强大表示的现有方法不同,最新的LogiRE 通过学习逻辑规则来显式地建模这种依赖性。但是,LogiRE需要在训练好骨干网络之后,......
  • 读十堂极简人工智能课笔记05_无监督学习
    1. 自我改善1.1. 只有学会了如何学习和改变的人,才称得上是受过教育的人1.1.1. 卡尔·罗杰斯1.2. 人工智能如果只是学习纯理论的游戏(从国际象棋和围棋到电脑游戏),其结果已然可以令人惊叹1.3. 让大多数机器人玩叠叠乐游戏(用积木搭成塔,慢慢从塔中抽出积木,然后搭在最顶上),结果......
  • 『学习笔记』莫队
    Part0.目录概念普通莫队树上莫队带修莫队Part1.概念莫队是由莫涛提出的算法。莫队算法可以解决一类离线区间询问问题,适用性极为广泛。Part2.普通莫队普通莫队主要针对于多次区间询问的问题,基于分块的思想。过程如下:先将当前区间\([l,r]\)设为\([1,0]\),再每次......
  • C++——数据类型笔记
    在C++编程中,了解各类数据类型也是至关重要的。下面我会总结一下C++中的数据类型,包括基本类型,符合类型和自定义类型。方便自己整理和理解。1,基本类型C++中的基本类型是构建其他数据类型的基础,常见的基础类型包括整型,浮点型,字符型和布尔型:整型:用于表示整数,如int、short......
  • AC自动机
    AC自动机·赘述与前置让大家失望の是,\(AC\)自动机不是让你自动\(\color{green}Accepted\)的机器。其实可以将\(AC\)自动机理解成一个在\(Trie\)树上跑的\(KMP\)此处的\(KMP\)指的是一种算法思想,即利用失配时的有限信息来缩小时间复杂度,并不是真正的\(KMP\).\(\b......
  • 【Vue前端】vue使用笔记0基础到高手第2篇:Vue进阶知识点介绍(附代码,已分享)
    本系列文章md笔记(已分享)主要讨论vue相关知识。Vue.js是前端三大新框架:Angular.js、React.js、Vue.js之一,Vue.js目前的使用和关注程度在三大框架中稍微胜出,并且它的热度还在递增。Vue.js是一个轻巧、高性能、可组件化的MVVM库,同时拥有非常容易上手的API。Vue.js是一个构建数据驱动......