计算机科学

动态编程

动态规划 - 解决问题

假设我们有两种短DNA序列SEQ1.SEQ2..Pupposps,我们也得到了一套操作:

  • 代替:用任何其他字符替换一个字符串的一个字符。
  • 插入:将一个字符插入字符串。
  • 删除:将一个字符删除到另一个字符串中。

考虑下面的两个序列

1 2
seq1 ='ctcccagggtg'seq2 ='acgtatagcttg'

将一个序列转换为另一个序列所需的最小次数是多少?

蚂蚁看到一个广场 N × N n \ times n 矩阵仅包括 0. 0. '沙 1 1 s。他被赋予找到最大的任务 1 1 方形空间(仅限由最大的方形底盘 1 1 's)。例如,如果他被给出了下表,阴影区域将是最大的广场区域:

不幸的是,布里利尺寸更大的矩阵。作为他是合格的程序员,他将问题划分为子问题,并提出了一个辉煌的动态编程解决方案。

他的动态编程解决方案认为该子问题 S. [ 一世 j ] S [I,J] S. [ 一世 j ] S [I,J] 是最大的一侧长度 1 1 右下角的方形空间 一世 j 我,J.

一旦他解决问题,他的表有以下值:

S. [ 15. ] [ 15. ] = 4. S [15] [15] = 4 S. [ 16. ] [ 14. ] = 10. S [16] [14] = 10 S. [ 15. ] [ 14. ] = 12. S [15] [14] = 12

鉴于在[16] [15]中有一个1,什么是值 S. [ 16. ] [ 15. ] S [16] [15]

最长的常见后续(LCS)问题定义如下:

给定两个字符串:字符串 S. S. 长度 N N 和字符串 T. T. 长度 m m ,目标是产生它们的最长常见的子序列:在两个字符串中左右出现的最长字符序列(但不一定在连续块中)。

例如:

S. S. =Bzhac. T. T. =HKABFT.

那么最长的常见子序列的长度 3. 3. 并且是HAB.

假设您有以下两种基因的片段,您怀疑为同源蛋白质代码,但很久以前就已经脱离了进化量表。找到他们的LCS,它的长度是多少?

1 2 3 4 5 6 7 8 9 10 11 12
sequence_1.=ggcaaggtactccggtcttaatgaatggcggg.aaaggtacgcacgcggtatgggggggtgaaggggcgaatagacaggc.tcccctcactcgctagggaggcaattgtataagaatgcatactgca.Tcgatacataaaacgtctctcatcgcttgcccaagttgtgaagtgtct.ATCACCCCTAGGCCCGTTTCCCGCA.sequence_2=ggctggcgtttttgaatcctcggtcccccttgtct.ATCCAGATTAATCCAATTCCCTCATTTAGGACCCTACCAAGTCAACA.ttggtatatgaatgcgacctcgaagaggccgcctaaaatgacagtg.gttggtgctctaacttcattggttaactcgtgtatcagcgcgata.GGCTGTTAGAGGTTTAATATTGTAT.

×

问题加载......

注意加载......

设置加载......