minimax深度第一搜索游戏树

时间:2010-02-27 17:29:24

标签: tree minimax

我想为九个男人的莫里斯游戏构建一个游戏树。我想在树上应用minimax算法来进行节点评估。 Minimax使用DFS来评估节点。那么我应该首先构建树到达给定的深度然后应用minimax还是可以在递归的minimax DFS中一起构建树和评估的过程?

谢谢 Arvind的

2 个答案:

答案 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)