最长公共子序列的Nakatsu算法的体会与改进

本文探讨了最长公共子序列(LCS)问题,特别是Nakatsu算法在解决该问题时的体会和改进。在尝试应用Nakatsu算法时,发现直接使用存在计算错误。通过对比动态规划法,作者指出仅依赖一条对角线无法确保得到正确LCS实例。文章提出,当最大公共长度接近字符串长度时,Nakatsu算法速度优于动态规划。为提高效率和节省空间,建议对字符串进行预处理。最后,作者分享了Nakatsu算法的主要公式及VB代码实现,尽管回溯可能得到的LCS不唯一,但长度是准确的。
摘要由CSDN通过智能技术生成

最长公共子序列的Nakatsu算法的体会与改进

  最长公共子序列(Longest Common Subsequence,LCS)是将两个给定字符串分别删去零个或多个字符后得到的长度最长的相同字符序列。例如,字符串abcabcabb与 bcacacbb的最长公共子序列为bcacabb。LCS问题就是要求两个给定字符串的最长公共子序列。

  最近对算法有点兴趣,拜读了牛人 文本比较算法Ⅶ——线性空间求最长公共子序列的Nakatsu算法
的文章,将代码拷贝后,直接应用时却发现有些小问题,经与动态规划法对比,有的计算结果有问题。似乎优化并不成功。

  文中有个例子

  A:481234781;B:4411327431

L矩阵
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值