我有2個序列,AACAGTTACC
和TAAGGTCA
,我試圖找到一個全局序列比對。我設法創建了二維數組並創建了矩陣,我甚至用半動態方法填充了它。全局序列比對動態規劃在矩陣中找到最小值
這裏是我的代碼來填充矩陣:
void process() {
for (int i = 1; i <= sequenceA.length; i++) {
for (int j = 1; j <= sequenceB.length; j++) {
int scoreDiag = opt[i-1][j-1] + equal(i, j);
int scoreLeft = opt[i][j-1] - 1;
int scoreUp = opt[i-1][j] - 1;
opt[i][j] = Math.max(Math.max(scoreDiag, scoreLeft), scoreUp);
}
}
}
private int equal(int i, int j) {
if (sequenceA[i - 1] == sequenceB[j - 1]) {
return 1;
} else {
return -1;
}
}
我的主要問題是,這個代碼生成的輸出:
0 -1 -2 -3 -4 -5 -6 -7 -8
-1 -1 0 -1 -2 -3 -4 -5 -6
-2 -2 0 1 0 -1 -2 -3 -4
-3 -3 -1 0 0 -1 -2 -1 -2
-4 -4 -2 0 -1 -1 -2 -2 0
-5 -5 -3 -1 1 0 -1 -2 -1
-6 -4 -4 -2 0 0 1 0 -1
-7 -5 -5 -3 -1 -1 1 0 -1
-8 -6 -4 -4 -2 -2 0 0 1
-9 -7 -5 -5 -3 -3 -1 1 0
-10 -8 -6 -6 -4 -4 -2 0 0
但我希望它看起來像這樣(我都不在乎在照片的序號):
我去如果其匹配爲0,則應用罰分:每個不匹配1和每個差距2.
「LCS問題」是* not *「對齊問題」 - 完全不同。 – towi