【问题标题】:Tic Tac Toe heuristic AI [duplicate]井字游戏启发式 AI [重复]
【发布时间】:2015-03-14 17:50:42
【问题描述】:

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

以下是详细信息: 每个字段在网格上都有几个 WinPath。中间有 4 个(水平、垂直和两个对角线),角有 3 个(水平、对角线和一个垂直),边只有 2 个(水平和垂直)。每个字段的值等于其 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,但我失败了。

【问题讨论】:

  • 你可以玩所有井字游戏,看看你的算法是否会强制平局。
  • @Hurkyl +1 击败了我。我不得不回答,因为当时我没有代表发表评论。

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


【解决方案1】:

Wikipedia: tic-tac-toe 表示只有 362,880 种可能的井字游戏。证明你的算法的蛮力方法是彻底搜索博弈树,让你的对手在每一轮尝试每一个可能的动作,看看你的算法是否会失败(如果完美,它可以保证胜利或平局)。空间足够小,一个程序可以很快地做到这一点。当然,您将面临证明您的测试程序是正确的。

【讨论】:

  • 好吧,如果我坚持这个选项,我最终会这样做。但是我试图避免它......
【解决方案2】:

要知道您的机器人是否足够好,您必须玩很多游戏机器人与顶级玩家以及机器人与市场上最好的机器人(通常用于国际象棋或围棋等非常复杂的游戏)。

你试过这个吗(我先玩)?

 13| 12| 13
---+---+---
 12| 14| 12 
---+---+---
 13| 12| O 

对吗?

   |   |   
---+---+---
   | X |   
---+---+---
   |   | O 

 O |20 |30 
---+---+---
 20| X |20 
---+---+---
 30|20 | O 

如果我理解得很好,X 下一步将在拐角处

 O |20 | X 
---+---+---
 20| X |20 
---+---+---
 30|20 | O 

从这里我赢了..

如果通过(如果我错过了什么......)那么你的解决方案看起来很完美

【讨论】:

  • :o 我非常想念这个。尽管您在第一个表中犯了错误(应该是:12, 2, 12 | 2, 13, 11 | 12, 11, O),但这并没有什么不同。我怀疑我应该以某种方式保护自己免受分叉的伤害,但是我无法使用该算法重现分叉情况。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多