最長共通部分列問題
二つの列 XとYの最後の要素は同じでないとする。その時、XとYの最長共通部分列は、二つの配列LCS(Xn,Ym-1)とLCS(Xn-1,Ym)の長い方である。
この特質を理解するため、次の二つの配列について考える:
列 X: ABCDEFG (長さn)
列 Y: BCDGK (長さm)
これら二つの配列の最長共通部分列は、最後がG(列"X"の最後の要素) もしくは、そうではないもののどちらかである。
ケース1:最後がGの最長共通部分列 この場合、最長共通部分列の最後はKではありえない。このとき、もしKが最長共通部分列にあれば、それは最後の文字となるので、Kは最長共通部分列にはない。したがって、YからKを取り除いても問題ないので、こう書くことができる: LCS(Xn,Ym) = LCS(Xn, Ym-1).
ケース2:最長共通部分列の最後が、Gではない場合 この場合は、上記と同じ理由により、列Xから G を取り除いても問題ないので、こう書くことができる:LCS(Xn,Ym) = LCS(Xn-1, Ym).
いずれにせよ、求めるべき最長共通部分列は、LCS(Xn, Ym-1) もしくはLCS(Xn-1, Ym)である。これら二つのLCSは、いずれもXとYの共通部分列である。LCS(X,Y)は定義より最長なので、 LCS(Xn, Ym-1) と LCS(Xn-1, Ym) の長い方である。