searchnode.java

来自「mallet是自然语言处理、机器学习领域的一个开源项目。」· Java 代码 · 共 105 行

JAVA
105
字号
package edu.umass.cs.mallet.base.util.search;import java.util.Iterator;/** * Created by IntelliJ IDEA. * User: pereira * Date: Jun 20, 2005 * Time: 4:46:56 PM * * Search tree node. A search tree node pertains to some search graph state. * Multiple nodes may refer to the same state, representing different ways * of reaching the state. Search nodes have a priority, which determines when * they will be expanded, and cost of reaching the node from the start of the * search. */public class SearchNode implements QueueElement {  private int position = -1;  private double priority = Double.POSITIVE_INFINITY;  private double cost;  private SearchNode parent;  private SearchState state;  /**   * This iterator generates search nodes that refer to the   * states reachable from the state pertaining to a this search node.   */  public class NextNodeIterator implements Iterator {    private SearchState.NextStateIterator stateIter;    protected NextNodeIterator() {      stateIter = state.getNextStates();    }    public boolean hasNext() { return stateIter.hasNext(); }    public Object next() { return nextNode(); };    /**     * The search tree node for the next state reached from     * the current state.     * @return a new search tree node     */    public SearchNode nextNode() {      SearchNode p = SearchNode.this;      SearchState s = stateIter.nextState();      return new SearchNode(s, p, p.getCost() + cost());    }    /**     * The cost associated to the transition from the previous     * state to this state.     * @return the cost     */    public double cost() { return stateIter.cost(); }    public void remove() {      throw new UnsupportedOperationException();    }    protected SearchState.NextStateIterator getStateIter() {      return stateIter;    }  }  /**   * Create a search node with given state, parent, and cost.   * @param state the state   * @param parent the parent   * @param cost the cost   */  public SearchNode(SearchState state, SearchNode parent, double cost) {    this.state = state;    this.parent = parent;    this.cost = cost;  }  public double getPriority() { return priority; }  public void setPriority(double priority) { this.priority = priority; }  public int getPosition() { return position; }  public void setPosition(int position) { this.position = position; }  /**   * The node that generated this node.   * @return the parent   */  public SearchNode getParent() { return parent; }  /**   * Get the cost for this node.   * @return the cost   */  public double getCost() { return cost; }  /**   * The state for this search node.   * @return the state   */  public SearchState getState() { return state; }  /**   * Is the node's state final?   * @return whether this state's node is final   */  public boolean isFinal() { return state.isFinal(); }  /**   * Get an iterator over the new search nodes reachable   * from this node by state transitions.   * @return the iterator   */  public NextNodeIterator getNextNodes() {    return new NextNodeIterator();  }  public String toString() {    return state.toString() + "/" + priority;  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?