|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectai.search.SearchEngine
ai.search.SearchEngineForIntCostFn<S>
ai.search.informed.BestFirstSearcherForIntCostFn<S>
ai.search.informed.IDAStarSearcherForIntCostFn<S>
public class IDAStarSearcherForIntCostFn<S extends SearchStateForIntCostFn>
This class represents a search engine that traverses a search space using the IDA* algorithm from a given initial state. The initial state and the heuristic function must be given to this search engine at construction time. Note that the test for repeated states will here only be performed on the predecessors of a newly generated state.
Now the search can be started using the function doSearch()
.
Successors of the initial state will then be explored using a depth-first
search up to a current f-value limit. Whenever the search to the current
limit has exhausted its search space the limit is increased and the search is
started from scratch. The search will halt when a goal state has been
expanded. The goal state and the path to it can then be inspected using the
appropriate functions described in the
SearchEngineForIntCostFn
class.
Thus, a typical invocation of an IDAStarSearcherForIntCostFn
would look something like this:
SearchEngineForIntCostFn s = new IDAStarSearcherForIntCostFn( initialState, heuristic, 1000, GRAPH); s.doSearch(); if (s.foundGoalState()) { ... }
To continue the search call doSearch()
again and the search will be
continued as far as possible. Note that this type of search engine will
discover the same path to the same goal state multiple times when the depth
limit is increased. Paths through a goal state will never be considered.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class ai.search.SearchEngineForIntCostFn |
---|
SearchEngineForIntCostFn.SearchNodeForIntCostFn<S extends SearchStateForIntCostFn> |
Nested classes/interfaces inherited from class ai.search.SearchEngine |
---|
SearchEngine.GraphType |
Field Summary | |
---|---|
protected int |
currentFLimit
the current f-value limit |
protected java.util.List<SearchEngineForIntCostFn.SearchNodeForIntCostFn<S>> |
searchStack
the stack for unexplored (open) nodes |
Fields inherited from class ai.search.informed.BestFirstSearcherForIntCostFn |
---|
dfTendency, h, hweight |
Fields inherited from class ai.search.SearchEngineForIntCostFn |
---|
foundGoalNode, initialState |
Fields inherited from class ai.search.SearchEngine |
---|
doInterrupt, doRepeatTest, searchLimit, searchStarted, traceStream, yieldFrequency |
Constructor Summary | |
---|---|
IDAStarSearcherForIntCostFn(S state,
IntCostHeuristic<S> heuristic,
long limit,
SearchEngine.GraphType structure)
This constructor creates a new IDAStarSearcherForIntCostFn for the given initial state, heuristic, search limit, and type of search space. |
Method Summary | |
---|---|
boolean |
continuable()
This function tests whether the search may be continued. |
void |
doSearch()
This function must be called to start or continue the search. |
long |
getNrOfExploredStates()
This function returns the number of states that have been explored during this search. |
long |
getNrOfGeneratedStates()
This function returns the number of states that have been generated during this search. |
void |
setBreadthFirstTendency()
This function causes an Exception to be thrown as this type of SearchEngine can only search in a depth-first manner. |
Methods inherited from class ai.search.informed.BestFirstSearcherForIntCostFn |
---|
setDepthFirstTendency, setHeuristicWeight |
Methods inherited from class ai.search.SearchEngineForIntCostFn |
---|
foundGoalState, getGoalState, getInitialState, getSolutionDepth, getSolutionPath, getSolutionPathCost |
Methods inherited from class ai.search.SearchEngine |
---|
clone, equals, getSearchLimit, hashCode, interrupt, printTrace, setSearchLimit, setTraceStream, setYieldFrequency, toString |
Methods inherited from class java.lang.Object |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected java.util.List<SearchEngineForIntCostFn.SearchNodeForIntCostFn<S extends SearchStateForIntCostFn>> searchStack
protected int currentFLimit
Constructor Detail |
---|
public IDAStarSearcherForIntCostFn(S state, IntCostHeuristic<S> heuristic, long limit, SearchEngine.GraphType structure)
This constructor creates a new IDAStarSearcherForIntCostFn for the given
initial state, heuristic, search limit, and type of search space. The
search does not start immediately but waits for the function
doSearch()
to be called.
state
- the initial state from which the search space is generatedheuristic
- the heuristic function that guides the searchlimit
- the initial value for the search limitstructure
- TREE or GRAPH, depending on what is to be be searchedMethod Detail |
---|
public void setBreadthFirstTendency()
This function causes an Exception to be thrown as this type of SearchEngine can only search in a depth-first manner.
setBreadthFirstTendency
in class BestFirstSearcherForIntCostFn<S extends SearchStateForIntCostFn>
public void doSearch()
This function must be called to start or continue the search. It will only return when one of the following conditions becomes true:
SearchEngineForIntCostFn.foundGoalState()
will return true, the search will be continuable (continuable()
usually will return true), and SearchEngineForIntCostFn.getGoalState()
will return a goal
state, not nullSearchEngineForIntCostFn.foundGoalState()
will return false, the search will not be
continuable (continuable()
will return false), and
SearchEngineForIntCostFn.getGoalState()
will return null; to make the search continuable
the search limit has to be increased using SearchEngine.setSearchLimit(long)
SearchEngineForIntCostFn.foundGoalState()
will return false, the search will not be
continuable (continuable()
will return false), and
SearchEngineForIntCostFn.getGoalState()
will return null
doSearch
in class SearchEngine
public boolean continuable()
This function tests whether the search may be continued. Usually this is the case if there are more search states to be explored and the search limit has not yet been exceeded.
continuable
in class SearchEngine
public long getNrOfExploredStates()
This function returns the number of states that have been explored during this search. A state counts as explored when the goal test has been performed on the state and its successors have been generated.
getNrOfExploredStates
in class SearchEngine
public long getNrOfGeneratedStates()
This function returns the number of states that have been generated during this search. Note that these states may not all be different.
getNrOfGeneratedStates
in class SearchEngine
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |