我正在寻找用于C ++程序的LCS算法的(空间)高效实现。输入是两个整数的随机访问序列 我目前正在使用维基百科页面中关于LCS的动态编程方法。但是,它在内存和时间上有O(mn)行为,并且因为较大输入的内存错误而死在我身上 我读过Hirschberg的算法,它大大提高了内存使用率,Hunt-Szymanski和Masek以及Paterson。由于实现这些并非易事,我更愿意在现有实现的数据上尝试它们。有谁知道这样的图书馆?我想,因为文本差异工具很常见,所以应该有一些开源库吗?
答案 0 :(得分:3)
搜索此类内容时,请尝试使用scholar.google.com。找到学术着作要好得多。它出现了 http://www.biotec.icb.ufmg.br/cabi/artigos/seminarios2/subsequence_algorithm.pdf 本文档是“对最长公共子序列算法的调查”。
答案 1 :(得分:0)
不是C ++而是Python,但我觉得可用。
答案 2 :(得分:0)
Hirschberg's Algorithm嵌入了一个javascript实现:几乎是C.