Tic Tac Toe启发式AI

时间:2015-03-14 17:50:43

标签: algorithm artificial-intelligence tic-tac-toe heuristics

我为3x3 Tic Tac Toe游戏设计了简单的AI。但是,我既不想做完全搜索,也不想做MinMax。相反,我想到了一种能够评估所有9个字段的值的启发式算法,然后AI会选择具有最高值的字段。问题是,我完全不知道如何确定它是否是一种完美的(无与伦比的)算法。

以下是详细信息: 每个Field在网格上都有几个WinPath。中间有4个(水平,垂直和两个对角线),每个角有3个(水平,对角线和一个垂直),侧面每个只有2个(水平和垂直)。每个Field的值等于其WinPaths值的总和。 WinPath值取决于其内容:

  • 空:[ | | ] - 1分
  • 一个符号:[X| | ] - 10分// can be any symbol in any place
  • 两个不同的符号:[X|O| ] - 0分// they can be arranged in any possible way
  • 两个相同的对手符号:[X|X| ] - 100分// arranged in any of three ways
  • 两个相同的"我的"符号:[O|O| ] - 1000分// arranged in any of three ways

这种方式例如开始情况的值如下:

 3 | 2 | 3 
---+---+---
 2 | 4 | 2 
---+---+---
 3 | 2 | 3 

然而后来的一个可能是这样的(X现在正在移动):

 X | 10| O
---+---+---
 O | O |110
---+---+---
 X | 20| 20

那么有没有可靠的方法来确定这是一个完美的算法,还是有任何缺点?

PS。我正在尝试(从玩家的角度来看)创建一个分叉情况,所以我可以打败这个AI,但我失败了。

1 个答案:

答案 0 :(得分:2)

Wikipedia: tic-tac-toe表示只有362,880种可能的tic-tac-toe游戏。证明你的算法的蛮力方法是穷举搜索游戏树,让你的对手在每个回合尝试每个可能的移动,看看你的算法是否曾经失败(如果完美的话,它保证赢或抽奖)。空间足够小,程序可以很快完成。当然,您将面临证明您的测试程序正确的问题。