3

我想用 Python 来评估各种动态编程方法来进行没有不确定性的 2 人棋盘游戏(例如国际象棋等)。我对精确和启发式解决方案都感兴趣。我的“评估”包括尝试每种方法并观察它在我生成的测试用例中的表现。

我正在寻找一个非常灵活的库或框架,以帮助我尽可能快速轻松地编码、评估(和调试......)各种方法。

我只关心渐近性能(例如O(n log n)vsO(n^2)等)。所以我需要高效的数据结构,但我不介意恒定因素的性能影响。

我不介意学习图书馆是否需要一些前期投资。

我不需要任何前端;我只使用命令行界面。

我也不需要并行/分布式编程支持(尽管如果它可用我不会拒绝它)。

我现在或很快需要该库来支持 Python 3。

有没有提供这种支持的库?

4

1 回答 1

2

我不知道有任何特定于动态编程的库。然而,动态编程基本上是使用 memoization 来加速计算函数,并且从 Python 3.2 开始有一个灵活的函数 memoization 装饰器可用,称为lru_cache().

它在functools,你绝对应该学习,因为它充满了漂亮的东西。

http://docs.python.org/dev/library/functools.html

@functools.lru_cache(maxsize=100, typed=False)

如果您在某些早期版本的 Python 中需要此功能,则网络上有各种可用的记忆配方。

于 2012-04-17T00:46:09.847 回答