简介
后缀三姐妹:后缀数组,后缀自动机,后缀树。
后缀自动机:Suffix Automation,也叫SAM。
创立算法的思路来源:能不能构出一个自动机(本质就是一个有向图),能识别一个串的所有后缀。
识别所有后缀基础想法
把所有的后缀都放进一个trie里面,比如串aabbabd。
这样的状态太多了,怎么把状态数缩小。
减小状态数的方法
定义一个子串的right集合为这...
分类:
其他好文 时间:
2016-08-19 08:37:43
阅读次数:
554
ACM算法列表 ACM所有算法 栈,队列,链表 哈希表,哈希数组 堆,优先队列双端队列可并堆左偏堆 二叉查找树Treap伸展树 并查集集合计数问题二分图的识别 平衡二叉树 二叉排序树 线段树一维线段树二维线段树 树状数组一维树状数组N维树状数组 字典树 后缀数组,后缀树 块状链表 哈夫曼树 桶,跳跃 ...
分类:
其他好文 时间:
2016-08-07 19:53:01
阅读次数:
282
在上个星期面试一家公司的笔试题上面的最后一道题就是写程序查找一个字符串的最长重复子串。当时想了很长时间没想出什么好方法,就把一个算法复杂度比较高的算法写上去了。回来上机把那个算法写了一遍测试没问题,然后自己又到网上面查查还有什么方法,然后发现好像有种叫做后..
分类:
编程语言 时间:
2016-07-12 00:14:27
阅读次数:
450
看到这题我就伤心,当初想到了正解却因为各种sb原因没有写…… 好吧,其实我的正解是比较挫的…… 大家似乎都用了后缀数组,我用了后缀自动机(后缀树) 其实SAM是很好想得,用SAM建出后缀树后 我们考虑树上每个节点对答案的贡献,0相似就不必说了 考虑到任意两个后缀的LCP即这两个后缀所在节点的LCA的 ...
分类:
其他好文 时间:
2016-07-10 21:54:51
阅读次数:
292
把字符串用后缀树的形式表现出来如下: a b c a b c a b c d e .substr[0] b c a b c a b c d e ....substr[1] c a b c a b c d e .......substr[2] a b c a b c d e ..........sub ...
分类:
其他好文 时间:
2016-06-25 19:05:46
阅读次数:
127
论没有看完题目的危害,以及预处理不做号的危害。两个小时过去了………………………………………… 不难。把字符串逆序建后缀自动机,利用fail边得到后缀树。(理解上的,实际上没有在树上跑。) 由于后缀树上每一个叶子节点所代表的串是原串的后缀。现在逆序之后,就变成了前缀。那 因为一个节点x的sz数组表示这 ...
分类:
其他好文 时间:
2016-05-13 09:44:08
阅读次数:
221
做了一些关于后缀自动机的题,写一下自己的一点理解吧
在开始看后缀自动机之前建议看一下后缀树,这样在做题的时候比较好想一点,感觉后缀树比自动机直观一点
后缀树的链接http://blog.163.com/ps_lm/blog/static/20790406120125883433110/
后缀自动机http://fanhq666.blog.163.com/blog/static/81943426...
分类:
其他好文 时间:
2016-05-13 01:49:58
阅读次数:
122
18.8 Given a string s and an array of smaller strings T, design a method to search s for each small string in T. 参考资料: 从Trie树(字典树)谈到后缀树 CareerCup All ...
分类:
其他好文 时间:
2016-05-09 06:54:27
阅读次数:
119
1. 概述
后缀数组是一种解决字符串问题的有力工具。相比于后缀树,它更易于实现且占用内存更少。在实际应用中,后缀数组经常用于解决字符串有关的复杂问题。
本文大部分内容摘自参考资料[1][2]。
2. 后缀数组
2.1 几个概念
(1)后缀数组SA 是一个一维数组,它保存1..n 的某个排列SA[1],SA[2],……,SA[n],并且保证Suffix(SA...
分类:
编程语言 时间:
2016-05-07 11:15:05
阅读次数:
224
由于蒟蒻azui前段时间忙着准备省选,并在省选中成功闷声滚大粗,博客停更了好久。。...
分类:
编程语言 时间:
2016-04-29 19:23:20
阅读次数:
214