实现蒙特卡罗树搜索 - 游戏状态节点与可能的移动节点

时间:2016-06-04 16:52:22

标签: algorithm search tree decision-tree montecarlo

我正在尝试在一个相当复杂的游戏上实现蒙特卡罗搜索树方法,但有一些我不明白的事情(也许这适用于其他搜索算法,我不确定)。对不起,如果我的英语不够清楚。

我的问题是:树节点代表什么 - 可能的游戏状态或玩家可能做出的移动?我会试着解释为什么两个对我都毫无意义。

如果节点是游戏状态,为什么选择可能导致最佳节点的移动有意义?很可能我的对手会选择一个不同的比赛,这将导致我的比赛状态非常糟糕。

如果节点是可能的移动,同样的逻辑适用,只有一个级别下降 - 选择每个移动的最佳孩子是没有意义的,因为我的对手没有让我玩的方式让我玩的受助者那一步。相反,更随意地看待孩子是有道理的,但这恰好与这种方法应该起作用的方式相矛盾。

所以我猜共同的实现是两者之间的某种混合?我确实做了一些研究,我知道有时搜索算法会使用具有简单策略的确定性对手,并将其用于搜索。这似乎对我不起作用,因为我正在实施的游戏没有直观的策略(这就是为什么我选择蒙特卡罗方法 - 不需要评估功能)。感觉有一些非常简单的东西我不知道。

我希望我的问题足够清楚,我会感激任何帮助。

1 个答案:

答案 0 :(得分:1)

游戏树中的节点代表状态 - 边缘是从一个状态到另一个状态的移动。

在我熟悉的传统MiniMax游戏搜索中,从特定位置的最佳移动是拒绝对手有机会在下一级别发挥最佳潜力,等等,直到搜索深度已经用尽。

作为一个例子,在双层搜索(一个完整移动前瞻)中,如果,当初始玩家进行移动X1时,玩家二有潜在响应移动Y1,Y2和Y3各自得分(来自她的观点是1,2和3,然后X1从第一个球员的角度得分为-3。如果球员1的X2移动得分,比如说-4,那么X1是更好的初始移动(它否定了玩家2获得4分的机会),但如果X2得分为-2,那么X1仍然存在树顶的最佳动作。

我理解它的方式,蒙特卡罗树搜索意味着将检查的游戏节点的数量限制为某个随机子集。使用蒙特卡罗,你不必一直到终点节点(对于总能到达终点的游戏),尽管你可以,但如果需要,它也可以与评估功能一起使用。