- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 后缀树的应用 精确字符串匹配问题 最长重复子串问题 最长公共子串问题 DNA污染问题 多字符串的公共子串问题 遇难者身份识别问题 最长公共前缀问题 回文问题 ...... 后缀树的应用 精确字符匹配(ESM) 生物应用 识别DNA序列中的起始密码子ATG(RNA的转录翻 译起始点) 问题定义 给定长度为n的字符串S, 对任意长度为m的查询Q, 要 求发现S中所有Q的发生位置 后缀树的应用 精确字符匹配(ESM) 解决方案 预处理:构建字符串S的后缀树 O(n) 查询: 自根向下, 根据路径标识向下匹配查询Q至节点x。如果不存在这样的节点x, 则Q不在S中。 O(m) 节点x的子树中, 每个叶子对应Q在字符串S中的一个发生。对节点x的子树, 需要一次遍历。 O(k) 后缀树的应用 精确字符匹配(ESM) 例 给定S=acacag, 发现S中所有Q=aca的发生和Q=acc的发生。 后缀树的应用 最长重复子串(LRS) 生物应用 DNA序列中的重复子串,可以相邻,也可以分离, 常被用来作为“标记位点”(绘制遗传图、体细胞杂合) ,许多疾病也是由具有某种结构的重复序列引起的 问题定义 给定长度为n的字符串S,发现其中的最长重复子串 后缀树的应用 最长重复子串(LRS) 解决方案 构建字符串S的后缀树 O(n) 遍历后缀树发现最深的内部节点v O(n) 每个内部节点的路径标识对应一个重复子串 节点v的路径标识对应最长重复子串 注意,此处的节点深度是指节点的字符串深度 后缀树的应用 最长重复子串(LRS) 例 给定S=acacag, 发现S中的最长重复子串 后缀树的应用 最长公共子串(LCS) 生物应用 发现多个序列的同源性(回想曾经介绍过的序列比对) 问题定义 给定字符串P1,P2,…,Pk(k1), 发现它们的最长公共子串 后缀树的应用 最长公共子串(LCS) 解决方案 在每个字符串的末尾添加不同的终结符 O(k) 构建n个字符串的广义后缀树 O(n) 标记树中拥有代表来自所有k个字符串后缀的内部节点 O(n) 输出字符串深度最大的标记节点 O(1) 后缀树的应用 最长公共子串(LCS) 例 给定P1=acgat, P2=cgt, 两者的最长公共子串为cg 后缀树的应用 DNA污染问题 生物应用 如何准确的测定DNA序列(难道恐龙更接近人,而不 是更像鸟或者鳄鱼?) 问题定义 给定一个新测序的DNA序列S1和一个来自可能的污染 物的DNA序列S2, 发现S2中所有出现在S1中且长度超过 给定阈值x的子串 后缀树的应用 DNA污染问题 解决方案 构建S1和S2的广义后缀树 O(n) 标记树中拥有代表来自字符串S1和S2后缀的内部节点 O(n) 输出所有字符串深度大于阈值x的标记节点 O(1) 后缀树的应用 DNA污染问题 例 给定 S1=acacag$, S2=aca#, x=2, 判断S1是否已被污染 后缀树的应用 多字符串的公共子串 生物应用 识别两个或多个基因组的保守区域,探索生物结构的 本质特征 问题定义 给定K个字符串, 对所有的k (2?k?K), 计算至少被k个 字符共有的最长公共子串的长度l(k) 后缀树的应用 多字符串的公共子串 解决方案 在每个字符串的末尾添加不同的终结符 O(k) 构建n个字符串的广义后缀树 O(n) 遍历建立的广义后缀树, 计算每一个内部节点的C(v)值 O(Kn) C(v)代表以节点v为根的子树中不同终结符的数目 遍历广义后缀树, 对每个内部节点v, 如果l(C(v))v的字符串深度, 令l(C(v))=v的字符串深度 O(n) 后缀树的应用 多字符串的公共子串 例 给定字符串集合 S={sandollar, handlot, handler, grand, pantry}, 计算l(4)和l(5) l(4)=3 {sandollar, handlot, handler, grand} (2) l(5)=2 {sandollar, handlot, handler, grand, pantry } 后缀树的应用 遇难者身份识别问题 生物应用 识别遇难者 (例如, 在战争中死亡的士兵)身份 问题定义 给定一个长度为m的字符串Q和一个字符串数据库, 查 找该字符串数据库中所有包含Q的字符串 后缀树的应用 遇难者身份识别问题 解决方案 (1) 构建包含数据库中所有字符串的广义后缀树 O(n) (2) 遍历建立的广义后缀树, 发现字符串Q的所有发生位置 O(m+occ) 后缀树的应用 最长公共前缀 问题定义
文档评论(0)