我正在为一个Python编码类写一个项目,我有一个问题。我正在编写一个Reversi引擎,它将在一个游戏中查看几步前进,然后选择它认为最好的移动。虽然我知道python不是一种理想的语言(因为它没有其他语言那么快),但我认为可以编写至少具有功能性的代码,同时仍然可能有点慢。在
也就是说,我正在尝试创建两个表:一个游戏板(比如一个矩阵)和一个包含整数的游戏树。我想使用一些内存效率高、速度快的东西来添加、删除和读取条目。在
我现在使用董事会的效率不高。我想问大家会建议什么模块(包括如何使用它们的说明)来编写一些与此类似但内存更轻的模块(例如:array、numpy;但我不知道如何使用这两个模块中的任何一个):self.board = [[0, 0, 0, 0, 0, 0, 0, 0,],
[0, 0, 0, 0, 0, 0, 0, 0,],
[0, 0, 0, 0, 0, 0, 0, 0,],
[0, 0, 0, 1, 2, 0, 0, 0,],
[0, 0, 0, 2, 1, 0, 0, 0,],
[0, 0, 0, 0, 0, 0, 0, 0,]
[0, 0, 0, 0, 0, 0, 0, 0,],
[0, 0, 0, 0, 0, 0, 0, 0,]]
对于游戏树,我有一些想法取决于列表列表的轻量级。我用标准python编写的一个想法类似于:
^{pr2}$
每一个%都是上面给出的一个板(这是非常理想的:不是每个回合都有三个选项)。但这是一个缓慢而沉重的对象,python很难有效地使用内存(尤其是如果我使用的是4层以上的内存)。在
如果有人以前使用过这样的程序,或者有高效模块导入的想法,请让我知道!在
举一个游戏树的例子,想想wikipedia page,尤其是页面上的第一张图片。在
编辑:理想的情况下,我想看的远不止四个步骤,这只是一个例子,前四个层次将如何看。此外,还将有多个给定树的副本漂浮在周围供使用。速度对于像这样呈指数增长的东西很重要。在