如何在Tic-Tac-Toe中从Minimax算法移动?

时间:2014-06-30 13:22:33

标签: python algorithm minimax

到目前为止,我已成功地在Python中使用Minimax算法并将其应用于井字游戏。我可以让我的算法遍历整个搜索树,并返回一个值。

但是,我对如何获取此值并将其转换为移动感到困惑?我怎么知道要做出哪些举动?

感谢。

3 个答案:

答案 0 :(得分:0)

将minimax算法概念化为图形,其中每个顶点都是板的可能配置,从顶点到其邻居的每条边都是从一个板配置到下一个配置的过渡/移动。

您需要查看与当前状态相邻的每个电路板状态的启发式值,然后选择具有最佳启发式值的状态,然后更新屏幕以显示电路板状态。

如果你在电路板状态之间进行动画/转换,那么你必须查看边缘并找出两个状态之间的不同部分,并相应地为该部分制作动画。

答案 1 :(得分:0)

在使用MM算法时,您必须有办法生成可能的后继板;每一个都是搬家的结果。如您所建议的那样,您可以修改算法以包括跟踪用于生成板的移动(例如,将其添加到板的定义中,或使用具有板和移动的结构);或者,您可以在算法的顶层有一个特殊情况,因为这是唯一一个特定移动很重要的情况。

例如,如果你的函数当前只返回它传递的棋盘的计算值,那么它可以返回一个dict(或者tuple,它不是那么清楚),同时使用值和第一个移动来获取该值,然后修改您的代码以使用所需的任何位。

答案 2 :(得分:0)

选择移动的最简单方法是选择具有源于此移动的最大获胜位置数的移动。

我会为搜索树中的每个节点(游戏状态)记录当前游戏状态可能创建的可能获胜状态。