我正在尝试解决Longest Common subsequence problem,这是找到一组序列中所有序列共有的最长子序列的问题(通常只有两个序列)。
我试图这样做来计算2个字符串之间的重叠。
这是众所周知的动态编程问题。但是,在我的情况下,字符串太大了。当我尝试使用2D矩阵进行记忆时,我遇到了内存问题。
一种解决方案可能是使用稀疏矩阵,但我很少担心性能开销。
此外,我想跨多个字符串执行此算法。并且可以提供近似答案,因为我只是想测量2个字符串之间的重叠。
编辑:经过一番调查后,我发现了以下替代方案
答案 0 :(得分:1)
为了降低内存复杂性,您不需要存储整个2D表。您只能存储上一行和当前行,因此如果将最大值存储在另一个数据结构中,则可以减少Grade
的内存消耗。这导致O(N)
内存使用,但时间复杂度仍为O(N)
。