算法合集之《后缀数组-处理字符串的有力工具》.ppt
《算法合集之《后缀数组-处理字符串的有力工具》.ppt》由会员分享,可在线阅读,更多相关《算法合集之《后缀数组-处理字符串的有力工具》.ppt(31页珍藏版)》请在三一办公上搜索。
1、处理字符串的有力工具-,华南师范大学附属中学 罗穗骞指导教师:张学东,后缀数组,目录,第一部分 后缀数组的实现 DC3算法第二部分 后缀数组的应用 例1:求两个字符串的最长公共子串,基本定义,【后缀数组SA】后缀数组保存的是一个字符串的所有后缀的排序结果。其中SAi保存的是字符串所有的后缀中第i小的后缀的开头位置。【名次数组Rank】名次数组Ranki保存的是后缀i在所有后缀中从小到大排列的“名次”。为了叙述方便,以第k个字符开始的后缀称为后缀k。,基本定义,以字符串“aabaaaab”为例。,DC3算法,复杂 难以实现,仅40行代码,DC3算法,(1)、先将后缀分成两部分,然后对第一部分的后
2、缀排序。(2)、利用(1)的结果,对第二部分的后缀排序。(3)、将(1)和(2)的结果合并,即完成对所有后缀排序。,(1)、将后缀分成两部分,字符的编号从0开始。将后缀分成两部分:第一部分是后缀k(k模3不等于0)第二部分是后缀k(k模3等于0),对第一部分的后缀排序。,为了方便接下来的操作,这里要求字符串必须以一个最小的字符结尾。,suffix(1),suffix(2),递归,后缀数组,步骤(1)完成,DC3算法,(1)、先将后缀分成两部分,然后对第一部分的后缀排序。(2)、利用(1)的结果,对第二部分的后缀排序。(3)、将(1)和(2)的结果合并,即完成对所有后缀排序。,(2)、对第二部分
3、的后缀排序,第一关键字,第二关键字,基数排序即可,步骤(2)完成,DC3算法,(1)、先将后缀分成两部分,然后对第一部分的后缀排序。(2)、利用(1)的结果,对第二部分的后缀排序。(3)、将(1)和(2)的结果合并,即完成对所有后缀排序。,(3)、将(1)和(2)的结果合并,每次的比较都可以高效的完成,步骤(3)完成,算法分析,假设这个算法的时间复杂度为f(n)。第(1)步排序的时间为O(n)(一般来说,m比较小,这里忽略不计),新的字符串的长度不超过2n/3,求新字符串的sa的时间为f(2n/3)。第(2)和第(3)步的时间都是O(n)。,算法分析,f(n)=O(n)+f(2n/3)f(n)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 后缀数组-处理字符串的有力工具 算法 后缀 数组 处理 字符串 有力 工具
链接地址:https://www.31ppt.com/p-6596874.html