如何优化递归算法不重复?

时间:2010-07-10 18:50:17

标签: python optimization recursion diff

在Python的标准库中发现difflib.SequenceMatcher类不适合我的需求之后,编写了一个通用的“diff”-ing模块来解决问题空间。经过几个月的思考更多关于它正在做什么之后,递归算法似乎在搜索更多内容,而不是通过重新搜索一个单独的“搜索线程”也可能已经检查过的序列中的相同区域。

diff模块的目的是计算一对序列(列表,元组,字符串,字节,字节数组等)之间的差异和相似性。初始版本比代码的当前形式慢得多,速度提高了十倍。有没有人建议在递归算法中实现修剪搜索空间的方法以提高性能?

2 个答案:

答案 0 :(得分:6)

您正在寻找的技术称为memoization

答案 1 :(得分:0)

如果您有任何昂贵的方法,您可能使用相同的参数多次调用,那么您可以使用参数作为键来缓存方法的结果。