动态规划解最长公共子序列问题LCS(一)
修改于 2016-09-17 11:51:00
关键定义
状态定义:设c[i, j]为子串Xi与Yj的LCS的长度,i和j都代表长度;
状态转移方程:假定X与Y的LCS为Z,X={x1, x2, …, xm},Y={y1, y2, …, yn},Z={z1, z2, …, zk}.对于这个问题,可以分3种情况:
如果xm == yn,则表明xm与yn为两者LCS的其中一个元素,即zk == xm == yn,此时问题转变为求子串Xm - 1与Yn - 1的LCS了,因为Zk可以表示为Zk = LCS(Xm - 1, Yn - 1) + xm | yn;
如果xm != yn && zk != xm,则表明xm不是两者LCS中的元素,即LCS存在于Xm - 1与Yn中,此时问题转变为求子串Xm - 1与Yn的LCS了;
如果xm != yn && zk != yn<