This is a pure wish: I'd like to be able to run a greedy search (lazy or eager),
while using an admissible heuristic to prune nodes whose f-value exceeds a given
cost bound. (Most, if not all, search engines already have a "bound" parameter,
but it is only checked against the g-value.)
This is quite straightforward to add to the current eager_search: one just needs
to give a ScalarEvaluator to be used for pruning, make sure any heuristic in
that evaluator is added to the "heuristics" array (so that it gets computed on
new states), and add a bounds check for each successor generated in the step()
method (I put it just after the dead-end check). The search engine already has a
parameter for an f-evaluator, which, although seemingly intended for a different
purpose, can be used for pruning. But it might be nicer if the two functions are
separated into different parameters.
|