最长公共子序列的Nakatsu算法的体会与改进
最长公共子序列(Longest Common Subsequence,LCS)是将两个给定字符串分别删去零个或多个字符后得到的长度最长的相同字符序列。例如,字符串abcabcabb与 bcacacbb的最长公共子序列为bcacabb。LCS问题就是要求两个给定字符串的最长公共子序列。
最近对算法有点兴趣,拜读了牛人 文本比较算法Ⅶ——线性空间求最长公共子序列的Nakatsu算法
的文章,将代码拷贝后,直接应用时却发现有些小问题,经与动态规划法对比,有的计算结果有问题。似乎优化并不成功。
文中有个例子
A:481234781;B:4411327431
4 | 8 | 1 | 2 | 3 | 4 | 7 | 8 | 1 | ||
---|---|---|---|---|---|---|---|---|---|---|
i=0 | i=1 | i=2 | i=3 | i=4 | i=5 | i=6 | i=7 | i=8 | i=9 | |
k=0 | 0 | 0 |