package aima.core.search.framework; import aima.core.search.framework.problem.Problem; import java.util.function.Consumer; /** * Interface for all AIMA3e search algorithms which forget the exploration history and * return just a single state which is hopefully a goal state. This search framework expects * all search algorithms to provide some metrics and to actually explore the search space * by expanding nodes. * * @author Ruediger Lunde * */ public interface SearchForStates { /** * Returns a state which is might be but not necessary is a goal state of * the problem. * * @param p * the search problem * * @return a state. */ Object findState(Problem p); /** * Returns all the metrics of the search. */ Metrics getMetrics(); /** * Adds a listener to the list of node listeners. It is informed whenever a * node is expanded during search. */ void addNodeListener(Consumer<Node> listener); /** * Removes a listener from the list of node listeners. */ boolean removeNodeListener(Consumer<Node> listener); }