我最近读到唐纳德·米奇(Donald Michie)设计的用火柴盒建造的“计算机”可以自学如何玩井字游戏。这是关于它的维基百科文章:
https://en.m.wikipedia.org/wiki/Matchbox_Educable_Noughts_and_Crosses_Engine
我觉得它看起来很有趣,所以我决定用 Python 制作一个数字版本,以供娱乐和练习。它在对抗随机移动时效果很好(我刚刚根据约 10,000 场比赛生成的数据再次运行了 5353 场比赛,它赢得了 5353 场比赛中的 4757 场),但它仍然经常输给我。
以下是完美答案应解决的一些问题:
需要玩多少场游戏才能让一台“火柴盒电脑”完全像 Michie 设计的那样开始完美地玩游戏?
带有实际火柴盒的原始计算机是否已达到完美 玩吗?
如果只进行训练,计算机能否达到完美的发挥 随机动作?
编辑: 这个问题并不是寻求代码方面的帮助,但下面的评论表明包含代码可能会有所帮助。这是我创建的 GitHub 存储库的链接,以便我可以在此处共享:
https://github.com/ACertainArchangel/Recreation-Of-MENACE-Tic-Tac-Toe..git
抱歉,我知道这样不太好,也不符合惯例;我只写了几个月的代码:)
我最终从 Computer Science Stack Exchange 的一位名为“Tassle”的用户那里得到了这个问题的答案;这是他的回答的链接:
简而言之,塔索表示,计算机会“卡住”一遍又一遍地选择一组开局走法,即使它不是最优的——如果它在对抗随机走法时表现良好的话,它很可能会这样做。塔塞尔解释得比我好得多。
得到答案后,我尝试针对自身的另一个副本来训练人工智能,这产生了稍微好一点的结果。然后我尝试在很多游戏中在人工智能和随机之间进行切换,看看人工智能是否会找到利用随机训练产生的弱点的方法,然后随机训练可以再次“撼动一切”。差异立即显而易见(现在千载难逢)。
增加失败时从火柴盒中取出的珠子数量(并确保总数不会低于零)也有帮助。我现在对它的运作方式感到满意。