代码之家  ›  专栏  ›  技术社区  ›  Adam Goode

Java或LISP或C语言中的多线程A*搜索

  •  7
  • Adam Goode  · 技术社区  · 15 年前

    有没有一个好的方法来进行多线程A*搜索?单线程是相当容易的,如(例如)人工智能(一种现代方法)中所述,但我没有遇到一个好的多线程版本。

    假设有一个明智的语言,如Java或C语言或LISP,我们有线程池和工作块,当然还有垃圾收集。

    2 回复  |  直到 15 年前
        1
  •  6
  •   BobbyShaftoe    15 年前

    我建议阅读本文:

    “对称多处理器上的并行双向A*搜索”

    还有一篇论文,也在IEEE上,叫做:

    “对消息传递架构的并行ASTAR搜索”

    这两篇论文都找到了新的加速方法。

        2
  •  1
  •   Robert Massaioli    15 年前

    我听到你在说什么,但我不确定你是否愿意。在A*搜索中,您希望选择最理想的路径,而不希望对同一路径进行任何两次计算。

    看看事实:

    • 选择的“最佳”方格都紧挨着对方。
    • 计算“最佳”选择以外的任何其他平方都是过早的计算。*的要点是它的选择是有效的。

    如果对应用程序进行线程化,则需要:

    • 'Waiter' 为了确保没有线碰到同一个正方形,并给它们新的正方形。他们都会在这样一个紧密结合的地区工作,他们会为道路资源而战,因为所有“最好”的广场都紧挨着。

    这个问题是程序性的,没有很好的方法将其分解为单独的部分,因此对于线程来说不是一个好的选择。简而言之,没有人做过这件事,因为这不是一件值得做的事。我希望这有帮助。