|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
Concept for domains that can estimate a move's bound without modifying state (incremental bound for Branch-and-Bound ordering). More...
#include <state_search_common.H>
Concept for domains that can estimate a move's bound without modifying state (incremental bound for Branch-and-Bound ordering).
When a domain satisfies this concept, Aleph::Branch_And_Bound can compute ordering priorities for Estimated_Bound move ordering without calling apply()/undo() on each candidate move. This avoids O(k) apply/undo pairs per batch of k successors, which matters when the state mutation is expensive.
The expression domain.bound_after(state, move) must return a value convertible to Domain::Objective and must represent an optimistic bound on the best objective reachable by applying move to state, without altering state. The direction of the bound depends on the active ObjectivePolicy: an upper bound for Aleph::Maximize_Objective and a lower bound for Aleph::Minimize_Objective. Implementers targeting Aleph::Branch_And_Bound should ensure the returned value is consistent with the policy so that pruning remains correct.
| Domain | Branch-and-bound domain type. |
Definition at line 191 of file state_search_common.H.