0

Longest Common Subsequence Problem の解決策を誰か説明してくれませんか? 具体的には、再帰関係は

if(x i =y j ) then answer= max L (i-1, j-1) +1

else answer=Max{Max L (i-1, j), Max L (i, j-1)}

x i / y iは構築されたテーブルの文字です。Max Lは、構築されたテーブルのエントリに対応します。

私の質問は、なぜ答えが maxL(i-1,j-1) + 1 なのですか? 文字が一致する場合にのみ、左上の対角線から追加する必要があるのはなぜですか? ありがとうございました

4

1 に答える 1

0

再帰関係の (xi=yj) は、両方の文字列がそれぞれの現在の位置に同じ文字を持っていることを意味します。

簡単な例を見てみましょう:

入力文字列AGGTABGXTXAYBについて考えてみます。

両方の文字列の最後の文字が'B'一致します。[つまり、xi==yj 条件が成立します]。

したがって、LCS の長さは次のように記述できます。

LCS("AGGTAB", "GXTXAYB") = 1 + LCS("AGGTA", "GXTXAY")

LCS("AGGTA", "GXTXAY") は Table[i−1,j−1] (つまり max L [i-1][j-1])に格納されます。

于 2013-05-11T18:27:38.340 に答える