1、生物信息学概论讲义,第4章 后缀树的应用,精确字符串匹配问题最长重复子串问题最长公共子串问题DNA污染问题多字符串的公共子串问题遇难者身份识别问题最长公共前缀问题回文问题.,生物信息学概论讲义,后缀树的应用,精确字符匹配(ESM)生物应用识别DNA序列中的起始密码子ATG(RNA的转录翻译起始点)问题定义给定长度为n的字符串S,对任意长度为m的查询Q,要求发现S中所有Q的发生位置,生物信息学概论讲义,后缀树的应用,精确字符匹配(ESM)解决方案预处理:#构建字符串S的后缀树 O(n)查询:#自根向下,根据路径标识向下匹配查询Q至节点x。#如果不存在这样的节点x,则Q不在S中。#O(m)节点x的
2、子树中,每个叶子对应Q在字符串S中的一个发生。#对节点x的子树,需要一次遍历。#O(k),ESM的后缀树解决方案要好于其它的解决方案m+kn,生物信息学概论讲义,后缀树的应用,精确字符匹配(ESM)例 给定S=acacag,发现S中所有Q=aca的发生和Q=acc的发生。#,a,ca,cag$,g$,g$,1,3,5,ca,cag$,g$,2,4,g$,6,$,7,Q,Q不存在,生物信息学概论讲义,后缀树的应用,最长重复子串(LRS)生物应用DNA序列中的重复子串,可以相邻,也可以分离,常被用来作为“标记位点”(绘制遗传图、体细胞杂合),许多疾病也是由具有某种结构的重复序列引起的问题定义给定长
3、度为n的字符串S,发现其中的最长重复子串,字符串S中的子串和形成了一个最长重复子串,当且仅当:#(1)=(2)最左(或右)侧的字符不等于最左(或右)侧的字符(3)的长度大于任何其它重复子串的长度,生物信息学概论讲义,后缀树的应用,最长重复子串(LRS)解决方案构建字符串S的后缀树 O(n)遍历后缀树发现最深的内部节点v O(n)每个内部节点的路径标识对应一个重复子串节点v的路径标识对应最长重复子串注意,此处的节点深度是指节点的字符串深度,后缀树结构出现之前,算法的时间复杂度为O(n2)利用后缀树之后,算法的时间复杂度变为O(n),生物信息学概论讲义,后缀树的应用,最长重复子串(LRS)例 给定
4、S=acacag,发现S中的最长重复子串,a,ca,cag$,g$,g$,1,3,5,ca,cag$,g$,2,4,g$,6,$,7,Q,S中的最长重复子串为aca,生物信息学概论讲义,后缀树的应用,最长公共子串(LCS)生物应用发现多个序列的同源性(回想曾经介绍过的序列比对)问题定义给定字符串P1,P2,Pk(k1),发现它们的最长公共子串,1970年,在后缀树出现以前,Don Knuth曾断言不可能存在线性时间复杂度的算法解决最长公共子串问题。#然而,使用后缀树恰恰完成了这个“不可能完成的任务”,生物信息学概论讲义,后缀树的应用,最长公共子串(LCS)解决方案在每个字符串的末尾添加不同的终
5、结符 O(k)构建n个字符串的广义后缀树 O(n)标记树中拥有代表来自所有k个字符串后缀的内部节点 O(n)输出字符串深度最大的标记节点 O(1),后缀树结构出现之前,算法的时间复杂度为O(n2)利用后缀树之后,算法的时间复杂度变为O(n),生物信息学概论讲义,后缀树的应用,最长公共子串(LCS)例 给定P1=acgat,P2=cgt,两者的最长公共子串为cg,a,g,5,#,6,$,4,cgat#,1,t#,4,cg,at#,2,t$,1,at#,3,t$,2,t,#,$,3,生物信息学概论讲义,后缀树的应用,DNA污染问题生物应用如何准确的测定DNA序列(难道恐龙更接近人,而不是更像鸟或者
6、鳄鱼?#)问题定义给定一个新测序的DNA序列S1和一个来自可能的污染物的DNA序列S2,发现S2中所有出现在S1中且长度超过给定阈值x的子串,如果S2中的某个子串出现在S1中,S1可能已经被污染了,生物信息学概论讲义,后缀树的应用,DNA污染问题解决方案构建S1和S2的广义后缀树 O(n)标记树中拥有代表来自字符串S1和S2后缀的内部节点 O(n)输出所有字符串深度大于阈值x的标记节点 O(1),DNA污染问题是最长公共子串问题的变种(发现长度大于x的公共子串),生物信息学概论讲义,后缀树的应用,DNA污染问题例 给定S1=acacag$,S2=aca#,x=2,判断S1是否已被污染,S1已被
7、污染,存在一个公共的长度2的子串aca,生物信息学概论讲义,后缀树的应用,多字符串的公共子串生物应用识别两个或多个基因组的保守区域,探索生物结构的本质特征问题定义给定K个字符串,对所有的k(2kK),计算至少被k个字符共有的最长公共子串的长度l(k),多字符串的公共子串问题是最长公共子串问题的变种,生物信息学概论讲义,后缀树的应用,多字符串的公共子串解决方案在每个字符串的末尾添加不同的终结符 O(k)构建n个字符串的广义后缀树 O(n)遍历建立的广义后缀树,计算每一个内部节点的C(v)值 O(Kn)C(v)代表以节点v为根的子树中不同终结符的数目遍历广义后缀树,对每个内部节点v,如果l(C(v
8、)v的字符串深度,令l(C(v)=v的字符串深度 O(n),生物信息学概论讲义,后缀树的应用,多字符串的公共子串例 给定字符串集合S=sandollar,handlot,handler,grand,pantry,计算l(4)和l(5)l(4)=3sandollar,handlot,handler,grand(2)l(5)=2 sandollar,handlot,handler,grand,pantry,生物信息学概论讲义,后缀树的应用,遇难者身份识别问题生物应用识别遇难者(例如,在战争中死亡的士兵)身份问题定义给定一个长度为m的字符串Q和一个字符串数据库,查找该字符串数据库中所有包含Q的字符串
9、,生物信息学概论讲义,后缀树的应用,遇难者身份识别问题解决方案(1)构建包含数据库中所有字符串的广义后缀树 O(n)(2)遍历建立的广义后缀树,发现字符串Q的所有发生位置 O(m+occ),生物信息学概论讲义,后缀树的应用,最长公共前缀问题定义给定长度为n的字符串S,对任意的位置i和j,发现S中Suffi和Suffj的最长公共前缀的长度解决方案构建字符串S的后缀树 O(n)输出Suffi和Suffj字符串深度最大的公共祖先 O(1),生物信息学概论讲义,后缀树的应用,回文问题生物应用特殊位点识别(如:#限制性酶剪切位点)问题定义给定长度为n的字符串S,发现S中所有最大的回文给定长度为n的字符串
10、S,发现S中所有最大的互补回文,生物信息学概论讲义,后缀树的应用,回文问题回文给定字符串S中的一个子串u,称其为一个回文,当且仅当u=ur。#其中,ur代表u的反转字符串,例如 u=acagaca是一个回文,因为acagaca=(acagaca)r,生物信息学概论讲义,后缀树的应用,回文问题回文如果Si.i+k-1=Srn-i+1.n-i+k,那么u=Si-k+1.i+k-1是一个奇数长度的回文,生物信息学概论讲义,后缀树的应用,回文问题回文如果Si.i+k-1=Srn-i+2.n-i+k+1,那么u=Si-k.i+k-1是一个偶数长度的回文,生物信息学概论讲义,后缀树的应用,回文问题互补回文
11、给定字符串S中的一个子串u,称其为一个互补回文,当且仅当u=r。#其中,代表u的互补字符串例如 acaugu是一个互补回文最大回文字符串S中的一个回文u=Si.i+|u|-1被称为一个最大回文,当且仅当ii+|u|-1,Si.j都不是回文,生物信息学概论讲义,后缀树的应用,回文问题解决方案预处理:#构建S和Sr的广义后缀树 O(n)执行如下循环:#For i=1 to n发现 的最长公共前缀。#如果最长公共前缀的长度是k,找到一个奇数长度的最大回文Si-k+1.i+k-1 O(1)(2)发现 的最长公共前缀。#如果最长公共前缀的长度是k,找到一个偶数长度的最大回文Si-k.i+k-1 O(1),
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1