【发布时间】: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