使用Lua实现连接四中的极小极大算法。

我正在使用 Corona sdk 制作 Connect Four 游戏,并希望在用户选择与计算机玩时使用 minimax 制作 AI 玩家。我发现 minimax Minimax for Lua 可以帮助,但我卡在了树的建立上。

我的问题是如何创建树以通过该算法并为树的每个节点分配值,因为我猜在这种情况下,每个节点的值都为 -1(失败)或 +1(胜利),并找到 Connect Four 的目标列?我正在考虑 minimax 的树将类似于

local t = tree() -- tree() creates the new tree for minimax
t:addNode('A',nil,0) -- head node
t:addNode('B1','A',0)
t:addNode('B2','A',0)
t:addNode('B3','A',0)

t:addNode('C1','B1',4)
t:addNode('C2','B1',12)
t:addNode('C3','B1',7)

t:addNode('C4','B2',10)
t:addNode('C5','B2',5)
t:addNode('C6','B2',6)

t:addNode('C7','B3',1)
t:addNode('C8','B3',2)
t:addNode('C9','B3',3)

我是否需要每次以任意组合移动后都建立一棵树?我如何决定每次移动的最佳分数?

我希望这些信息足以理解我的问题。谢谢。

点赞
用户88888888
用户88888888

MinMax 不需要实际构建一棵树。树只是可能移动的基本结构。实际上,每次构建树都是相当逆向的,你应该隐式遍历可能移动的树。这个教程可能会有帮助:http://neverstopbuilding.com/minimax

2015-05-06 14:33:32