MCTS因终端节点处理不当致一步送杀的技术疑问
MCTS终端节点的正确处理逻辑
核心是要明确:终端节点的胜负结果是确定的,一旦被识别就无需重复模拟,且要将这个确定结果完整传递给所有祖先节点,修正你提到的两种困境:
- 选择阶段:遍历节点子节点时,若遇到已标记为终端的节点,直接返回该节点的胜负结果,停止后续选择或模拟流程。
- 扩展阶段:当扩展出的子节点被判定为终端节点(比如一步杀),立即标记该节点的明确胜负状态,无需执行随机模拟——因为结果是确定的。
- 反向传播阶段:终端节点的确定结果要传递给所有祖先节点。比如你场景中的B是黑方胜的终端节点,反向传播时会给父节点W累计“白方失败”的结果,随着模拟次数增加,W的胜率会持续降低,不会因为某次模拟的偶然胜利而一直被高估。
- 最终选择逻辑:维基提到的“选模拟次数最多的节点”是建立在所有模拟都正确传递价值的基础上。当W的必败结果被多次反向传播后,其他更优的白方招法会逐渐获得更高的访问次数和胜率,最终成为最优选择。
针对你遇到的两个具体问题:
- 不需要允许再次选中B:一旦B被标记为终端节点,后续走到W节点时,选择阶段会直接调用B的已知胜利结果,不会重复选中B模拟,而是用这个确定结果拉低W的价值,避免W被错误选中。
- 黑方选择B的问题:当局面进入W之后的黑方回合,根节点是W对应的局面,黑方的子节点B是终端节点,第一次选择就会直接返回B的胜利结果,反向传播后B的访问次数和胜率都会处于绝对优势,后续每次选择都会优先选中B,最终它会成为访问次数最多的节点,被正确选为黑方的最优招法。
内容的提问来源于stack exchange,提问作者PolymorphismPrince
相关产品推荐
相关产品推荐

