3-后缀树的构建.ppt

上传人:b****9 文档编号:1035151 上传时间:2022-10-15 格式:PPT 页数:98 大小:1.37MB
下载 相关 举报
3-后缀树的构建.ppt_第1页
第1页 / 共98页
3-后缀树的构建.ppt_第2页
第2页 / 共98页
3-后缀树的构建.ppt_第3页
第3页 / 共98页
3-后缀树的构建.ppt_第4页
第4页 / 共98页
3-后缀树的构建.ppt_第5页
第5页 / 共98页
点击查看更多>>
下载资源
资源描述

3-后缀树的构建.ppt

《3-后缀树的构建.ppt》由会员分享,可在线阅读,更多相关《3-后缀树的构建.ppt(98页珍藏版)》请在冰豆网上搜索。

3-后缀树的构建.ppt

生物信息学概论讲义,第3章后缀树,后缀树介绍nave的后缀树构建Ukk的后缀树构建算法Weiner的后缀树构建算法McC的后缀树构建算法广义后缀树后缀数组,生物信息学概论讲义,后缀树介绍,什么是后缀树(suffixtree)?

一个例子,字符串:

xabxac,对应的后缀树,生物信息学概论讲义,后缀树介绍,后缀树的发展历史suffixtrie名称起源于retrieval特点:

每条边上标记一个字符,生物信息学概论讲义,后缀树介绍,后缀树的发展历史Weiner1973(positiontree)P.Weiner.Linearpatternmatchingalgorithms.Proc.ofthe14thIEEESymp.OnSwitchingandAutomataTheory,pp.1-11,1973McCreight1976E.M.McCreight.ASpace-economicalsuffixtreeconstructionalgorithm.J.ACM,23:

262-72,1976Ukkonen1995E.Ukkonen.On-lineconstructionofsuffix-trees.Algorithmica,14:

249-60,1995.后缀数组,生物信息学概论讲义,后缀树介绍,后缀树的用途许多字符串相关的问题(线性时间)精确匹配最长公共子串最长重复子串最长公共前缀发现回文,生物信息学概论讲义,后缀树介绍,后缀树的用途一个关于精确匹配的例子给定模式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文本T的长度kP在T中的出现次数,生物信息学概论讲义,后缀树介绍,后缀树的定义给定一个长度为m的字符串S,其对应的后缀树T是一棵有向的根树,树的m个叶子分别标记为1到m。

除了根节点,每个内部节点至少有两个孩子节点,每条边标记为S的一个非空子串。

不存在从同一个节点扇出且具有相同起始标记字符的边。

对每个叶子节点i,从根节点到i的路径上所有边标记的连接恰好对应于字符串S起始于位置i处的后缀Si.m。

生物信息学概论讲义,后缀树介绍,后缀树的定义根到叶子i的标记=suffixi,字符串:

xabxac,对应的后缀树,生物信息学概论讲义,后缀树介绍,后缀树的定义定义完备吗?

xa是xabxa的前缀,a是abxa的前缀,xa,a,定义没有保证任意给定的字符串都存在对应的后缀树,生物信息学概论讲义,后缀树介绍,后缀树的定义定义完备吗?

问题的症结字符串S的一个后缀匹配S的另一个后缀的前缀解决的办法,在字符串S的末尾增添一个不会在S中出现的字符(比如:

$),生物信息学概论讲义,后缀树介绍,一些其它的基本定义节点的路径标记(path-label)根到节点的(有序)子串连接节点的字符串深度(string-depth)节点路径标记中的字符个数分裂点的路径标记,生物信息学概论讲义,nave的后缀树构建,总体框架首先,插入后缀S1.m$,即整个字符串然后,对i从2到m,依次插入后缀Si.m细节假定插入suffixi后的中间结果树Ni已建立,如何构建插入suffixi+1后的树Ni+1?

