path planning implementations?
jerro
a at a.com
Sun May 13 17:18:04 PDT 2012
On Sunday, 13 May 2012 at 19:14:18 UTC, Trass3r wrote:
> Do you think it is possible to conceive an interface that
> allows a rectangular array to be handled as a graph
> transparently?
> (i.e. a regular grid, e.g. for path planning)
At least for some stuff it is. For example A* search could work
on nodes which would have a property estimate (a lower bound for
the shortest path length from this node to goal node) and a
property neighbors. Property neighbors would return something
iterable (either a range or an instance of a type with opApply
defined). Each element of neighbors would have two members:
distance from current node to a neighbor node and a neighbor
node. The search function would than take a start node, a goal
node and an optional predicate. To find a path through a
rectangular array of booleans to position (i0, j0) you would
write a node type like this:
struct Node
{
RectArray a;
int i;
int j;
int i0;
int j0;
@property auto estimate()
{
return abs(i0 - i) + abs(j0 - j);
}
@property neighbors()
{
Tuple!(int, Node)[] r;
if(i > 0 && a[i - 1, j])
r ~= tuple(1, Node(a, i - 1, j, i0, j0));
... take care of the other three possible neighbors here
return r;
}
}
I'm not saying we should choose this particular interface for
A* search, but an interface that lets you treat rectangular
array as a graph is certainly possible at least for A* search,
and probably for other searches too.
More information about the Digitalmars-d
mailing list