量子Tic-Tac-Toe AI

时间:2009-11-11 19:05:43

标签: java artificial-intelligence

在我的数据结构课程中,我们已经分配了一个项目,在该项目中,我们需要制作一个功能齐全的Quantum Tic-Tac-Toe游戏,玩家将面对一个可以赢得胜利的机器人。

教授建议我们在AI中使用游戏树。然而,像往常一样,我正在寻找更具挑战性的东西。

任何人都可以提出一个更好,更先进的方法,我可以研究和实施吗?


我不是在寻找一些完全荒谬的东西,这会使问题变得更加复杂。相反,我正在寻找一种先进的方法 - 比如使用A *算法而不是BFS。

4 个答案:

答案 0 :(得分:13)

你学习新事物(甚至是你自己)的愿望是好的。然而,复杂的解决方案通常是not the best solution

你的教授建议使用游戏树进行人工智能有一个很好的理由。建议这是因为它是适合这项工作的工具。没有更好的方法可以研究,因为这是最好的方法。

您提到您在数据结构类(通常是第一年或第二年级)。我猜你的任务的重点是学习树数据结构。如果你想让事情变得更复杂,首先编写树版本,然后去研究解决同一问题的其他方法。

答案 1 :(得分:4)

评估回合制游戏有两个部分。

  1. 游戏树。
  2. 效用函数。
  3. 游戏树允许您提前播放动作以查看它们将在哪里领先。如果游戏足够复杂,你无法计算所有可能性(http://en.wikipedia.org/wiki/Solved_game),那么你需要一种方法来确定特定棋盘场景的“好”程度。国际象棋的不良效用函数可能只是计算片段值而忽略位置。

    您还需要一种有效的遍历游戏树的方法。阅读Minimax,Alpha-beta修剪,Negascout等。

答案 2 :(得分:2)

我现在正在解决这个特定问题:http://www.rickb.com/quantum-tic-tac-toe

我曾考虑过做一些更先进的事情,但我只是坚持使用优秀的'alpha-beta搜索算法。我的主要问题是提出一个好的算法来“评分”每个特定的电路板状态。 QTTT比标准的tic tac脚趾复杂得多,搜索状态的数量呈指数级增长。我在内存中有完整标准的tic tac toe游戏树,我用它来快速查找每个“经典”板状态的分数,但是我必须以某种方式得分叠加状态。状态的数量是如此之大,以至于你不能在树中走得太深,所以必须使用适当的评分函数来提早修剪树。

答案 3 :(得分:1)

要为您的实现提供学习功能,您可以查看Donald MitchieMENACE(Matchbox Educable Noughts and Crosses Engine)的模拟器...

修改
在调查中,这已经做了很多,例如在CodeProjet上查看 此外,虽然获取世界的统计模型(或者这里的Tic-Tac-Toe减少的世界)并且将未来行动建立在这样的模型上是智能行为,但是你的教授可能认为它超出了范围,因为没有接触你可能在课堂上涉及的关键概念(知识表示,决策树......)