[OT] Pathfinding algorithm
Joseph Rushton Wakeling
joseph.wakeling at webdrake.net
Sat Sep 21 12:38:29 PDT 2013
On 21/09/13 21:13, Gary Willoughby wrote:
> Maybe i'm wrong but i'm assuming you are pre-calculating the shortest paths from
> each node to all others is because you intend to traverse a path at some point
> in the future? The problem with this approach is that if a node is marked as
> impassable then you have to again do a lot of pre-calculation for every node it
> affects. Not only that but to avoid re-calculating them *all* you need to use an
> algorithm to find which are affected before you even start recalculating? To me
> this seems like too much work and could probably be solved by thinking a little
> differently.
>
> Try implementing the A* algorithm which will give you a path from A to B
> *without* calculating paths to and from every node. Also if a node is marked
> impassable (even while running) you can just restart the algorithm from where
> you are back to B.
>
> This sounds really scary stuff but A* is actually quite straightforward if you
> can find a nice resource to describe how it works.
>
> Like these:
> http://www.policyalmanac.org/games/aStarTutorial.htm
> http://en.wikipedia.org/wiki/A*_search_algorithm
Good advice, but bear in mind that there may be a very good reason to want to
know the shortest path between _every_ pair of nodes.
Example: you calculate the closeness centrality for every vertex (which involves
knowing the shortest path between every pair of vertices). Now you knock out
one vertex and you want to recalculate the closeness centrality values -- but
ideally you'd like to avoid doing the whole calculation from scratch. So, you
need to store the shortest paths from the first calculation and dynamically
update them to work out which nodes' centrality values need updating.
More information about the Digitalmars-d-learn
mailing list