One of the interesting aspects of B* compared to traditional depth
first searching is its ability to re-transverse portions of the search
tree with different "strategies" based on earlier analysis. To do
this it keeps the entire tree available, unlike traditional depth
first which doesn't keep around much more than the current path from
the root position. Also, B* does not guarantee an exact evaluation of
the selected move; rather, it "proves" that the value of the selected
move is better than that of any of the alternatives.
B* relies on the existence of evaluation functions that can give
accurate estimates of the pessimistic and optimistic values of a
position. Berliner writes that these are hard to do and I am unaware
of further progress. Each node with descendents gets both a
pessimistic and an optimistic evaluation and these are dynamically
backed-up during the search. If the functions are chosen properly,
the claim is that the search will terminate "naturally" and not suffer
combinatoric explosion.
I am in the early stages of an investigation into AQ*, an algorithm
that is in some ways similar to B* except that is uses backed-up
measures of quiescence (anti-quiescence, actually) combined with
traditional material plus positional factor evaluations. The entire
tree remains accessible during the search and multiple transversals
can be performed. A linked list of frontier nodes is kept and the
search progresses by iteratively selecting the "most interesting"
frontier node to expand while time remains. A lot of work remains to
be done, but there are a lot of opportunities to incorporate other AI
techniques (expert systems, neural networks, analogical reasoning, and
machine learning) into the node selector.
-- Steven (s...@mv.mv.com)