我制作了一个井字游戏的A.I. 对于每一个棋盘状态,我的A.I.会返回一个确切的位置来移动。(即使有多个正确的位置,它每次都会选择同一个位置,而不是随机选择)
我还制作了一个函数来循环遍历所有可能的A.I.的移动方式。
这是一个递归函数,它让A.I.在给定的棋盘上移动,然后让另一个玩家进行所有可能的移动,并在每个可能的移动中调用自身的递归函数,生成新的棋盘。
我对A.I.先手和对方先手的情况都进行了这样的操作,并将结果相加。最终得到418种可能的胜利,115种可能的平局,以及0种可能的失败。
但现在我的问题是,如何最大化胜利的数量?我需要将这个统计数据与某些东西进行比较,但我不知道该与什么进行比较。
回答:
你读过维基百科上的文章了吗? 链接
终止位置的数量
仅考虑棋盘状态,并考虑棋盘对称性(即旋转和反射)后,只有138个终止棋盘位置。假设X每次都先走:
- 91个独特的位置由(X)赢得
- 44个独特的位置由(O)赢得
- 3个独特的位置为平局
可能游戏的数量
不考虑对称性,可能游戏的数量可以通过手动计算得出,具体公式可以得出255,168种可能的游戏。假设X每次都先走:
- 131,184个完成的游戏由(X)赢得
- 77,904个完成的游戏由(O)赢得
- 46,080个完成的游戏为平局
你可以从第一段生成138个终止棋盘位置
或者
你可以在随机字段上运行足够的测试,并将你的结果与此处的统计数据进行比较 链接
5步内获胜 1440 0.6%
6步内获胜 5328 2.1%
7步内获胜 47952 18.8%
8步内获胜 72576 28.4%
9步内获胜 81792 32.1%
平局 46080 18.1%
总计 255168 100.0%