序列比对中的动态规划填充矩阵

时间:2013-12-17 12:31:26

标签: java matrix dynamic-programming multidimensional-array sequence-alignment

你好我们有2d char数组opt [] []我在我的数组中有2个序列,例如

 `opt[0][0]=A        
  opt[0][1]=T
  opt[0][2]=G
  opt[0][3]=A`   

 opt[1][0]=A
 opt[2][0]=G
 opt[3][0]=C
 opt[4][0]=T

我目前有这个输出

   x/y|  A  T  G  A  -
_______________________
  0 A |  0  0  0  0
  1 G |  0  0  0  0
  2 C |  0  0  0  0
  3 T |  0  0  0  0
  4 - |  0  0  0  0

我的问题是我如何使用动态编程

将此数组创建到此

http://i.stack.imgur.com/ViHc9.png

如果匹配0罚款 如果它的不匹配1罚款 如果它的差距是2罚款

我可以像这样比较我的数组的字符

for(int i=0;i<4;i++){

                if(opt[0][i]==opt[i+1][0]){

                    result[0][i] =1;

                }

但这只是一个简单的测试,我看看我是否可以比较,结果证明我可以。

我怎么能从这里到那里(到图片阵列

1 个答案:

答案 0 :(得分:1)

我建议你阅读这些文章。

http://en.wikipedia.org/wiki/Smith%E2%80%93Waterman_algorithm
http://en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algorithm

任何语言的实施都是微不足道的。

如果您需要有关动态编程的信息,请参阅 谷歌自己,或检查这两个链接。

http://en.wikipedia.org/wiki/Dynamic_programming
https://www.topcoder.com/tc?d1=tutorials&d2=dynProg&module=Static