【问题标题】:Multithreaded A* Search in Java or Lisp or C#Java、Lisp 或 C# 中的多线程 A* 搜索
【发布时间】:2010-12-11 01:40:36
【问题描述】:

有没有做多线程 A* 搜索的好方法?单线程相当简单,如(例如)人工智能:一种现代方法中所述,但我还没有遇到好的多线程版本。

假设我们有一个健全的语言,如 Java、C# 或 Lisp,我们有线程池和工作块,当然还有垃圾收集。

【问题讨论】:

  • 所以非垃圾收集语言不是理智的语言?
  • 我认为 A* 根本不需要垃圾收集。顺序 A* 非常简单。 Parallel A* 存在一些工作负载问题。
  • 我想引用计数可能就足够了,你是这么想的吗?
  • 你真的不需要(虽然每个都很好)。在这种情况下,内存管理并不复杂,我说在 Python 和 C++ 中都实现了 A*。
  • 如果您在通过状态的同时改变您的状态,而不是为每次移动从头开始创建新状态,那么我认为内存管理将非常容易。但是,如果您有一个复杂的状态空间,其中将状态反转回前一个状态以进行回溯并非易事,我认为您无法摆脱改变状态,并且如果没有垃圾收集,内存管理会变得复杂。

标签: multithreading search artificial-intelligence a-star


【解决方案1】:

我推荐阅读这篇论文:

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

还有另一篇论文,同样来自 IEEE,名为:

“消息传递架构上的并行 Astar 搜索”

两篇论文都找到了获得相当多加速的新方法。

【讨论】:

  • @StevenRoose 对标题进行简单的 google 搜索将产生提到的两篇文章作为第一个搜索结果。尽管出于礼貌,我通常会在适当的时候放置链接。然而,我在这里使用 IEEE 论文作为来源的最大问题是,对于那些目前没有就读于 IEEE 论文涵盖的机构的人来说,它们通常不是免费的。
  • 这会让答案变得毫无意义。
  • 这个答案没用,因为论文根本不是免费的
  • 另一种可免费获得的论文是由 Universidade Federal de Minas Gerais 出版的“PNBA*: A Parallel Bidirectional Heuristic Search Algorithm”。我在那篇论文中写了一个Java implementation of the Parallel A*
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多