并行化检查器游戏树生成和使用MPI搜索

时间:2013-12-20 23:24:36

标签: tree mpi openmpi alpha-beta-pruning

我正试图在C中实现最佳的跳棋游戏。

为了找到可由机器制作的棋盘的最佳移动,我在C中根据当前状态使用(GLib)生成了一个 n-ary游戏树通过固定深度来检查棋盘。

并且,计算游戏树中存在的所有叶节点的启发式值,其被定义为在棋盘中留下的机器棋子数减去玩家对手棋子的数量因为国王具有比典当更强大的能力,启发式将每个国王计为两个正常的棋子,使用alpha beta搜索。

更有可能的是,增加游戏树的深度最终将产生优化的移动,如果我尝试增加深度,则需要花费很多时间来生成树并进行启发式搜索。

我的想法是独立生成树的第一级并在可用处理器之间分配子节点以便使用MPI进一步执行

有可能吗?如果是,我如何使用MPI并行化树生成和启发式搜索?

如果效率不高,请向我推荐一些其他方法来实现它。谢谢。

1 个答案:

答案 0 :(得分:0)

嗯,它可以并行化,问题是,你期望获得多少改进。您可能正在循环中生成初始状态的子级 - 在第一级,可以通过在n个线程之间拆分k个子的创建来并行化它。由于这些任务的计算要求非常高(递归地创建更多子树),因此它应该具有相当的线程效率。

但是,由于树的分支因子可能大于核心数(或类似数量),即使并行化是线性有效的(并且不会),您也可以生成一个层次更多。

你使用alpha-beta修剪吗?我相信它会比这种并行化的东西带来更大的好处。