我正在为 Python 编码类编写一个项目,我有一个问题。我正在编写一个黑白棋引擎,它将在游戏中向前看几个动作,然后选择它认为最好的动作。虽然我知道 python 不是一种理想的语言(因为它不像其他一些语言那么快),但我认为可以编写至少是功能性的代码,但仍然可能有点慢。
话虽如此,我正在尝试创建两个表:一个游戏板(想想一个矩阵)和一个包含整数的游戏树。我想使用一些内存高效且快速的东西来追加、删除和读取条目。
我现在使用的板子效率不高。我想问一下任何人会建议哪些模块(以及如何使用它们的说明)来编写一些与此等效但在内存上更轻的东西(例如:数组,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 编写的想法类似于:
tree_zero = %
tree_one = [%, %, %]
tree_two = [[%, %, %], [%, %, %], [%, %, %]]
tree_thre = [[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]]],
tree_four = [[[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]]],
[[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]]],
[[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]]]]
每个百分比都将是上面给出的棋盘之一(并且非常理想:并非每一轮都恰好有三个选项)。但这是一个缓慢而沉重的对象,python 很难有效地使用内存(特别是如果我比 4 层更深)。
如果有人以前使用过这样的程序或有导入有效模块的想法,请告诉我!
举一个游戏树的例子,想想维基百科页面,尤其是页面上的第一张图片。
编辑:理想情况下,我想进一步看四步,这只是前四个级别的示例。此外,将有给定树的多个副本漂浮在周围以供使用。对于像这样呈指数增长的事物,速度很重要。