スミス-ウォーターマンがどのように機能するかを見てください。2つのシーケンス(長さNのS1、長さMのS2)があり、NxM行列(Aと呼びましょう)を作成します。ここで、A(i、j)は「S1[1..i]とS2の最良のスコアアラインメントです。 [1..j]。」これを行うには、最後の要素に基づいてA(i、j)を取得する方法についての繰り返しを記述します-A(i、j)は
A(i-1, j-1) + match/mismatch score
A(i,j-1) + indel score
A(i-1,j) + indel score
これが基本的な考え方です。あなたはそれを少し微調整する必要があるかもしれません。
あなたが求めていることをするために、あなたは2つの行列を必要とします。A(i、j)を「一致で終わるS1[1..i]とS2[1..j]の最高スコアの配置」とし、B(i、j)を「S1[の最高スコアの配置」とします。 1..i]とS2[1..j]はインデルで終わります。」
簡単なので、Bから始めましょう。B(i、j)は最高です
A(i,j-1) + indel score
A(i-1,j) + indel score
B(i,j-1) + indel score
B(i-1,j) + indel score
そしてA(i、j)は最高です
A(i-1, j-1) + match/mismatch score
B(i-3, j-3) + match/mismatch score for the three