1 package cz.cuni.amis.utils.astar;
2
3 import java.util.Collection;
4
5 /**
6 * This class represents the search space for A* algorithm
7 * 1) we need to know which neighbours the node has
8 * 2) we need to know the travel cost between two nodes (edge cost)
9 */
10 public interface AStarMap<NODE> {
11
12 /**
13 * General cost of having this node at your path. This allows you to say how every node appeals to the agent,
14 * it may specify "this is a cool node, try to get it on your path" (negative cost) or "this is neutral node"
15 * (zero cost) or "this is a bad node to have on your path" (positive cost).
16 *
17 * @param node
18 * @return
19 */
20 public int getNodeCost(NODE node);
21
22 /**
23 * Should return the distance from nodeFrom to nodeTo
24 * You can be sure that nodeTo is among the neighbours of nodeFrom.
25 * @param nodeFrom
26 * @param nodeTo
27 * @return cost of an edge
28 */
29 public int getEdgeCost(NODE nodeFrom, NODE nodeTo);
30
31 /**
32 * This should return a collection of nodes which are connected to this one.
33 */
34 public Collection<NODE> getNodeNeighbours(NODE node);
35 }