edu.columbia.cs.coms4701.search.informed.searchalgorithms
Interface RecursiveBestFirstSearch<K extends AgentAction,S extends AgentState>

All Superinterfaces:
SearchAlgorithm<K,S>

public interface RecursiveBestFirstSearch<K extends AgentAction,S extends AgentState>
extends SearchAlgorithm<K,S>

A simple recursive informed search algorithm that attempts to mimic the operation of standard best-first search, but using only linear space.

Implementations keep track of the f-value of the best alternative path available from any ancestor of the current node.

Note that the pseudocode on p102 is not quite right -- how does it compare to the pseudocode for TreeSearch, and how can it be fixed?

Version:
0.1

User: aaron Date: Sep 11, 2006 Time: 10:05:09 PM

Author:
aaron@cs
See Also:
"Russell & Norvig p102"

Method Summary
 java.util.Set<SearchNode<K,S>> expand(SearchNode<K,S> node, SearchProblem<K,S> searchProblem)
          Returns a set of successor nodes for a given node.
 java.util.List<K> recursiveBestFirstSearch(SearchProblem<K,S> searchProblem, SearchNode<K,S> node, double fLimit)
           
 java.util.List<K> solution(SearchNode<K,S> node)
          Returns the sequence of actions obtained by following parent pointers back to the root.
 
Methods inherited from interface edu.columbia.cs.coms4701.search.SearchAlgorithm
search
 

Method Detail

recursiveBestFirstSearch

java.util.List<K> recursiveBestFirstSearch(SearchProblem<K,S> searchProblem,
                                           SearchNode<K,S> node,
                                           double fLimit)
                                                               throws SearchFailureException,
                                                                      RecursiveBestFirstSearchFailureException
Throws:
SearchFailureException
RecursiveBestFirstSearchFailureException

expand

java.util.Set<SearchNode<K,S>> expand(SearchNode<K,S> node,
                                      SearchProblem<K,S> searchProblem)
Returns a set of successor nodes for a given node.

In the normal tree-search implementation, this should simply accept the (action,result) pairs from the searchProblem's successor function,

Parameters:
node -
searchProblem -
Returns:
a set of successor nodes

solution

java.util.List<K> solution(SearchNode<K,S> node)
Returns the sequence of actions obtained by following parent pointers back to the root.

Parameters:
node -
Returns:
sequence of actions from the root to the given node.