我将参加我学校的棋盘游戏AI比赛,并试图想出一些并发的想法以获得优势。我很可能处于劣势,因为我将在java中实现它,我理解c或c ++会更快。
似乎你不能将游戏树分成两半,因为移动顺序应该首先留下最好的移动,似乎很难或者甚至不可能在当前传达当前的alpha / beta给定的深度。我将使用转置表,这需要同步。
除了搜索之外,还有第二个线程可以做的事情可以帮助搜索或提供某种类型的速度提升。每个人工智能将有5秒的时间进行移动,你的程序可以在对手思考时工作。
任何输入,无论多么模糊,都会受到赞赏。
答案 0 :(得分:2)
概述可以在Chess Programming Wiki的parallel search article中找到。即使你的实际游戏不是国际象棋,许多概念也适用。该网站还涵盖了shared transposition tables的复杂解决方案。
然而,当你没有太多时间时,我不会从并行搜索开始。你是正确的,并行性可以增加搜索算法的强度。然而,要做到正确是非常困难的,并且其好处远低于预期。
如果您想尝试并行性,请继续。这是一个有趣的话题。但是,如果您只想在有限的时间内获得最佳效果,我建议您坚持使用顺序搜索,而是专注于移动排序和正确性。
答案 1 :(得分:1)
有可能。你必须在线程之间进行通信以获得AB prunning帮助。此外,必须调整移动顺序,如果一个线程具有最佳评级的移动分析而其他线程没有,则无效。