在游戏编程中,我如何测试使用的启发式是否一致?

时间:2009-10-08 19:43:15

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

我已经想到了一些(更高维度)井字游戏的启发式。如何查看哪些实际上 一致

一致性的含义是什么?

2 个答案:

答案 0 :(得分:1)

启发式算法为给定的状态产生某种成本价值。此上下文中的一致性意味着状态的估计加上移动到下一状态的成本小于或等于该新状态的估计。如果这不是真的那么它意味着 - 如果启发式是准确的 - 从一个状态转换到另一个状态可能会产生负成本,这通常是不可能的或不正确的。

当涉及到寻路时,这是直观的,因为您希望沿着路径的每一步都花费一些时间,因此步骤1中的估计必须低于任何步骤2的估计。它可能有点复杂因为您可能不得不随意决定系统中“成本”的构成因素。如果您的启发式操作可以通过移动来上下移动 - 例如。因为你编码带有正数的好动作和带有负数的坏动作 - 那么你的启发式就不能保持一致。

然而,缺乏一致的启发式并不总是一个问题。如果没有最佳解决方案,您可能无法保证达到最佳解决方案,但与强力状态搜索相比,它仍可能加快搜索速度。

答案 1 :(得分:0)

编辑:这个答案混淆了可接受性和一致性。我已经更正了它以引用可接受性,但最初的问题是关于一致性,而这个答案并没有完全回答这个问题。

您可以通过区分所有不同的案例进行分析,从而证明您的启发式确实是可以接受的。

对于明智的搜索,当且仅当低估到适当状态的“距离”时,才会允许启发式搜索问题(例如,搜索游戏中的最佳移动)。

示例:通过城市之间的高速公路网络搜索到目标城市的最短路线。在这里,人们可以使用Eucidean距离作为启发式:到达目标的直线的长度总是比最佳可能的方式更短或更长。

A*之类的算法需要可接受性,然后它会使您成为最佳状态(即如果存在目标状态,他们将找到最佳“路线”)。

我建议您在AI textbook中查看该主题。