- 6
- 0
- 约4.66千字
- 约 57页
- 2018-05-05 发布于天津
- 举报
后缀自动机SuffixAutomaton-lkhll
V:SPOJ LCS 我们考虑用SAM读入字符串B。 令当前状态为s,同时最大匹配长度为len 我们读入字符x。如果s有标号为x的边,那么s=trans(s,x),len = len+1 否则我们找到s的第一个祖先a,它有标号为x的边,令s=trans(a,x),len=Max(a)+1。 如果没有这样的祖先,那么令s=root,len=0。 在过程中更新状态的最大匹配长度 V:SPOJ LCS 注意到我们求的是对于任意一个Right集合中的r,最大的匹配长度。那么对于一个状态s,它的结果自然也可以作为它Parent的结果,我们可以从底到上更新一遍。 然后问题就解决了。 VI:SPOJ LCS2 一些其他的东西 其实不仅仅有Suffix Automaton还有。。Factor Automaton Suffix Oracle Factor Oracle Suffix Cactus Oracle的意思是神谕!听起来很强吧。 Factor Oracle 一个串的Factor Oracle是一个自动机,可以识别这个串的所有子串的集合,但也可以识别一些别的乱七八糟的东西。 其实Oracle也有预言的意思,所以这个是不一定准的。 Factor Oracle的构造算法非常的简单,不过我也不知道这个在OI中有什么用,就不讲了。 广告 我会把课件和代码放在我的博客上,地址是: /wjbzbmr/ 我们需要新的算法来解决这个问题 在SPOJ的讨论版中,出题人提到了要使用suffix automaton来解决此题。 * 提到字符串数据结构,大家都会想到这些 * 了解AC自动机的同学都不会陌生, * * 如果时间复杂度达到N^2级别,这个数据结构也就没有意义了。 演示插入的过程。 * * 说了这么多,如果不能给出一个构造SAM的算法,也没有意义。 * 状态数的线性证明 状态数的线性证明 状态数的线性证明 一些性质 一些性质 关于子串的性质 由于每个子串都必然包含在SAM的某个状态里。 那么一个字符串s是S的子串,当且仅当,ST(s)!=null 那么我们就可以用SAM来解决子串判定问题。 同时也可以求出这个子串的出现个数,就是所在状态Right集合的大小。 关于子串的性质 在一个状态中直接保存Right集合会消耗过多的空间,我们可以发现状态的Right就是它Parent树中所有孩子Right集合的并集,进一步的话,就是Parent树中它所有后代中叶子节点的Right集合的并集。 那么如果按dfs序排列,一个状态的right集合就是一段连续的区间中的叶子节点的Right集合的并集,那么我们也就可以快速求出一个子串的所有出现位置了。 树的dfs序列:所有子树中节点组成一个区间。 线性构造算法 我们的构造算法是Online的,也就是从左到右逐个添加字符串中的字符。依次构造SAM。 这个算法实现相比后缀树来说要简单很多,尽管可能不是非常好理解。 让我们先回顾一下性质 定义和性质的回顾 状态s,转移trans,初始状态init,结束状态集合end。 母串S,S的后缀自动机SAM(Suffix Automaton的缩写)。 Right(str)表示str在母串S中所有出现的结束位置集合。 一个状态s表示的所有子串Right集合相同,为Right(s)。 Parent(s)表示使得Right(s)是Right(x)的真子集,并且Right(x)的大小最小的状态x。 Parent函数可以表示一个树形结构。不妨叫它Parent树。 定义的回顾 一个Right集合和一个长度定义了一个子串。 对于状态s,使得Right(s)合法的子串长度是一个区间,为|[Min(s),Max(s)] Max(Parent(s)) = Min(s)-1。 SMA的状态数量和边的数量,都是O(N)的。 不妨令trans(s,ch)==null表示从s出发没有标号为ch的边, 定义的回顾 每个阶段 每个阶段 每个阶段 每个阶段 每个阶段 每个阶段 每个阶段 接下来考虑节点nq,在转移的过程中,结束位置L+1是不起作用的,所以trans(nq)就跟原来的trans(q)是一样的,拷贝即可。 每个阶段 每个阶段 自此我们圆满的解决了转移的问题。 嘟嘟噜,搞完啦~~ 每个阶段:回顾 每个阶段:回顾 否则新建节点nq,trans(nq,*)=trans(q,*)Parent(nq) = Parent(q) (先前的)Parent(q) = nqParent(np)=nq 对所有trans(v,x) == q的p的祖先v,t
您可能关注的文档
- 分别在显微镜下观察计数该浓度范围内的复合肥磷酸氢二铵可能导致.PPT
- 函数MMULT数组公式CtrlShiftEnter11.PPT
- 创建本底基线问卷调查高黎贡山生物走廊带自豪项目调查组在走廊.DOC
- 创新在改变-HKEXnews.PDF
- 创造一个无菸生活.PDF
- 初中学校预防艾滋病健康教育测试题-宁夏教育厅.DOC
- 刺糖多孢菌高产菌株和野生型菌株多杀菌素生物合成基因簇spn在.PDF
- 加密解密的密钥-THEOL网络教学综合平台-上海电子信息职业技术学院.PPT
- 利于高空飞行对无线电通信有重要作用大气的受热过程1大气对.PPT
- 动作语言驱力.PPT
- 2025广东广州市天河区拟招聘英语实习老师1人备考题库附答案.docx
- 2025广东广州市天河区城市管理第二保洁所招聘编外工作人员4人笔试备考试卷附答案解析.docx
- 2025广东广州市越秀区流花街道办事处招聘综合事务中心辅助人员1人笔试历年题库附答案解析.docx
- 2025广东广州市花都区新雅街清初级中学招聘临聘教师1人备考历年题库带答案解析.docx
- 2025广东广州市天河区城市管理第二保洁所招聘编外工作人员4人笔试备考试卷带答案解析.docx
- 江苏省盐城市东台市三仓镇区中学2026届八年级数学第一学期期末教学质量检测试题含解析.doc
- 2025广东广州市天河区城市管理第二保洁所招聘编外工作人员4人备考题库带答案解析.docx
- 江苏省盐城市亭湖区2026届数学八上期末考试试题含解析.doc
- 安徽省蚌埠市淮上区2026届数学八年级第一学期期末达标检测模拟试题含解析.doc
- 2025广东广湛城旅游轮有限公司招聘备考历年题库附答案解析.docx
最近下载
- 2023年山东水利职业学院单招综合素质考试试题及答案解析.docx VIP
- 2023年山东水利职业学院单招考试综合素质模拟试题及答案解析.docx VIP
- 福建省宁德市2024-2025学年八年级上学期期末考试历史试题.pdf VIP
- 湘2021G301预制带肋底板混凝土叠合楼板(混凝土肋、钢筋肋、钢管肋)(版本2).docx VIP
- 湘2021G301预制带肋底板混凝土叠合楼板(混凝土肋、钢筋肋、钢管肋)(版本2).docx VIP
- 湘2021G301 预制带肋底板混凝土叠合楼板(混凝土肋、钢筋肋、钢管肋).docx VIP
- 学生道德品质教育与养成课件.ppt VIP
- 儿童品格尊重课件.pptx VIP
- 广日电梯MAX-E 电梯维修手册(00版本).pdf VIP
- 杭州威灵专用交流伺服驱动器使用手册2020.pdf VIP
原创力文档

文档评论(0)