利用矩阵搜索求所有最长公共子序列的算法
- 格式:pdf
- 大小:313.59 KB
- 文档页数:5
( D, B)均属 于 L S X , ), X, B, A, C ( y 即 y有 3个 L S C .
1 2 传统 解法 _
传统 的 L S解 法是 采用动 态规 划算法 ( y a c rga n ) C D n mi P o rmig 来解决 . 解法可 以用一个 递归 函数来 其
f若 。 :o o 或J= :
1
}
【 xc[一 1力 , E, 1 ) ij> 0且 . ≠ YJ ma ( , c iJ一 ] 若 , = 7 2 引进 一个 二维 数组 c, c i ]记 录 x 与 y 的 L S的长 度. 用 E, J C 如果是 自底 向上 进行 递推 计算 , 么在 那
是基 于路 径依 赖 的关 系求 所有 公共 自序列 . 文利 用动 态 规划 法 , 计 算 出二 维数 组 的情 况下 , 出一种 本 在 提 称 为矩 阵搜索 的方 法求 出所有 分支 , 而求 出所有 最长公 共子 序列 的算法 , 从 该算 法将 通 常认 为 的指数 量级 的时 间复杂度 降低 到 了 ma { cs) 0( ) . x O(Fn , } t
时 L S算 法 成为首 选. 而 , C 然 目前对 L S算 法的研 究一般 针对 的是对 某 一个 最 长公 共 子序 列 的算 法进 行 C 优化 和分 析 , 求 出所 有 的最长 公共子 序列 的研 究 , 对 目前 尚无 针对 此 问题 的优 秀算 法口 . 统 的算 法都 传
1 背 景 知识
11 L S算法 的定 义 . C ]
定 义 1 子 序列 的概念 : X 一 ( lX , , , 有 l 1 2 … < i ≤ m, 得 Z一 ( 1 z , 设 z ,2… X )若 ≤ < < ^ 使 z ,2
…
,
)一 ( , … , , X X ) 则称 Z是 X 的子序 列 ,记为 Z< X.
正 确 性 以及 效 率 做 了证 明.
关 键 词 : 长 公共 子序 列 ( C ) 矩 阵 搜 索 ; 法 最 L S; 算 文 献标 识 码 : A
中 图分 类 号 : P 0 . T 3 16
前
言
最长公 共子 序列 ( o g s o L n et mmo u sq e c) C nS b e u n e 算法 是一种 非常基 础 的算 法. 主要 目的是 找 出两 其
表示 :
收稿 日期 :0 8 8 1 2 0 一O — O
作者简介 : 洁卿(94 )男 , 官 18 一 。 安徽 芜湖 人 , 士研 究 生 搜 索 求 所 有 最 长 公共 子 序 列 的算 法 利
Ci ] { E一1 一1+1 ,>0 E, 一. i , ] 若i C J J 且z =
文 章 编 号 :6 2 4 7 20 )4 0 5 —0 1 7 —2 7 (0 8 0 — 0 2 5
利 用矩 阵搜 索求所 有 最 长公 共子序 列 的算 法
官 洁 卿
( 南大学 软件学院 , 苏 南京 东 江 2 18 ) 11 9
摘 要 : 用动 态 规 划 法 求 出二 维 数 组 的情 况 下 , 用 矩 阵 搜 索 的 方 法求 出所 有 分 支 , 而求 出所 有 最 长公 共 子 利 使 从 序 列 的算 法 . 算 法将 通 常认 为 的 指 数 量 级 的 时 间 复 杂 度 降 低 到 了 ma { c n , c) . 后 对 此 算 法 的 该 xO(m )O(k ) 随
eg . .X 一 ( B, B, A, , 一 ( C, A) 则有 Z< X. A, C, D, B) Z B, B, ,
定 义 2 公共 子序 列 的概念 : x, 设 y是两个 序 列 , 且有 Z< X 和 z< y, 称 z是 x 和 y 的公共子 则
序列.
定 义 3 最长公 共 子序列 的概念 : Z< X, 若 Z< y, 且不 存在 比 Z更 长 的 X 和 y 的公 共子序 列 ,则 称 Z是 X 和 y 的最长 公共 子序 列 , 为 Z ∈ L S X , .最 长公共 子序 列往往 不止 一个 . 记 C ( y) eg . .X 一 ( B, B, A, , A, C, D, B) Y一 ( D, A, A) B, C, B, ,则 Z 一 ( C, A) Z B, B, , 一 ( C, B , B, A, )
长, 其组合 的数量也 是 以指数 级增长 , 通过 人工对 D NA 的差 异进行 比较分 析是 难 以实 现 的. 因此 , 子生 分
物学家 越来越 依靠 高效 的计算 机字 符 串 比较算 法 , 即将 基 因序 列 的 问题 转 换 为 由 4种 基 本 字 符组 合 出来 的字符 串 , 以此 为基 础进行 处理 . 并 在基 因工程 中 , 常需要 比较 位于相 同位 置 的两 条不 同的基 因序列 , 经 根 据找 出的公 共 自序列 来对样 本进行 分析 . 在常见 的基 因分 析 中, 般 需要 找 到所 有 的最 长 公 共子 序 列 , 一 此
第2 3卷 第 4期 20 0 8年 1 2月
安
徽
工
程
科
技
学
院
学
报
J u n l fAn u ie st fTe h o o y a d S in e o r a h i o Un v r iy o c n l g n ce c
Vo . 3 NO 4 12 . . De ., 00 c 2 8
个序 列 中最 长 的公共 子序 列. 目前 L S算 法在 生物工 程上有 着广 泛的应 用. C 在生 物工 程 中 , 因序列是 保存生 物基本 信 息的地 方 , 含 了海 量 的生 物 数据 , 因 由 4种 不 同 的碱 基 包 基
基 通过不 同 的组合来 表现 , 人类 基 因有 将近 3 O亿个 D NA碱 基对 , 呈双 螺旋 结 构. 随着 基 因序 列长 度 的增