动态规划算法简介

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
动态规划算法 (Dynamic programming Algorithm)
双序列比对(Pairwise sequence alignment) 动态规划 (Dynamic programming) 动态规划算法(Dynamic programming Algorithm) 参考资料(Reference)
LSPARK L—SPARK L—SPARK LTPEEK LTPEKK— LT—PEEK —————LSPARK L—S—P—A—R—K— LTPEEK————— —L—T—P—E—E—K 当所有的残基都对应到空位时,此时比对结果的长度为两倍 的序列长度。因此,两条长度为n的序列,之间产生的任何 一个比对结果都可以通过在2n个可能的位置上选n个位置产 生。因此所有可能比对的数目为:

动态规划算法 (Dynamic programming Algorithm)
苏州大学医学部2012级生物信息学 陈君才
1230402134
双序列比对 (Pairwise sequence alignment)
序列比对指将两个或多个序列排列在一起,标明其相 似之处。序列中可以插入间隔(通常用短横线“-”表示), 对 应的相同或相似的符号(在核酸中是A, T(或U), C, G,在蛋 白质中是氨基酸残基的单字母表示)排列在同一列上。
动态规划(Dynamic Programming)

动态规划的思想:
若一个大问题可以分解为许多小的问题,且各个小的问题 之间有相似性,则在求解大问题的最优解的时候采用动态 规划的思想。大问题的最优解是各个小问题的最优解合在 一起得到的。
能用动态规划解决问题的性质

最优化原理; 无后效性; 有重叠子问题。

动态规划的思想应用在双序列比对上,形 成现在使用广泛的动态规划算法:
比对寻找两条序列 的最长共同子序列 分解成寻找开始寻 找比对残基的最高 分数 序列最高匹配的分 数是当前最高分数 加上之前最高分数 的匹配 迭代成整条序列
求大问题的最优解
分解成求初始小问 题的最优解
当前的最优解加上 之前的最优解
A A G C A G
DP for sequence alignment: Example
A A G C A G
2
-3
-8
DP for sequence aligபைடு நூலகம்ment: Example
A A G C A G
2
-3 -8
-3
-3 -8
-8
-1 -6
Trace back: Decode the Alignment

当n=300时,代入计算式子可以算出比对的 次数为:
为目前宇宙中可见所 有原子数目的1亿倍!

如何找到比对分数最大的结果?

一对残基可能的比对结果:


两条序列比对得到的分数=各个单独残基的 比对分数之和。 Final Score= (sum of substitution scores)+(-1)*(sum of Gap Penalty)


The best alignment that ends at a given pair of symbols is the best alignment of the sequences up to that point, plus the best alignment for the two additional symbols. 最好的比对就是之前最好的比对加上当前 最好的比对。
如何找到局部相似度高低?

Smith-Waterman
参考资料: 北京大学生物信息中心网上课程视频 高歌 基因组信息学 张高川

Thanks for your attention!
From Global Alignment to Local Alignment



动态规划算法得到的整体两条序列比对结 果的最优解。 对于蛋白质的某个功能域有时候往往是保 守的。因此需要知道整条序列中某一段序 列的相似度高低。 同时由于核酸的内含子外显子的剪切修饰 全局比对无法找到局部序列的相似度。
动态规划解题的步骤


划分阶段; 确定状态和状态变量; 确定决策并写出状态转移方程; 寻找边界条件。

实际应用中可以按以下几个简化的步骤进 行设计: 分析最优解的性质,并刻画其结构特征; 递归的定义最优解; 以自底向上或自顶向下的记忆化方式(备 忘录法)计算出最优值; 根据计算最优值时得到的信息,构造问题 的最优解。
双序列比对的过程
输入数据: 两条序列S1和S1 参数: 一个打分函数f 输出数据: 使得比对得到的分数最大化的比对结果 Arg max(f(ali(S1,S2)))
双序列比对的目的

寻找两条序列之间的最长共同子序列(LCS)
应该采用什么方法? Enumerate?
Can Enumerate do?
所有最优解合成大 问题的最优解
动态规划算法

比对两条序列X和Y: F(i,j)表示序列X1…i和序列Y1…j的最高比对分数
Dynamic Programming Matrix
A A G
A
G C
DP for sequence alignment: Example
A A G
0
A G C
DP for sequence alignment: Example
相关文档
最新文档