1 package cz.cuni.amis.utils.astar; 2 3 /** 4 * Evaluator is extending a functionality of {@link AStarHeuristic} allowing 5 * you to additionally specified which NODEs can't be visited at all or assign 6 * extra cost to edges between nodes which is added to {@link AStarMap#getEdgeCost(Object, Object)} 7 * when computing distances between them. 8 * 9 * @author Jimmy 10 * 11 * @param <NODE> 12 */ 13 public interface AStarEvaluator<NODE> extends AStarHeuristic<NODE> { 14 15 /** 16 * Returns true if A* can use this node (e.g. to step on this type of floor) 17 * You can use it to forbid some specific nodes 18 */ 19 public boolean isNodeOpened(NODE node); 20 21 /** 22 * Returns extra cost to add to value when trying to go 23 * nodeFrom to nodeTo ... of course it can depends only on nodeTo 24 * (some special kind of a floor for instance) 25 * 26 * Don't worry about the edge cost to become negative, A* ensures that 27 * that the least cost is 0 (Algorithm can't work over graphs with negative 28 * costs.) 29 * 30 * @return extra cost of edge for nodeFrom -> nodeTo 31 */ 32 public int getExtraCost(NODE nodeFrom, NODE nodeTo); 33 34 }