ImageVerifierCode 换一换
格式:PPT , 页数:98 ,大小:1.37MB ,
资源ID:1035151      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1035151.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(3-后缀树的构建.ppt)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

3-后缀树的构建.ppt

1、生物信息学概论讲义,第3章 后缀树,后缀树介绍nave的后缀树构建Ukk的后缀树构建算法Weiner的后缀树构建算法McC的后缀树构建算法广义后缀树后缀数组,生物信息学概论讲义,后缀树介绍,什么是后缀树(suffix tree)?一个例子,字符串:xabxac,对应的后缀树,生物信息学概论讲义,后缀树介绍,后缀树的发展历史suffix trie名称起源于retrieval特点:每条边上标记一个字符,生物信息学概论讲义,后缀树介绍,后缀树的发展历史Weiner 1973(position tree)P.Weiner.Linear pattern matching algorithms.Proc.

2、of the 14th IEEE Symp.On Switching and Automata Theory,pp.1-11,1973McCreight 1976 E.M.McCreight.A Space-economical suffix tree construction algorithm.J.ACM,23:262-72,1976 Ukkonen 1995E.Ukkonen.On-line construction of suffix-trees.Algorithmica,14:249-60,1995.后缀数组,生物信息学概论讲义,后缀树介绍,后缀树的用途许多字符串相关的问题(线性时间

3、)精确匹配最长公共子串最长重复子串最长公共前缀发现回文,生物信息学概论讲义,后缀树介绍,后缀树的用途一个关于精确匹配的例子给定模式P=aw,字符串T=awyawxawxz,找到T中所有匹配模式P的部分,z,生物信息学概论讲义,后缀树介绍,后缀树的用途进一步理解基于后缀树的精确匹配P在字符串T的位置j处出现,j,P,k,P是子串Tj.m的前缀,P匹配根到叶子j的路径的部分起始标记,生物信息学概论讲义,后缀树介绍,后缀树的用途进一步理解基于后缀树的精确匹配时间复杂度仍然是O(n+m)不同阶段的任务分配不同以前,O(n)预处理P,O(m)搜索现在,O(m)预处理T,O(n+k)搜索,n模式P的长度m

4、文本T的长度kP在T中的出现次数,生物信息学概论讲义,后缀树介绍,后缀树的定义给定一个长度为m的字符串S,其对应的后缀树T是一棵有向的根树,树的m个叶子分别标记为1到m。除了根节点,每个内部节点至少有两个孩子节点,每条边标记为S的一个非空子串。不存在从同一个节点扇出且具有相同起始标记字符的边。对每个叶子节点i,从根节点到i的路径上所有边标记的连接恰好对应于字符串S起始于位置i处的后缀Si.m。,生物信息学概论讲义,后缀树介绍,后缀树的定义根到叶子i的标记=suffixi,字符串:xabxac,对应的后缀树,生物信息学概论讲义,后缀树介绍,后缀树的定义定义完备吗?,xa是xabxa的前缀,a是a

5、bxa的前缀,xa,a,定义没有保证任意给定的字符串都存在对应的后缀树,生物信息学概论讲义,后缀树介绍,后缀树的定义定义完备吗?问题的症结字符串S的一个后缀匹配S的另一个后缀的前缀解决的办法,在字符串S的末尾增添一个不会在S中出现的字符(比如:$),生物信息学概论讲义,后缀树介绍,一些其它的基本定义节点的路径标记(path-label)根到节点的(有序)子串连接节点的字符串深度(string-depth)节点路径标记中的字符个数分裂点的路径标记,生物信息学概论讲义,nave的后缀树构建,总体框架首先,插入后缀S1.m$,即整个字符串然后,对i从2到m,依次插入后缀Si.m细节假定插入suffi

6、xi后的中间结果树Ni已建立,如何构建插入suffixi+1后的树Ni+1?从Ni的根出发,依次向下匹配后缀Si+1.m中的字符匹配终结在某个节点w,或某条边(u,v)的内部如果终结在(u,v)的内部,插入新节点w,标记(u,w)和(w,v);创建新边(w,i+1),标记新边,生物信息学概论讲义,nave的后缀树构建,构建过程,x a b x a c$,suffix1=xabxac$,suffix2=abxac$,a b x a c$,suffix3=bxac$,$c a x b,suffix4=xac$,c$,w,suffix5=ac$,c$,u,suffix6=c$,c$,suffix7=

