蒙特卡洛树搜索( Monte-Carlo Tree Search,简称MCTS)
这是许多游戏的核心算法。顾名思义,这是一种常见的数据结构——树。这棵树的每一个节点都代表游戏的一个当前局面的确定状态。在每局游戏过程中,每一步落子前,蒙特卡罗树搜索都会模拟游戏多次,就像人类思考的方式一样(比如职业棋手在每一步落子前都会预测若干步接下来的落子),通过模拟游戏的发展方向,观察每一步可以落子的位置是否会导致最终胜利。并试图根据模拟结果预测最有希望的落子动作,因此可将游戏选择落子看作是 “最有希望的下一步行动”的问题。下图显示了MCTS算法的一次迭代。
在MCTS的一次模拟中,游戏将按照某种策略进行到底,直到平局或分出胜负。每次模拟时落子的选择在不同版本的MCTS有不同的实现,在普通的MCTS算法中,默认是一种称为RolloutPolicy的策略,通过随机选择下一步来完成游戏,由于它非常快,因此有了大量的样本,最终得到明智的决策,纯MCTS算法对叶子节点进行评估时,使用到了这一策略。另外,MCTS算法的一个非常流行的变体是树的上置信限(Upper Confidence Bounds for Trees,简称为UCT )。使用的公式如下所示,