我想用 Prolog 来表示 Connect6 游戏(维基百科链接)(或许可以用谓词 stone(P, X, Y) 来表示,其中 P 代表玩家,X 和 Y 代表坐标)。同时,我希望使用一些好的启发式算法来解决这个问题(用来实现一个对手)。能否提供一些关于 Prolog 游戏 AI 的文章链接?谢谢。
回答:
你可能需要查找一下 http://en.wikipedia.org/wiki/Minimax 博弈树。 为了优化搜索,你可能不想考虑所有可能的移动。也许只考虑与现有棋子在一条线上,且距离小于等于 6 个空格的移动。
然后你需要一个 http://en.wikipedia.org/wiki/Evaluation_function (评估函数)。 可能类似于为“我距离完成一条线有多接近”分配一个分数,综合考虑所有正在进行中的线。
构建和优化博弈树更像是一个机械的过程。 创建评估函数才是更有趣的部分,它将赋予你的 AI 对手独特的风格。
在 Google 上搜索“minimax game tree prolog”找到了一份不错的 PowerPoint:http://staff.science.uva.nl/~arnoud/education/ZSB/2009/