最长的公共子序列问题是一个经典的计算机科学问题,解决它的算法是版本控制系统和wiki引擎的根源。两种基本算法是用于创建Hunt-McIlroy算法原始版本的diff和当前由GNU diff实用程序使用的Myers diff算法。两者似乎或多或少都是通过在表示两个字符串、或文本文件之间的编辑空间的图形中找到最短路径来工作的。编辑空间是将一个序列转换为另一个序列所必需的插入或删除的数量。那么,Myer的diff算法和Hunt-McIlroy算法到底有什么区别呢?
发布于 2017-03-11 22:45:25
Myers算法主要是因为它在工作时不记住路径,并且不需要“预见”到哪里,因此它可以在任何时候集中精力在最小复杂度的编辑脚本所能达到的最远位置上。这种“最小的复杂性”确保了所发现的是LCS,而不是记住它经过哪条路径,直到找到匹配时才使用更少的内存。不试图提前计算所有匹配,就可以避免它们的存储,并使它们在匹配时间而不是内存占优势。
https://stackoverflow.com/questions/42635889
复制相似问题