从Ni的根出发,依次向下匹配后缀Si+1.m中的字符匹配终结在某个节点w,或某条边(u,v)的内部如果终结在(u,v)的内部,插入新节点w,标记(u,w)和(w,v);创建新边(w,i+1),标记新边,生物信息学概论讲义,nave的后缀树构建,构建过程,xabxac$,suffix1=xabxac$,suffix2=abxac$,abxac$,suffix3=bxac$,$caxb,suffix4=xac$,c$,w,suffix5=ac$,c$,u,suffix6=c$,c$,suffix7=$,$,1,2,3,4,5,6,7,字符串xabxac$,时间复杂度O(m2),生物信息学概论讲义,Ukk的后缀树构建算法,Ukk算法的特点节省了空间具有“在线”属性易于理解,生物信息学概论讲义,Ukk的后缀树构建算法,隐后缀树定义字符串S$的后缀树经过以下操作后得到的结果,称为字符串S的隐后缀树

(1)移除后缀树边标记中的终结符$

(2)移除没有标记的边(3)移除孩子节点少于两个的节点符号表示Ii代表字符串S1.i对应的隐后缀树,生物信息学概论讲义,Ukk的后缀树构建算法,隐后缀树一个例子,xa,bxa,1,$,4,a,bxa,2,$,5,$,6,axb,3,字符串xabxa的后缀树,$,$,$,字符串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+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)构建I1Forifrom1tom1doBegin(i+1)th阶段Forjfrom1toi+1Beginjth扩展从Ii的根向下,匹配Sj.i如果有必要,在标识为Sj.i的路径尾追加S(i+1)EndEnd,生物信息学概论讲义,Ukk的后缀树构建算法,后缀扩展规则假定Ii中,Sj.i=,如何扩展为S(i+1)规则1若终结在某个叶节点,则直接将S(i+1)添加到该叶节点对应的边标记的尾端,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的后缀树构建算法,后缀扩展规则一个实例,axabx,axabx,bx,bx,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)的指针被称为后缀链。

生物信息学概论讲义,Ukk的后缀树构建算法,基于后缀链的加速一个例子,xa,bxa,1,$,4,a,bxa,2,$,5,$,6,axb,3,$,$,$,=a,生物信息学概论讲义,Ukk的后缀树构建算法,基于后缀链的加速几个需要说明的问题为空,内部节点v的后缀链指向根节点根节点没有后缀链每个内部节点都有一个后缀链,1,$,4,a,bxa,2,$,5,$,6,axb,3,$,$,xa,bxa,$,生物信息学概论讲义,Ukk的后缀树构建算法,基于后缀链的加速定理如果在阶段(i+1)的jth扩展中创建了一个路径标识为x的内部节点v,那么或者在当前的树中已经存在路径标识为的内部节点,或者在下一次(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,生物信息学概论讲义,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末端之间的字符串如果v不是根,则沿着v的后缀链移动到节点s(v),然后从s(v)向下匹配字符串;如果v是根,从根向下匹配字符串Sj.i基于3种扩展规则,在当前的树中添加Sj.iS(i+1),如果扩展j-1创建了一个新的内部节点w,添加从w到S(w)的后缀链,生物信息学概论讲义,Ukk的后缀树构建算法,其它的加速技巧跳过/计数技巧,x,v,zabcdefghy,后缀j-1的尾,s(v),za,bc,def,xyhg,后缀j的尾,生物信息学概论讲义,Ukk的后缀树构建算法,其它的加速技巧跳过/计数技巧令g=|,g为s(v)下起始字符为首字符的边对应的字符数。

如果gg,则算法SEA可以直接跳至该边的末尾(节点),并设g=g-g,h=g+1,然后确定首字符匹配中第h个字符的下一条边,依此向下递推(g=g-g,h=h+g)。

当gg时,算法跳至边上的第g个字符。

隐含的小技巧:

(1)预先统计每条边上的字符数

(2)常量时间抽取字符串S中指定位置处的字符,生物信息学概论讲义,Ukk的后缀树构建算法,其它的加速技巧跳过/计数技巧,x,v,zabcdefghy,后缀j-1的尾,s(v),za,bc,def,xyhg,后缀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