python的difflib.find如何?

最初想要一种算法来找到两个python字符串之间最长的子字符串。 基于对线性运行时的在线一致性,最佳运行时的一般答案是“构建后缀树”。 然而,在这里没有任何网上的例子,并且这并不奇怪,因为后缀树被指出是非常复杂和不直观的构造。

我实施了一个DP解决方案(仍然是二次的),对于我想要做的事情来说太慢了。

尝试使用Python的difflib.find_longest_match,它更快(但它仍然没有像id那样快)。

所以如果有人知道,find_longest_match()方法使用什么算法?

另外,如果find_longest_match()算法不是最优的,那么是否有人知道在哪里可以找出线性最大子串算法是如何实现的。 这是一个有点着名的问题,它的奇怪之处在于如何在线获得最佳解决方案。 或者,也许我只是误导了下界是二次的,甚至nlogn。

谢谢。


这是代码:http://svn.python.org/view/python/tags/r271/Lib/difflib.py?view=markup在我看来,它是二次的。

只有加速似乎是一个字典,以获得使用给定字符的所有索引。 这将时间减少了一个因素,即使用不同字符的数量。

链接地址: http://www.djcxy.com/p/40065.html

上一篇: How is python's difflib.find

下一篇: Analysis of algorithms