理解tic-tac-toe的minmax算法(无递归)

时间:2016-12-18 17:35:55

标签: python algorithm graph-algorithm minmax

我试图在Python上为井字游戏编写一个minimax算法。
我不需要代码的帮助,只需要算法...... :-)
我试图没有递归,并且更好地理解它,我看this answer

所以,我的算法是这样的:
让我们说em是董事会所有空方格的列表 ' X' - 是人类(或计算机)的共同作用,并且' o' - 是(最小极大算法的)树 因此,算法的输入是一个井字棋盘,而输出是下一步的平方......

我还为每个空方块使用字典,在那里放置用于决定下一步的分数。我们将其称为map ...

算法

  1. 采用em大小为len(em)
  2. 的所有排列
  3. 对于每个排列都这样做:
  4.   

    来自置换的第一个元素' x'或者' o',例如如果排列是(2,4,6,7),那么算法将放置' o'在2(因为它是树的转弯),然后' x'在4等等......

  5.   

    如果' x'在排列中胜出(它可以在中间,我们不需要填写它直到结束)map[the_first_element_at_the_permutation]-=10

  6.   

    如果' o'在排列中胜出:map[the_first_element_at_the_permutation]+=10

  7. 毕竟这一点 - 我们正在map寻找得分最高的元素,我们将其作为下一步行动的正方形返回....

    不幸的是 - 它不起作用......它适用于许多情况,但很少有情况下它不起作用...... 例如:
    x.. .o. ..x
    现在轮到树了,它会把'和'在这里:
    x.. .o. o.x
    而且它不好,因为我可以把' x'在右上角,我将赢得....

    你建议我做什么?为什么我的算法不起作用? (我工作了几天,我不知道要做什么......)

0 个答案:

没有答案