【问题标题】:dynamic programming filling matrix in sequence alignment序列比对中的动态规划填充矩阵
【发布时间】:2014-01-05 05:16:00
【问题描述】:

大家好,我有 2d 字符数组 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;

                }

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

我怎样才能从这里到那里(到图片数组

【问题讨论】:

  • 你是怎么得到输出的?
  • 我不会将字母和数字添加到数组中。我会将它们分开,因为它们在示例表中。我会有一个数字矩阵和一个标题数组 charString
  • @tintinmj 要我给代码吗?
  • @PeterLawrey 我可以简单地从输出中删除字母
  • 如果您的问题已解决,只需接受答案(或添加您自己的答案,如果您自己解决了)。 请勿删除已解决的问题!解决的问题是 StackOverflow 如此出色的原因!

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


【解决方案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

【讨论】:

  • @PeterLawrey 他的问题不仅仅是印刷。似乎他不理解算法“我的问题是我如何使用动态编程”; “但这只是我做的一个简单测试,看看我是否可以比较,结果证明我可以”。
  • 目前还不清楚问题出在哪里,但我怀疑这是 OP 不知道的基础知识。 ;)
  • @PeterLawrey 我也这么怀疑。他可能还需要一篇关于动态编程的文章/教程。
  • op here :) 我的问题是我什至可以使用某种伪代码,我不知道从哪里开始填充或通过比较什么来填充??
  • @user2560965 所以我给你推荐了几本好书,让你看完就知道了。
猜你喜欢
  • 2013-11-01
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 2014-01-25
  • 2014-03-22
相关资源
最近更新 更多