Prolog中Connect6游戏的表现和启发

时间:2011-04-20 18:03:52

标签: artificial-intelligence prolog heuristics game-ai

我想代表游戏connect6 wiki(也许是谓词石头(P,X,Y),其中P是玩家,X,Y是coords会好的)。此外,我想使用任何良好的启发式来解决问题(使对手)。你能不能给我一些关于Prolog游戏AI的文章的提示?感谢

2 个答案:

答案 0 :(得分:2)

您可能想要查找http://en.wikipedia.org/wiki/Minimax游戏树。要优化搜索,您可能不希望考虑所有可能的移动。也许只是与现有作品一致的动作以及与之相距6个或更少的空间。

然后你需要一个http://en.wikipedia.org/wiki/Evaluation_function。可能就像把一个分数分配给“我完成一条线的距离”总体而言正在进行中。

构建和优化游戏树更像是一个机械过程。创建评估功能是一个有趣的部分,它将为您的AI对手提供独特的风格。

在谷歌搜索“minimax游戏树序言”中找到了一个很好的powerpoint: http://staff.science.uva.nl/~arnoud/education/ZSB/2009/

答案 1 :(得分:2)

如果你在有限的棋盘上实现Connect6,那么这个游戏的可能表示将是变量列表的列表,最初是未绑定的。你可以通过用一个原子blackwhite统一变量来“放置一块石头”。然后,您可以使用P测试排名var(P)是否仍为空。与stone/3项列表相比,此表示的操作速度要快得多。它的工作原理是因为在Connect6中,你无法移除石头。

我认为启发式是指适用于minimax,negamax或alpha-beta搜索的评估函数。考虑到游戏规则,我建议对于每个玩家,你计算长度为5的行数并得分为5,得到长度为4的那些4等等。这给你两个得分S 1 和S 2 。从S 1 减去S 2 得到玩家1的相对优势。然后找到一些方法将这些归一化到范围[-1,1]或得分的情况下游戏无穷无尽。 (如何将Prolog中的所有内容表示为练习。)