我想为九个男人的莫里斯游戏构建一个游戏树。我想在树上应用minimax算法来进行节点评估。 Minimax使用DFS来评估节点。那么我应该首先构建树到达给定的深度然后应用minimax还是可以在递归的minimax DFS中一起构建树和评估的过程?
谢谢 Arvind的
答案 0 :(得分:2)
是的,您可以在递归的极小极大情况下同时构建和评估 这是一个很好的方法,因为它可以节省内存空间。
实际上,您甚至可以同时申请alpha-beta pruning。
修改:这是来自wiki Minimax的伪代码:
function integer minimax(node, depth)
if node is a terminal node or depth == 0:
return the heuristic value of node
α = -∞
for child in node: # evaluation is identical for both players
α = max(α, -minimax(child, depth-1))
return α
由于我们(可能)在每个节点中存储游戏/棋盘状态,我们可以嵌入
创造游戏状态
在minimax算法中,即
function integer play_minimax(node, depth)
if node is a terminal node or depth == 0:
return the heuristic value of node
α = -∞
LOOP: # try all possible movements for this node/game state
player = depth mod 2
move = make_game_move(node, player)
break if not any move
α = max(α, -play_minimax(move, depth-1))
return α
答案 1 :(得分:0)