LCSの問題の解決策を読みました。しかし、現在では最長類似サブシーケンス問題があります。シーケンスCは、CがAのサブシーケンスであり、CがBのサブシーケンスであるようにC内のK個の要素を置き換えることができる場合に限り、2つのシーケンスA、Bの類似したサブシーケンスです例えば、A = "ABCDE"、B = "BCAFE"、K = 1の場合、最も長い類似サブシーケンスは "BCDE"( "BCDEは" ABCDE "のサブシーケンスであり、 D 'を "A"または "F"で "BCAFE"のサブシーケンスにする)。DPを使用して「最長類似サブシーケンス」を解決する方法
私の問題は、これを解決するための再帰的な方法しか考え出されていないことですが、明らかにこれには時間がかかりますDPを使用してこの問題を解決する方法はありますか?
ursionメソッドは次のようになります:
LSS(i, j, k)
if(i == 0 or j == 0)
return 0
if(A[i] == B[j])
return LSS(i-1, j-1, k) + 1
if(k > 0)
return max(LSS(i-1, j-1, k-1) + 1, LSS(i-1, j, k), LSS(i, j-1, k))
else
return max(LSS(i-1, j, k), LSS(i, j-1, k))
ありがとうございます。しかし私が疑問に思っていたことは、2次元問題に変換してボトムアップDPを使って解決する方法があるのかどうかということです。つまり、kを取り除き、LCSの問題にかなり似ていますか? – Einsambr
@Einsambr .:ああこれは私がチェックしなければならないだろう。私は方法があると思う。 – coderredoc