public class DepthLimitedSearch extends java.lang.Object implements SearchForActions, SearchForStates
function DEPTH-LIMITED-SEARCH(problem, limit) returns a solution, or failure/cutoff return RECURSIVE-DLS(MAKE-NODE(problem.INITIAL-STATE), problem, limit) function RECURSIVE-DLS(node, problem, limit) returns a solution, or failure/cutoff if problem.GOAL-TEST(node.STATE) then return SOLUTION(node) else if limit = 0 then return cutoff else cutoff_occurred? <- false for each action in problem.ACTIONS(node.STATE) do child <- CHILD-NODE(problem, node, action) result <- RECURSIVE-DLS(child, problem, limit - 1) if result = cutoff then cutoff_occurred? <- true else if result != failure then return result if cutoff_occurred? then return cutoff else return failureFigure 3.17 A recursive implementation of depth-limited search.
Modifier and Type | Field and Description |
---|---|
static Node |
CUTOFF_NODE |
static java.lang.String |
METRIC_NODES_EXPANDED |
static java.lang.String |
METRIC_PATH_COST |
Constructor and Description |
---|
DepthLimitedSearch(int limit) |
DepthLimitedSearch(int limit,
NodeExpander nodeExpander) |
Modifier and Type | Method and Description |
---|---|
java.util.List<Action> |
findActions(Problem p)
Returns a list of actions to the goal if the goal was found, a list
containing a single NoOp Action if already at the goal, an empty list if
the goal could not be found.
|
Node |
findNode(Problem p) |
java.lang.Object |
findState(Problem p)
Returns a state which is might be but not necessary is a goal state of
the problem.
|
Metrics |
getMetrics()
Returns all the search metrics.
|
NodeExpander |
getNodeExpander()
Returns the node expander used by the search.
|
public static final java.lang.String METRIC_NODES_EXPANDED
public static final java.lang.String METRIC_PATH_COST
public static final Node CUTOFF_NODE
public DepthLimitedSearch(int limit)
public DepthLimitedSearch(int limit, NodeExpander nodeExpander)
public java.util.List<Action> findActions(Problem p)
findActions
in interface SearchForActions
p
- the search problempublic java.lang.Object findState(Problem p)
SearchForStates
findState
in interface SearchForStates
p
- the search problempublic NodeExpander getNodeExpander()
SearchForActions
getNodeExpander
in interface SearchForActions
getNodeExpander
in interface SearchForStates
public Metrics getMetrics()
getMetrics
in interface SearchForActions
getMetrics
in interface SearchForStates