10

Is there a good way to do a multithreaded A* search? Single threaded is fairly easy, as given in (for example) Artificial Intelligence: A Modern Approach, but I have not come across a good multithreaded version.

Assume a sane language like Java or C# or Lisp where we have thread pools and work blocks, and of course garbage collection.

Adam Goode
  • 7,380
  • 3
  • 29
  • 33
  • 2
    So non garbage collected languages are not sane languages? – BobbyShaftoe Oct 28 '09 at 22:49
  • 1
    I don't think garbage collection is at all necessary for A*. Sequential A* is pretty simple. Parallel A* has some workload issues. – BobbyShaftoe Oct 28 '09 at 23:03
  • I guess reference counting would probably be sufficient, is that what you are thinking? – Adam Goode Oct 28 '09 at 23:07
  • 2
    You really don't need either (though each are nice to have). Memory management is not remotely complex in this case, and I say that having implemented A* in both Python and C++. – Kylotan Oct 31 '09 at 11:00
  • If you are mutating your state while moving through the states, and not creating from scratch a new state for every move, then I think memory management would be very easy. But if you have a complicated state space, where it is non-trivial to reverse the state back to the previous state for backtracking, I don't think you can get away with mutating your state, and memory management gets complicated without garbage collection. – Adam Goode Nov 01 '09 at 23:56

1 Answers1

7

I recommend reading this paper:

"Parallel bidirectional A* search on a symmetry multiprocessor"

There is also another paper, also at IEEE called:

"Parallel Astar search on message-passing architectures"

Both papers find novel methods for gaining quite a bit of speedup.

BobbyShaftoe
  • 28,337
  • 7
  • 52
  • 74
  • 4
    @StevenRoose A simple google search of the titles will yield both mentioned articles as the first search result. Though I do usually put links when appropriate, out of courtesy. However, my biggest issue with using IEEE papers as sources on here is that they usually aren't free for those who are not currently enrolled at an institution which is covered for IEEE papers. – Gurgadurgen May 17 '15 at 13:16
  • Which would make the answer moot. – quimnuss Jul 08 '16 at 14:38
  • This answer is useless because the papers simply aren't free – Bilow Mar 16 '18 at 17:31
  • 1
    An alternative, freely available paper is "PNBA*: A Parallel Bidirectional Heuristic Search Algorithm" published by Universidade Federal de Minas Gerais. I wrote a [Java implementation of the Parallel A*](https://github.com/davidleston/Parallel-New-Bidirectional-A-Star) described in that paper. – David Leston Dec 10 '19 at 04:20