Java 同时使用极小极大和AB修剪搜索博弈树。可能吗?

Java 同时使用极小极大和AB修剪搜索博弈树。可能吗?,java,concurrency,artificial-intelligence,minimax,alpha-beta-pruning,Java,Concurrency,Artificial Intelligence,Minimax,Alpha Beta Pruning,我将在我的学校参加一个棋盘游戏AI竞赛,我试图想出一些并发性的想法来获得优势。我很可能处于劣势,因为我将用java实现它,我理解C++或C++会更快。 看起来你不可能把游戏树一分为二,因为移动顺序应该先留下最好的移动,而且在给定的深度上交流当前的alpha/beta似乎是困难的,甚至可能是不可能的。我还将使用需要同步的换位表 除了搜索,是否有第二个线程可以帮助搜索或提供某种类型的速度提升。每个AI将有5秒钟的移动时间,你的程序可以在对手思考时运行 任何输入,无论多么模糊,都将不胜感激 这是可能的

我将在我的学校参加一个棋盘游戏AI竞赛,我试图想出一些并发性的想法来获得优势。我很可能处于劣势,因为我将用java实现它,我理解C++或C++会更快。 看起来你不可能把游戏树一分为二,因为移动顺序应该先留下最好的移动,而且在给定的深度上交流当前的alpha/beta似乎是困难的,甚至可能是不可能的。我还将使用需要同步的换位表

除了搜索,是否有第二个线程可以帮助搜索或提供某种类型的速度提升。每个AI将有5秒钟的移动时间,你的程序可以在对手思考时运行


任何输入,无论多么模糊,都将不胜感激

这是可能的。您必须在线程之间进行通信才能获得AB修剪帮助。此外,必须调整移动顺序,如果一个线程具有最佳级别的移动进行分析,而其他线程没有,这也无济于事。

可以在Chess Programming Wiki中找到概述。即使你的实际游戏不是国际象棋,许多概念也会适用。该网站还涵盖了复杂的解决方案

然而,当您没有太多时间时,我不会从并行搜索开始。您是对的,并行性可以增加搜索算法的强度。然而,要做到这一点是非常困难的,而且好处远远低于人们的预期


如果您想尝试并行性,请继续。这是一个有趣的话题。但是,如果您只是想在有限的时间内获得最佳结果,我建议您坚持顺序搜索,而不是专注于移动顺序和正确性。

您可以评估多个分支-只是您可能无法充分利用AB修剪。棋盘游戏有三种结果:赢/平/输。每一步都不是同时进行的,也就是说,玩家每一步都有一次思考和移动的机会。我不明白为什么您希望这是一个并发的树搜索。@BuhakeSindi我的想法是,如果有一种方法可以分割搜索,您可以搜索得更深