7、$,$,1,2,3,4,5,6,7,字符串xabxac$,时间复杂度O(m2),生物信息学概论讲义,Ukk的后缀树构建算法,Ukk算法的特点节省了空间具有“在线”属性易于理解,生物信息学概论讲义,Ukk的后缀树构建算法,隐后缀树定义字符串S$的后缀树经过以下操作后得到的结果,称为字符串S的隐后缀树(1)移除后缀树边标记中的终结符$(2)移除没有标记的边(3)移除孩子节点少于两个的节点符号表示Ii代表字符串S1.i对应的隐后缀树,生物信息学概论讲义,Ukk的后缀树构建算法,隐后缀树一个例子,x a,b x a,1,$,4,a,b x a,2,$,5,$,6,a x b,3,字符串xabxa的后缀

8、树,$,$,$,字符串xabxa的隐后缀树,特点 后缀不一定终结在叶节点 隐含了所有的后缀信息,生物信息学概论讲义,Ukk的后缀树构建算法,隐后缀树隐后缀树和后缀树的关系,字符串:xabxac,若字符串末尾的字符从未在之前的字串中出现过,那么对应的隐后缀树和后缀树是相同的,生物信息学概论讲义,Ukk的后缀树构建算法,基本思想从i=1开始,构建字符串S1.m的每个前缀S1.i对应的隐后缀树Ii(im)转换最后一棵隐后缀树Im为S1.m的真实 后缀树,时间复杂度O(m),生物信息学概论讲义,Ukk的后缀树构建算法,构建过程(假定字符串长度为m)分为m个阶段:I1,I2,Ii,Im阶段i+1分为i+

9、1次扩展,1,2,3,4,5,i+1,i,m,Ii+1=S1.i+1,I1,I2,I3,Ii,j,S(i+1),生物信息学概论讲义,Ukk的后缀树构建算法,构建框架(假定字符串长度为m)构建 I1For i from 1 to m1 doBegin(i+1)th阶段 For j from 1 to i+1 Begin jth扩展 从Ii的根向下,匹配Sj.i 如果有必要,在标识为Sj.i的路径尾追加S(i+1)EndEnd,生物信息学概论讲义,Ukk的后缀树构建算法,后缀扩展规则假定Ii中,Sj.i=,如何扩展为S(i+1)规则1若终结在某个叶节点,则直接将S(i+1)添加到该叶节点对应的边标

10、记的尾端,S(i+1),生物信息学概论讲义,Ukk的后缀树构建算法,后缀扩展规则假定Ii中,Sj.i=,如何扩展为S(i+1)规则2非终结在叶节点且之后没有起始标识为S(i+1)的路径,则在之后创建一个节点(如果不存在),并由该节点引出一条标记为S(i+1)的边,指向新的叶节点j。,S(i+1),生物信息学概论讲义,Ukk的后缀树构建算法,后缀扩展规则假定Ii中,Sj.i=,如何扩展为S(i+1)规则3之后存在起始标识为S(i+1)的路径,则无需任何操作。,S(i+1),S(i+1),生物信息学概论讲义,Ukk的后缀树构建算法,后缀扩展规则一个实例,a x a b x,axabx,b x,b

11、x,xabx,1,2,3,4,b,b,b,b,b,b,5,生物信息学概论讲义,Ukk的后缀树构建算法,加速构建过程关键问题快速定位S1.i的i+1个后缀nave解决办法每次扩展,从根向下进行次比较O()阶段i+1的第j次扩展比较i+1-j次从Ii构建Ii+1的时间复杂度O(i2)构建Im的最终时间复杂度O(m3),O(m3)=O(m)?,生物信息学概论讲义,Ukk的后缀树构建算法,基于后缀链的加速什么是后缀链?若x代表一个字符串,其中x为一个单独的字符,为一个子串(可能为空),则对一个路径标识为x的内部节点v而言,如果存在另一个路径标识为的节点s(v),那么从节点v到s(v)的指针被称为后缀链

