package cc.mallet.util.search; /** * Created by IntelliJ IDEA. * User: pereira * Date: Jun 19, 2005 * Time: 1:07:17 PM * Search node in an A* search. */ public class AStarNode extends SearchNode { /** * Iterator over new A* search nodes generated by state transitions * from this node's state. */ public class NextNodeIterator extends SearchNode.NextNodeIterator { protected NextNodeIterator() { super(); } public SearchNode nextNode() { AStarNode p = AStarNode.this; AStarState s = (AStarState)getStateIter().nextState(); return new AStarNode(s, p, p.getCost() + cost()); } } /** * Create an A* search node with given state, parent, and cost. * @param state the state * @param parent the parent * @param cost the cost */ public AStarNode(AStarState state, AStarNode parent, double cost) { super(state, parent, cost); } /** * Get the completion cost for the underlying state. * @return the completion cost */ public double completionCost() { return ((AStarState)getState()).completionCost(); } public SearchNode.NextNodeIterator getNextNodes() { return new NextNodeIterator(); } }