同时使用极小极大值和AB修剪搜索游戏树.这可能吗



我将在学校参加一场棋盘游戏AI比赛,并试图想出一些并发的想法来获得优势。我很可能会处于劣势,因为我将在java中实现它,而且我知道c或c++会更快。

你似乎不能因为移动顺序而把游戏树一分为二,因为移动顺序应该把最好的移动放在第一位,而且在给定的深度上交流当前的alpha/beta似乎很困难,甚至不可能。我还将使用需要同步的换位表。

除了搜索之外,第二个线程是否可以做一些有助于搜索或提供某种类型的速度提高的事情。每个AI将有5秒的时间移动,当对手思考时,你的程序可以工作。

任何意见,无论多么晦涩难懂,都将不胜感激。

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

然而,当你没有太多时间的时候,我不会从平行搜索开始。并行性可以提高搜索算法的强度,这是正确的。然而,要把它做好是非常困难的,而且收益远低于人们的预期。

如果你想尝试并行性,那就去吧。这是一个有趣的话题。然而,如果你只是想在有限的时间内获得最佳结果,我建议你坚持顺序搜索,而不是关注移动顺序和正确性。

这是可能的。您必须在线程之间进行通信才能获得AB prunning的帮助。此外,必须调整移动顺序,如果一个线程有最好的移动来分析,而其他线程没有,这也没有帮助。

最新更新