我试图在Python上为井字游戏编写一个minimax算法。
我不需要代码的帮助,只需要算法...... :-)
我试图没有递归,并且更好地理解它,我看this answer
所以,我的算法是这样的:
让我们说em
是董事会所有空方格的列表
' X' - 是人类(或计算机)的共同作用,并且' o' - 是(最小极大算法的)树
因此,算法的输入是一个井字棋盘,而输出是下一步的平方......
我还为每个空方块使用字典,在那里放置用于决定下一步的分数。我们将其称为map
...
算法
em
大小为len(em)
来自置换的第一个元素' x'或者' o',例如如果排列是
(2,4,6,7)
,那么算法将放置' o'在2(因为它是树的转弯),然后' x'在4等等......
如果' x'在排列中胜出(它可以在中间,我们不需要填写它直到结束)
map[the_first_element_at_the_permutation]-=10
如果' o'在排列中胜出:
map[the_first_element_at_the_permutation]+=10
毕竟这一点 - 我们正在map
寻找得分最高的元素,我们将其作为下一步行动的正方形返回....
不幸的是 - 它不起作用......它适用于许多情况,但很少有情况下它不起作用......
例如:
x..
.o.
..x
现在轮到树了,它会把'和'在这里:
x..
.o.
o.x
而且它不好,因为我可以把' x'在右上角,我将赢得....
你建议我做什么?为什么我的算法不起作用? (我工作了几天,我不知道要做什么......)