package cc.mallet.util.search;
import java.util.Iterator;
/**
* Created by IntelliJ IDEA.
* User: pereira
* Date: Jun 20, 2005
* Time: 4:54:46 PM
* A state (vertex) in a graph being searched.
*/
public interface SearchState {
/**
* Iterator over the states with transitions from a given state.
*/
public static abstract class NextStateIterator implements Iterator<SearchState> {
public abstract boolean hasNext();
public SearchState next() {return nextState(); };
/**
* Get the next reachable state.
* @return the state
*/
public abstract SearchState nextState();
/**
* The cost of the transition to the current state.
* @return transition cost
*/
public abstract double cost();
public void remove() {
throw new UnsupportedOperationException();
}
}
/**
* Get an iterator over the states with transitions from
* this state.
* @return the iterator
*/
public abstract NextStateIterator getNextStates();
/**
* Is this state final?
* @return whether this state is final
*/
public abstract boolean isFinal();
}