我一直在努力解决这个问题。我需要通过蛮力来解决井字游戏 - 也就是说,让计算机通过自己玩几百万次来“学习”。
现在,“设置”有效 - 我将简要介绍一下。我的电脑通过产生随机动作来播放自己,直到一方或另一方获胜。然后它存储代表游戏的列表,并将列表与1,0,或-1相关联,以获得胜利,平局或亏损。
我目前使用的算法很简单;我发现董事会上的哪些举动与最多的胜利和最少的损失相关联,在当前董事会可能产生的所有游戏中,然后我移动到那里。
这适用于几乎所有情况;除了重要的一切:分叉。
在这种情况下:
o - - o - x o - x
- x - > - x - > - x -
- - o - - o o - o
计算机有下一步行动,计算机总是进入角落,然后分叉。
有没有办法通过“蛮力”解决井字游戏(不使用最小/最大,启发式,硬编码等等)?
答案 0 :(得分:2)
几百万次可能过量。我认为只有大约362,880种可能的游戏" (统计:第一个玩家有9个选项,下一个玩家剩下8个,然后是7个等等。所以9!= 362,880)。
我建议不仅根据最终的输赢来衡量您的移动选择,还要根据获胜所需的移动次数来权衡移动选择。更少的举动=更好的决定。
此外,一旦你建立了一个完整的"地图,你可以在某些情况下映射某些动作为" death"移动,不可避免地导致损失。精心设计的称重指标会看到没有路线可以获胜,而且从不选择那个移动(包括货叉)。