public List<Action> search(Problem p) {
List<Action> actions = new List<Action>();
clearInstrumentation();
// RBFS(problem, MAKE-NODE(INITIAL-STATE[problem]), infinity)
Node n = new Node(p.getInitialState());
SearchResult sr = rbfs(p, n, evaluationFunction.f(n), INFINITY, 0);
if (sr.getOutcome() == SearchResult.SearchOutcome.SOLUTION_FOUND) {
Node s = sr.getSolution();
actions = SearchUtils.actionsFromNodes(s.getPathFromRoot());
setPathCost(s.getPathCost());
}
// Empty List can indicate already at Goal
// or unable to find valid set of actions
return actions;
}