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

利用矩阵搜索求所有最长公共子序列的算法.doc

利用矩阵搜索求所有最长公共子序列的算法.doc

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

文章编号 :1672 - 2477 (2008) 04 - 0052 - 05 利用矩阵搜索求所有最长公共子序列的算法 宫洁卿 (东南大学 软件学院 ,江苏 南京 211189) 摘要 :利用动态规划法求出二维数组的情况下 ,使用矩阵搜索的方法求出所有分支 ,从而求出所有最长公共子 序列的算法. 该算法将通常认为的指数量级的时间复杂度降低到了 ma x{ O ( cm n) , O ( ck ) } . 随后对此算法的 正确性以及效率做了证明. 关 键 词 :最长公共子序列 (L CS) ;矩阵搜索 ;算法 中图分类号 : T P301 . 6 文献标识码 : A 前 言 最长公共子序列 (Lo nge st Co mmo n Su b seque nce) 算法是一种非常基础的算法. 其主要目的是找出两 个序列中最长的公共子序列. 目前 L CS 算法在生物工程上有着广泛的应用. 在生物工程中 ,基因序列是保存生物基本信息的地方 ,包含了海量的生物数据 ,基因由 4 种不同的碱 基通过不同的组合来表现 ,人类基因有将近 30 亿个 DN A 碱基对 ,呈双螺旋结构. ???着基因序列长度的增 长 ,其组合的数量也是以指数级增长 ,通过人工对 DN A 的差异进行比较分析是难以实现的. 因此 ,分子生 物学家越来越依靠高效的计算机字符串比较算法 ,即将基因序列的问题转换为由 4 种基本字符组合出来 的字符串 ,并以此为基础进行处理. 在基因工程中 ,经常需要比较位于相同位置的两条不同的基因序列 ,根 据找出的公共自序列来对样本进行分析. 在常见的基因分析中 ,一般需要找到所有的最长公共子序列 ,此 时 L CS 算法成为首选. 然而 ,目前对 L CS 算法的研究一般针对的是对某一个最长公共子序列的算法进行 优化和分析 ,对求出所有的最长公共子序列的研究 ,目前尚无针对此问题的优秀算法[ 2~5 ] . 传统的算法都 是基于路径依赖的关系求所有公共自序列. 本文利用动态规划法 ,在计算出二维数组的情况下 ,提出一种 称为矩阵搜索的方法求出所有分支 ,从而求出所有最长公共子序列的算法 ,该算法将通常认为的指数量级 的时间复杂度降低到了 ma x{ O ( cm n) , O ( ck ) } . 1 背景知识 1 . 1 L CS 算法的定义[ 1 ] 定义 1 子序列的概念 : 设 X = ( x1 , x2 , , x m ) , 若有 1 ≤i1 i2 i k ≤m , 使得 Z = ( z1 , z2 , , x ik ) , 则称 Z 是 X 的子序列 , 记为 Z X . , z k ) = ( x i1 , x i2 , = ( A , B , C , B , D , A , B ) , Z = ( B , C , B , A ) , 则有 Z X . 公共子序列的概念 :设 X , Y 是两个序列 , 且有 Z X 和 Z Y , 则称 Z 是 X 和 Y 的公共子 e. g. X 定义 2 序列. 定义 3 最长公共子序列的概念 : 若 Z X , Z Y , 且不存在比 Z 更长的 X 和 Y 的公共子序列 , 则 称 Z 是 X 和 Y 的最长公共子序列 , 记为 Z ∈L CS ( X , Y ) . 最长公共子序列往往不止一个. e. g. X = ( A , B , C , B , D , A , B ) , Y = ( B , D , C , A , B , A ) , 则 Z″= ( B , D , A , B ) 均属于 L CS ( X , Y ) , 即 X , Y 有 3 个 L CS. 1 . 2 传统解法 Z = ( B , C , B , A ) , Z′= ( B , C , A , B ) , 传统的 L CS 解法是采用动态规划算法 ( Dyna mic Pro gra mi ng) 来解决. 其解法可以用一个递归函数来 表示 : 收稿日期 :2008 - 08 - 10 作者简介 :宫洁卿 (1984 —) ,男 ,安徽芜湖人 ,硕士研究生. 0 若 i = 0 或 j = 0 C[ i , j ] = C[ i - 1 , j - 1 ] + 1 若 i , j 0 且 x i = y j ma x{ C[ i - 1 , j ] , C[ i , j - 1 ]} 若 i , j 0 且 x i ≠ y i 引进一个二维数组 C , 用 C[ i , j ]

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档