package aima.core.search.framework;
import java.util.Comparator;
import java.util.List;
import aima.core.agent.Action;
import aima.core.util.datastructure.PriorityQueue;
/**
* @author Ravi Mohan
* @author Ruediger Lunde
*/
public class PrioritySearch implements Search {
private final QueueSearch search;
private final Comparator<Node> comparator;
public PrioritySearch(QueueSearch search, Comparator<Node> comparator) {
this.search = search;
this.comparator = comparator;
if (search instanceof GraphSearch) {
((GraphSearch) search)
.setReplaceFrontierNodeAtStateCostFunction(comparator);
}
}
public List<Action> search(Problem p) throws Exception {
return search.search(p, new PriorityQueue<Node>(5, comparator));
}
public Metrics getMetrics() {
return search.getMetrics();
}
}