1

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

似乎您不能将游戏树分成两半,因为移动顺序应该首先留下最好的移动,而且在给定深度传达当前的 alpha/beta 似乎很困难,甚至可能是不可能的. 我也将使用需要同步的转置表。

除了搜索之外,是否有第二个线程可以做的事情可以帮助搜索或提供某种类型的速度提升。每个 AI 将有 5 秒的时间进行移动,并且您的程序可以在对手思考的同时运行。

任何输入,无论多么晦涩,都将不胜感激。

4

2 回答 2

2

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

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

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

于 2013-02-19T22:15:46.520 回答
1

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

于 2013-02-12T12:51:29.320 回答