|CS 371 - Introduction to Artificial Intelligence
1. Implement class BestFirstSearcher with a constructor that takes an HSearchNode Comparator to determine what is "best". (We will implement this together in class.)
2. Implement class IterativeDeepeningAStarSearcher which extends HSearcher and performs a form of iterative-deepening A* search. Iterative-deepening A* search is like iterative-deepening depth-first search, except that it searches nodes in depth-first order up to a limited f-value each iteration. (After calling expand(), each child that is less than or equal to the f-limit is placed on the stack.) The constructor should take the initial f-limit initFLimit, and the amount limitChange this limit is increased by with each iteration. Like IDDFS, this form of IDA* creates successive f-limited searcher objects with successive f-limits of initFLimit, initFLimit + limitChange, etc.
3. Convert your scalable search problem node to an HSearchNode. Implement at least one admissible heuristic for your scalable search problem and explain why it is admissible. (The degenerate admissible heuristic with h(n) = 0 is not acceptable.)
4. Experiment in solving your scalable problem using all of your implemented informed search algorithms, collecting data as in the previous assignment.