Artificial intelligence Connect6对策在Prolog中的表示与启发式

Artificial intelligence Connect6对策在Prolog中的表示与启发式,artificial-intelligence,prolog,heuristics,game-ai,Artificial Intelligence,Prolog,Heuristics,Game Ai,我想表示游戏connect6(可能是谓词stone(p,X,Y),其中p是玩家,X,Y是coords(合作伙伴)。此外,我想使用任何好的启发式解决问题(使对手)。你能给我一个提示任何关于游戏人工智能的文章在序言?谢谢您可能想查看游戏树。为了优化搜索,你可能不想考虑所有可能的动作。可能只是移动与现有的一个部分和6个或更少的空间线 那你就需要一张支票。可能有点像给“我离完成一行有多近”的总分,对正在进行的行进行评分 构建和优化博弈树更多的是一个机械过程。创建一个评估函数是一个有趣的部分,它会给你的A

我想表示游戏connect6(可能是谓词stone(p,X,Y),其中p是玩家,X,Y是coords(合作伙伴)。此外,我想使用任何好的启发式解决问题(使对手)。你能给我一个提示任何关于游戏人工智能的文章在序言?谢谢

您可能想查看游戏树。为了优化搜索,你可能不想考虑所有可能的动作。可能只是移动与现有的一个部分和6个或更少的空间线

那你就需要一张支票。可能有点像给“我离完成一行有多近”的总分,对正在进行的行进行评分

构建和优化博弈树更多的是一个机械过程。创建一个评估函数是一个有趣的部分,它会给你的AI对手带来独特的味道

在谷歌搜索“minimax游戏树序言”时,出现了一个不错的powerpoint:

如果您在有限的电路板上实现Connect6,那么这个游戏的一个可能表示形式是一个变量列表,最初是未绑定的。您可以通过将一个变量与一个原子
黑色
白色
统一来“放置一块石头”。然后可以使用
var(P)
测试位置
P
是否仍然为空。这种表示应该比
stone/3
术语列表操作快得多。这是因为在Connect6中,您永远无法移除石头


我假设启发式是指一个适用于极小极大、负极大或阿尔法-贝塔搜索的求值函数。考虑到游戏规则,我建议对每个玩家,计算长度为5的行数,然后对长度为5的行进行评分,对长度为4的行进行评分,以此类推。这会给你两个分数S1和S2。从S1中减去S2对玩家1产生相对优势。然后找到一些方法将其标准化为范围[-1,1],或者在游戏超过无穷大或负无穷大的情况下得分。(如何在Prolog中表示所有这些内容只剩下练习了。)

是的,是的。但我不想复制粘贴任何代码。我只是想找到最好的解决方案。谢谢!这篇文章很有帮助。