12、。,生物信息学概论讲义,Ukk的后缀树构建算法,基于后缀链的加速一个例子,x a,b x a,1,$,4,a,b x a,2,$,5,$,6,a x b,3,$,$,$,=a,生物信息学概论讲义,Ukk的后缀树构建算法,基于后缀链的加速几个需要说明的问题为空,内部节点v的后缀链指向根节点根节点没有后缀链每个内部节点都有一个后缀链,1,$,4,a,b x a,2,$,5,$,6,a x b,3,$,$,x a,b x a,$,生物信息学概论讲义,Ukk的后缀树构建算法,基于后缀链的加速定理如果在阶段(i+1)的jth扩展中创建了一个路径标识为x的内部节点v,那么或者在当前的树中已经存在路径标识为

13、的内部节点,或者在下一次(j+1)th)扩展中,将创建路径标识为的内部节点。证明:,x,S(i+1),j,v,S(i+1),j+1,生物信息学概论讲义,Ukk的后缀树构建算法,基于后缀链的加速推论1Ukk算法中,任何新创建的内部节点在截至下一次后缀扩展时,都会有一条指向其它节点的后缀链推论2在任何隐后缀树Ii中,如果存在某个路径标识为x的内部节点v,那么必定存在一个对应的节点s(v),其路径标识为,生物信息学概论讲义,Ukk的后缀树构建算法,基于后缀链的加速沿着后缀链构建Ii+1问题描述:在阶段i+1的第j次扩展中,如何定位隐后缀树Ii中的后缀Sj.i,Ii=Ii+1,j,j-1,生物信息学概

14、论讲义,Ukk的后缀树构建算法,基于后缀链的加速沿着Ii中的后缀链构建Ii+1过程描述,j=1,x=S1.i,root,1,v,s(v),(的前缀),j=2,S(i+1),x,生物信息学概论讲义,Ukk的后缀树构建算法,基于后缀链的加速沿着后缀链构建Ii+1过程描述,扩展Sj.i到Sj.i+1,root,1,v,s(v),(的前缀),j1,应用扩展规则,右图中,已插入Sj-1.i+1如何插入Sj.i+1?,最多上移一个节点(想一想,为什么?),生物信息学概论讲义,Ukk的后缀树构建算法,基本扩展算法(SEA)发现路径Sj-1,i之上(或之处)的第一个节点v,并令代表节点v与路径Sj-1,i末端

15、之间的字符串如果v不是根,则沿着v的后缀链移动到节点s(v),然后从s(v)向下匹配字符串;如果v是根,从根向下匹配字符串Sj.i基于3种扩展规则,在当前的树中添加Sj.iS(i+1),如果扩展j-1创建了一个新的内部节点w,添加从w到S(w)的后缀链,生物信息学概论讲义,Ukk的后缀树构建算法,其它的加速技巧跳过/计数技巧,x,v,zabcdefg hy,后缀j-1的尾,s(v),za,b c,def,x y h g,后缀j的尾,生物信息学概论讲义,Ukk的后缀树构建算法,其它的加速技巧跳过/计数技巧 令g=|,g为s(v)下起始字符为首字符的边对应的字符数。如果gg,则算法SEA可以直接跳

16、至该边的末尾(节点),并设g=g-g,h=g+1,然后确定首字符匹配中第h个字符的下一条边,依此向下递推(g=g-g,h=h+g)。当gg时,算法跳至边上的第g个字符。,隐含的小技巧:(1)预先统计每条边上的字符数(2)常量时间抽取字符串S中指定位置处的字符,生物信息学概论讲义,Ukk的后缀树构建算法,其它的加速技巧跳过/计数技巧,x,v,zabcdefg hy,后缀j-1的尾,s(v),za,b c,def,x y h g,后缀j的尾,g=10,g=2,g=10-2=8,h=2+1=3,g=8-2=6,h=3+2=5,g=6-3=3,h=5+3=8,g=43,终止于y后,生物信息学概论讲义,Ukk的后缀树构建算法,一个重要的性质令(v,s(v)为Ukk算法中的某条后缀链,则v的节点深度至多比s(v)的节点深度大1。其中,v的节点深度是指从根到节点v的路径上节点的个数。,跳过/计数策略使Ukk算法的时间复杂度变为O(m2),生物信息学概论讲义,Ukk的后缀树构建算法,一个重要的性质,x,ab,cd,efg,h,ij,ab,c,d,e,fg,h,i,j,生物信息学概论讲义,Ukk的后缀树

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1