您应该研究蒙特卡洛树搜索,听起来好像很适合您的问题。
它没有使用启发式算法,而是在扩展树之前在每个分支使用随机玩家运行完整游戏。这样做的好处是,您实际上是在构建一个概率树,并且您不必将树扩展到末尾或使用 MinMax 之类的启发式进行一些截止。
MCTS也是目前GO游戏中最好的方法,目前最擅长玩未知规则的游戏。为了获得额外的效果,您可以使用一些有限状态机代理来代替随机播放器,以使概率更准确。您还可以通过使用跳过某些分支的决策器,使用机器学习派生的启发式方法来减少分支因子。(但这是你为了提高技术速度而最后要做的事情)
如果你能做 MinMax,你就可以轻松地做 MCTS :) 而且 MCTS 可以玩比 MinMax 更复杂的游戏,因为相比之下它的复杂性大大降低。(如果您打算不断扩展游戏规则,那很好)
如果您有兴趣,请看这里:
http://www.aaai.org/Papers/AIIDE/2008/AIIDE08-036.pdf
是的,你必须在每一个球员的每一步都这样做。所以 MinMax 和 MCTS 都会很慢;所有基于游戏树的技术都很慢。
但是,使用 MinMax,您可以保留一些树;移动到你的新状态的分支,并删除它的父树和连接到它的子树。然后在剩余的子树中进一步扩展一个深度。但这是猜测;我以前从来没有时间这样做:)(但是,您会在概率计算中保留错误)
这些技术的好处在于,当您构建它们时,它们就会起作用。机器学习技术运行得更快,但在使用前需要数小时甚至数天的培训;)