本文已参与「新人创作礼」活动.一起开启掘金创作之路。
1、黑白棋游戏介绍
黑白棋游戏在8*8棋盘中进行,并计棋盘中的行为a-f,列为1-8。在游戏开始时,黑棋位于e4和d5,白棋位于d4和e5,如图3.1所示。
游戏规则如下:
在进行游戏时,黑方先行,然后双方交替下棋。在下棋时,需要在一个空格新落下一个棋子,并且翻转对手一个或多个棋子。翻转对方棋子的规则为:(1)新落下的棋子与棋盘上已有的同色棋子间,对方被夹住的所有棋子都要翻转过来,可以是横着夹、竖着夹或是斜着夹,夹住的位置上必须全部是对手的棋子,不能有空格;(2)一步棋可以在数个(横向、纵向、对角线)方向上翻棋,任何被夹住的棋子都必须被翻转过来,棋手无权选择不去翻某个棋子。另外,玩家需要至少翻转对手的一个棋子,否则就不能落子。如果一方没有合法棋步,也就是说不管下到哪里,都不能至少翻转对手的一个棋子,那这一轮只能弃权,而由他的对手继续落子直到该玩家有合法棋步可下,并且一方至少有一步合法棋步可下,就必须落子,不得弃权。
游戏结束的判断方法有 3 种。第 1 种:棋盘填满;第 2种:双方都无合法棋步可下,此时子多方为胜方。第3种:如果某一方落子时间超过1分钟,则判该方失败。
2、黑白棋问题的建模方法
利用蒙特卡罗树搜索算法解决问题的流程如下,往往需要根据具体的问题建立相应的模型,然后解决问题时分为选择阶段、扩展阶段、模拟阶段和回溯更新阶段。蒙特卡罗树搜索算法会重复选择、扩展、模拟、回溯这四个阶段直到满足终止条件,这个终止条件通常是-个可以接受的时间限制,或者一个可以接受的模拟次数限制,整个的模拟如图1.2之中所示。
选择阶段,从博弈树的根节点开始,递归地选择当前节点中具有最高评分的子节点,这个评分可以是节点的评估值,也可以在评估值的基础上结合一个附加值。在这个阶段主要应用的是蒙特卡罗树搜索之中的选择策略,常用的选择策略包含UCT选择策略,CrazyStone选择策略。这种选择的过程直到树的边际节点。
扩展阶段:将边际节点的子节点加入到博弈树的结构中,扩展的策略主要是逐次扩展的策略,该策略并非一次性将全部的字节点添加到树结构之中,而是设置一个窗口值,随这遍历次数的增加,逐次添加子节点到对应博弈树节点之中。
模拟阶段:使用蒙特卡罗模拟,随机进行游戏知道游戏的终点,仅仅集成了很少的领域知识,也就是维持游戏合法进行的规则,最后将本次游戏的最终结果作为一个评估值进行返回。
更新回溯阶段:沿着选择阶段下降的路径,逆向地将模拟阶段的评估值,以及访问次数更新的路径上的所有节点上。
3、建立黑白棋游戏博弈模型
将黑白棋游戏抽象出来的博弈模型归纳为如下:假定有对弈双方玩家和计算机,首先,玩家方可以自主选择当前格局合理的走法策略。选择完后,程序会根据游戏规定的逻辑进行棋子的夹取。每次玩家走步结束,格局转换完成。
然后轮到计算机方进行操作,计算机会根据玩家放置棋子的位置,利用蒙特卡洛搜索树实现最优棋子的摆放。放置完新的棋子后,计算机方走步结束,格局转换完成。
双方轮流按照策略对弈,直到游戏结束时,计算机方的棋子更多,或玩家没有摆放棋子的位置时,计算机胜利。或者游戏结束时,玩家方的棋子更多,或计算机没有摆放棋子的位置时,玩家胜利。如此黑白棋游戏就可以当作一个博弈问题来被研究。