【问题标题】:Any distributed parallel tree search algorithm suggestions?任何分布式并行树搜索算法建议?
【发布时间】:2011-01-14 04:40:02
【问题描述】:

我正在编写一个分布式 Go/Gomoku 机器人。

基本上,重点是将树搜索分布到多台计算机上。使用像 DFS 这样的基本树搜索算法,这将非常简单,因为我可以将搜索空间划分为子树。虽然我宁愿有一些更有效的东西,比如带有 alpha-beta 修剪的 mini-max - 但据我了解,如果没有任何共享内存,它是毫无意义的。所以我有点卡住了。

任何想法我可以使用什么算法高效且易于分发? 更重要的是,我在哪里可以找到一些(伪)代码或实现?

谢谢,

【问题讨论】:

    标签: algorithm language-agnostic distributed parallel-processing tree-search


    【解决方案1】:

    您需要阅读有关 Monte Carlo Tree Search 的内容,并不是因为它本质上更容易分发(它既不比其他树搜索更容易也不难),而是因为它是最先进的技术,并且致力于解决问题的人正在研究该算法的分布式版本。

    如果您要费心制作分布式算法,则没有理由从较小的算法开始。除非您出于教育原因制作分布式算法,在这种情况下,请继续,在分发基本算法的实验中会有一些深刻的教育,并且看到它的性能比非分布式最先进算法更差:)

    Some slides

    MoGo homepage

    请参阅Wikipedia page on computer go 中的“最新动态”部分。

    【讨论】:

    • 嗯,这看起来很有希望,会调查它。谢谢。
    【解决方案2】:

    尝试 Map Reduce 方法。例如,参见

    Breadth-First Search (BFS) & MapReduce

    【讨论】:

    • 我真的无法理解它在任何方面都优于 DFS。
    • 我并不是说 BFS 在任何方面都优于 DFS。这只是将 Map Reduce 应用于搜索问题的一个示例。
    【解决方案3】:

    DDS*ABDADA 是 2 个分布式/并行极小极大算法。一些通信是必要的,但这可以通过将某些结果转发回控制器来完成。

    您提到的更简单的方法是使用不同搜索树根的 map reduce。

    作为 @Pascal Cuoq rightly mentions,蒙特卡洛树搜索是 Go 中最先进的技术。

    在这里您可以找到对 MoGo 搜索算法及其并行化方式的很好解释:

    http://www.lri.fr/~gelly/paper/nips_exploration_exploitation_mogo.pdf

    对随机播放结果更好的节点进行了更深入的探索。在每一步都选择一个叶节点进行单层扩展。这可以通过让每台机器选择不同的叶子来展开来分配。

    这里是蒙特卡罗树搜索的一个很好的概述:

    http://sander.landofsand.com/publications/Monte-Carlo_Tree_Search_-_A_New_Framework_for_Game_AI.pdf

    【讨论】:

    • 谢谢,ABDADA 乍一看也不错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 2018-12-20
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多