Tree 基于MPI的棋子博弈树生成与搜索并行化

Tree 基于MPI的棋子博弈树生成与搜索并行化,tree,mpi,openmpi,alpha-beta-pruning,Tree,Mpi,Openmpi,Alpha Beta Pruning,我正在尝试用C实现一个最优的跳棋游戏 为了找到机器可以做出的棋盘的最佳移动,我使用C语言中的(GLib)通过固定深度,根据棋盘的当前状态生成了一个n元博弈树 并且,对游戏树中存在的所有叶节点计算启发式值,该值定义为棋盘中剩余的机器棋子数减去玩家对手的棋子数,因为国王的能力比棋子强,启发式将每个国王计算为两个普通棋子,使用哪个alpha-beta搜索应用 更可能的是,增加游戏树的深度将最终产生一个优化的移动,如果我尝试增加深度,那么生成树和进行启发式搜索将花费大量时间 我的想法是独立地生成树的第一

我正在尝试用C实现一个最优的跳棋游戏

为了找到机器可以做出的棋盘的最佳移动,我使用C语言中的(GLib)通过固定深度,根据棋盘的当前状态生成了一个n元博弈树

并且,对游戏树中存在的所有叶节点计算启发式值,该值定义为棋盘中剩余的机器棋子数减去玩家对手的棋子数,因为国王的能力比棋子强,启发式将每个国王计算为两个普通棋子,使用哪个alpha-beta搜索应用

更可能的是,增加游戏树的深度将最终产生一个优化的移动,如果我尝试增加深度,那么生成树和进行启发式搜索将花费大量时间

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

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


如果它没有效率,请建议我如何实施它的一些其他方法。谢谢

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

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

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

问题被标记为“alpha-beta修剪”,因此OP可能会使用它。