网站大量收购独家精品文档,联系QQ:2885784924

后缀数组构造算法综述课件.ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
后缀数组构造算法综述课件

后缀数组构造算法综述 Suffix Array Construction Algorithms 上世纪90年代,Manbei和Myers提出了后缀数组这一概念,以其在空间复杂度的优势用来取代后缀树这一数据结构,并提出了第一个后缀数组的构造算法 ——前序倍增算法。 在字符串处理当中,后缀树和后缀数组都是非常有力的工具。其中后缀树大家了解得比较多,后缀数组是后缀树的一个简单而高效的替代品它比后缀树容易实现,能够实现后缀树的功能而时间复杂度也很有优势。并且,它比后缀树所占用的空间小很多。 后缀数组——字符串处理中的有力武器 利用后缀数组,可以在O(n)内计算出任意两个后缀的LCP(longest common prefix),这正是后缀数组能强有力地处理很多字符串问题的重要原因之一 。 在网络检索,生物基因数据库等大规模数据集领域里表现出了极大的潜力。 基本概念 后缀(suffix):对于一个字符串S,它的某个后缀Suffix(i)为从下标i开始到字符串末尾的子串。 对于非空字符串 S=abeacadabea$ , 为了方便处理,在字符串末尾加一个“哨兵”——$,约定哨兵是比所有字符都小的字符。 Suffix(1)=abeacadabea $ Suffix(2)=beacadabea $ 很明显,对于一个长度为n的字符串S,有n个后缀。 故事就是从这n个后缀展开的 ...zZz 将S的n个后缀suffix(i)(i=0,1,…n-1)从小到大进行排序。 将排序后的i存放到数组SA中,称数组SA为后缀数组。 将所有的后缀Suffix(i)的名次存放到数组ISA中,称数组ISA为名次数组。 后缀数组SA与名次数组ISA成反函数关系 其中一个数组,即可求得另一个。 SA[i]=j, ISA[j]=i 以字符串S=abeacadabea$为例, 下面介绍基于字符串的长度为h前缀比较的一组概念 h-sort:用后缀的长度为h的前缀进行比较的结果,记为SAh和ISAh; 算法概述 前序倍增法 对所有的后缀按第一个字母排序,即进行1-sort,并计算出SA1和ISA1。对于所有的h=1,2…, SA2h和ISA2h可以在O(n)的时间内由SAh和ISAh计算得出,直到所有的h-group内只有一个成员时结束迭代,此时得出了最后的SA和ISA。迭代的次数最多为logn,所以时间复杂度为nlogn。 递归法 将字符串X分为两部分X′和Y,如果计算出SAX′,则SAy和最终的SA可以在O(n)的时间内计算得出。所以计算SA,最终转变为递归的计算SAX′。时间复杂度为O(n) 。 Induced copying 先计算后缀的一个子集的排序结果,利用该结果继续计算出补集的排序结果。但不是采用递归的方法,这类算法在实践应用中有特别好的性能,但理论上的最坏时间复杂度是O(n2logn)。 KS算法 以S= mississippi为例, 将后缀分成两部分: 第一部分是后缀i(i模3不等于0),记为S12 第二部分是后缀i(i模3等于0),记为S0 并按每个后缀的前3位进行排序,即3-sort。排序采用三次的Radix算法,可以在O(n)的时间内结束。 问题的规模缩减为原来的2/3 (分治思想)。 对S12可以递归的使用该算法。 第一步 计算S12 S12=1,4,7,2,5,8,10 S0= 0,3,6,9 S12=1, 4, 7, 10, 2, 5, 8 第二步 计算S0 比较任意i,j%3=0, 若si≠sj可得比较结果; 若si=sj,则在第一步结果中查找i+1、j+1%3=1,可得比较结果; 第三步将S0、 S12合并得最终结果。 对于待合并的后缀S0和S12,设其起始字符位置为第i和第j位。 若si≠sj ,可得比较结果。 否则,分两种情况, 设j%3=1,则i+1%3=1、j+1%3=2,都在S12内,可以直接得到结果; 设j%3=2,则i+2%3=2、j+2%3=1,仍在S12内,同样可以直接得到结果。 * 肉斩居姑傅世栓栖历遗又术汝泌距栅走烤苇内蒙排炯规臭白蕉窑堡茸壁紫后缀数组构造算法综述课件后缀数组构造算法综述课件 Suffix Array Construction Algorithms 卉近斯一梁铀焙啪喷奈事髓蚜诲镍企痢村止诧板胆狡拌木苯承银肿蠢篆窝后缀数组构造算法综述课件后缀数组构造算法综述课件 Suffix Array Construction Algorithms 蹋埃鹅净酸馒纲了窖复怨嚣当夏点殷舟拷奎倾宙惹兵塘多

文档评论(0)

dmdt5055 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档