資訊系108 梁祐承
描述兩序列間相似度
tcctctgcctctgccatcat---caaccccaaagt
|||| ||| ||||| ||||| ||||||||||||
tcctgtgcatctgcaatcatgggcaaccccaaagt
序列A: ATC
序列B: TCG
配對 | 分數 |
---|---|
ATC TCG |
-3 |
A-TC -TCG |
-4 |
A-TC T-CG |
-4 |
A-TC TC-G |
-4 |
... | |
ATC-- -TCG- |
1 |
所需時間成指數成長
且基因組資料龐大
int dpScore(char *A, char *B, int lenA, int lenB) {
// initialize
int score[lenA + 1][lenB + 1];
for(int i = 0;i < lenA;i++) score[0][i] = -i;
for(int i = 0;i < lenB;i++) score[i][0] = -i;
// calculate
for(int i = 1;i <= lenA;i++) {
for(int j = 1;j <= lenB;j++) {
if(A[i] == B[j]) { // match
score[i][j] = score[i - 1][j - 1] + 2;
}
else { // not match
score[i][j] = max(score[i][j - 1],
score[i - 1][j],
score[i - 1][j - 1]) - 1;
}
}
}
return score[lenA][lenB];
}
序列A: ATCGGCC
序列B: ACGC
A | C | C | G | G | C | C | ||
---|---|---|---|---|---|---|---|---|
0 | -1 | -2 | -3 | -4 | -5 | -6 | -7 | |
A | -1 | 2 | 1 | 0 | -1 | -2 | -3 | -4 |
C | -2 | 1 | 1 | 3 | 2 | 1 | 0 | -1 |
G | -3 | 0 | 0 | 2 | 5 | 4 | 3 | 2 |
C | -4 | -1 | 1 | 2 | 4 | 4 | 6 | 5 |
ATCGGCC A-CG-C-