我想使用Python来评估各种动态编程方法,以便在没有不确定性的情况下进行双人棋盘游戏(例如国际象棋等)。我对精确和启发式解决方案都很感兴趣。我的“评估”包括尝试每种方法并观察它对我生成的测试用例的效果。
我正在寻找一个非常灵活的库或框架,帮助我尽可能快速,轻松地编写,评估(和调试......)各种方法。
我只关心渐近性能(例如,O(n log n)
vs O(n^2)
等。所以我需要高效的数据结构,但我不介意恒定因素的性能影响。
我不介意学习图书馆需要花费一些时间的前期投入。
我不需要任何前端;我只使用命令行界面。
我也不需要并行/分布式编程支持(虽然如果可用的话我不会拒绝它。)
我现在或很快就需要这个库来支持Python 3.
是否有任何图书馆提供此类支持?
答案 0 :(得分:2)
我不知道任何特定于动态编程的库。然而,动态编程基本上使用memoization来加速计算功能,并且从Python 3.2开始有一个灵活的函数memoization decorator,称为lru_cache()
。
它在functools
,你应该学习,因为它充满了漂亮的东西。
http://docs.python.org/dev/library/functools.html
@functools.lru_cache(maxsize=100, typed=False)
如果你在某些早期版本的Python中需要这个,那么网上就有各种备忘录配方。