这是我的第一个问题,如果我做错了什么,请告诉我...
我目前正在用 Java 制作草稿游戏。事实上,除了人工智能之外,一切都正常。AI 目前是单线程的,使用极小极大和 alpha-beta 修剪。这段代码有效,我认为,它只是很慢,我只能深入我的游戏树 5。
- 我有一个函数可以接收我的主板、深度(从 0 开始)和最大深度。在这个最大深度处,它停止,返回棋盘上棋子最多的玩家值(-1,1 或 0)并结束递归调用。
- 如果还没有达到最大深度,我会计算所有可能的动作,我会一一执行它们,以某种方式将我的更改存储到主板上。
- 我还使用 alpha-beta 修剪,例如,当我发现一个可以让玩家获胜的动作时,我不会担心下一个可能的动作。
- 我从该主板状态递归地计算下一组移动。退出递归调用时,我撤消了这些更改(从第 2 点开始)。我存储这些递归调用返回的值并在它们上使用 minimax。
情况就是这样,现在我有一些问题。我想更深入地研究我的游戏树,因此我必须减少计算移动所需的时间。
- AI 可能的走法(例如 AI 可以选择的走法)的值总是 0 是否正常?或者如果我可以更深入地研究递归,这种情况会改变吗?因为此时我只能在递归中进行 5 次深度(最大深度),否则它需要的时间太长了。
- 我不知道它是否有用,但我如何将此递归转换为多线程递归。我认为这可以将工作时间除以一些价值......
有人可以帮我吗?