[Haskell-cafe] lazy A-star search
wren ng thornton
wren at freegeek.org
Mon Oct 31 01:49:57 CET 2011
On 10/30/11 11:44 AM, Anton Kholomiov wrote:
> I'm misunderstanding astar. I've thought that 'whole route'-heuristic
> will prevent algorithm from going in circles. The more you circle around
> the more the whole route distance is. Thank you for showing this.
There are multiple things involved in A*.
Part of it is having the admissible heuristic in order to do
forward-chaining in a way which accounts for things you haven't
seen/handled yet.[1] Using an admissible heuristic isn't sufficient to
prevent looping. Just consider a path which has a loop with zero cost or
negative cost (if we're adding costs).
A different part of it is the fact that we can implement A* as a dynamic
programming algorithm in order to reduce the complexity of
forward-chaining. This is the insight from Dijkstra's algorithm (and
Prim's, and Kruskal's, and Warshall's,...), which also uses dynamic
programming to reduce complexity.
[1] Or dually, you could use an admissible heuristic to do
backwards-chaining in a way that accounts for things you haven't
seen/handled yet. But everyone seems to mean the forward-chaining
variant when they talk about A* (perhaps because the backward-chaining
variant would be better called B*, given the standard variable-naming
convention).
--
Live well,
~wren
More information about the Haskell-Cafe
mailing list