我正在寻找一种有效的算法,该算法可让我在分布式体系结构上使用alpha-beta修剪来处理国际象棋的minimax搜索树。我发现的算法(PVS,YBWC,DTS见下文)都已经很老了(1990年是最新的)。我认为自那时以来已经有了许多实质性的进步。目前该领域的标准是什么?
另外,请指出白痴对DTS的解释,因为我从阅读的研究论文中无法理解它。
上面提到的算法:
- PVS:原则变化分裂
- YBWC:青年兄弟等待概念
- DTS:动态树拆分
全部都在这里讨论。
我正在寻找一种有效的算法,该算法可让我在分布式体系结构上使用alpha-beta修剪来处理国际象棋的minimax搜索树。我发现的算法(PVS,YBWC,DTS见下文)都已经很老了(1990年是最新的)。我认为自那时以来已经有了许多实质性的进步。目前该领域的标准是什么?
另外,请指出白痴对DTS的解释,因为我从阅读的研究论文中无法理解它。
上面提到的算法:
全部都在这里讨论。
Answers:
是的,由于国际象棋分析文献和一般的并行编程技术,该理论已经有了很大的进步。这是有关分布式集群/并行性上的(chs)alpha beta修剪的一些新参考。同样,一些早期的分布式计算象棋文献也早于许多基本的并行设计模式,并且可以在该框架内进行概念化。
GPU上的并行Alpha-Beta算法 / Strnad,Guid(2011)
共享内存多处理器上的并行Alpha-Beta搜索 / Manohararajah(2001)98pp!
并行化简单的国际象棋程序 / Greskamp,2003年
游戏决策树的并行Alpha-Beta修剪:国际象棋实现 / Steele 1999
DTS高性能并行树搜索算法(Hyatt 1994)
DTS背后的基本思想是,搜索树根据移动/布局的复杂性分布在计算节点之间。未使用的“提前完成”的处理器可以完成除初始分配之外的其他工作,该初始分配可以在最初尽可能均匀地分配,但结果会不均衡。因此,它基本上是一种“负载平衡”和“生产者/消费者”队列,或者类似于作业调度。
该空闲处理器广播(使用共享内存)它空闲,并且可用于“帮助”任何其他处理器完成搜索其树。繁忙的处理器收集“树的状态”数据,并将其存储在共享内存中,以供空闲处理器检查。该空闲处理器分析该数据,并确定哪些繁忙处理器(如果有)似乎具有足够复杂的树,从而可以有效地帮助搜索。如果找到了这样的位置,则空闲处理器将此情况通知拥有该节点的处理器,并且它们“加入”力。